summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/machine/n64.c36
-rw-r--r--src/mame/video/n64.c2125
-rw-r--r--src/mame/video/n64.h839
-rw-r--r--src/mame/video/rdpbhelp.h158
-rw-r--r--src/mame/video/rdpblend.c304
-rw-r--r--src/mame/video/rdpblend.h69
-rw-r--r--src/mame/video/rdpfiltr.inc28
-rw-r--r--src/mame/video/rdpspn16.c646
-rw-r--r--src/mame/video/rdptpipe.c734
-rw-r--r--src/mame/video/rdptpipe.h231
10 files changed, 2393 insertions, 2777 deletions
diff --git a/src/mame/machine/n64.c b/src/mame/machine/n64.c
index 28a5cd0a6d4..202b5c7a53a 100644
--- a/src/mame/machine/n64.c
+++ b/src/mame/machine/n64.c
@@ -662,21 +662,21 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
case 0x20/4: // DP_CMD_START
{
n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->GetStartReg();
+ ret = state->m_rdp->get_start();
break;
}
case 0x24/4: // DP_CMD_END
{
n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->GetEndReg();
+ ret = state->m_rdp->get_end();
break;
}
case 0x28/4: // DP_CMD_CURRENT
{
n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->GetCurrentReg();
+ ret = state->m_rdp->get_current();
break;
}
@@ -688,13 +688,13 @@ READ32_MEMBER(n64_periphs::sp_reg_r)
case 0x2c/4: // DP_CMD_STATUS
{
n64_state *state = machine().driver_data<n64_state>();
- ret = state->m_rdp->GetStatusReg();
+ ret = state->m_rdp->get_status();
break;
}
case 0x30/4: // DP_CMD_CLOCK
{
- if(!(machine().driver_data<n64_state>()->m_rdp->GetStatusReg() & DP_STATUS_FREEZE))
+ if(!(machine().driver_data<n64_state>()->m_rdp->get_status() & DP_STATUS_FREEZE))
{
dp_clock += 13;
ret = dp_clock;
@@ -908,24 +908,24 @@ READ32_MEMBER( n64_periphs::dp_reg_r )
switch (offset)
{
case 0x00/4: // DP_START_REG
- ret = state->m_rdp->GetStartReg();
+ ret = state->m_rdp->get_start();
break;
case 0x04/4: // DP_END_REG
- ret = state->m_rdp->GetEndReg();
+ ret = state->m_rdp->get_end();
break;
case 0x08/4: // DP_CURRENT_REG
- ret = state->m_rdp->GetCurrentReg();
+ ret = state->m_rdp->get_current();
break;
case 0x0c/4: // DP_STATUS_REG
- ret = state->m_rdp->GetStatusReg();
+ ret = state->m_rdp->get_status();
break;
case 0x10/4: // DP_CLOCK_REG
{
- if(!(state->m_rdp->GetStatusReg() & DP_STATUS_FREEZE))
+ if(!(state->m_rdp->get_status() & DP_STATUS_FREEZE))
{
dp_clock += 13;
ret = dp_clock;
@@ -948,20 +948,20 @@ WRITE32_MEMBER( n64_periphs::dp_reg_w )
switch (offset)
{
case 0x00/4: // DP_START_REG
- state->m_rdp->SetStartReg(data);
- state->m_rdp->SetCurrentReg(state->m_rdp->GetStartReg());
+ state->m_rdp->set_start(data);
+ state->m_rdp->set_current(state->m_rdp->get_start());
break;
case 0x04/4: // DP_END_REG
- state->m_rdp->SetEndReg(data);
+ state->m_rdp->set_end(data);
g_profiler.start(PROFILER_USER1);
- state->m_rdp->ProcessList();
+ state->m_rdp->process_command_list();
g_profiler.stop();
break;
case 0x0c/4: // DP_STATUS_REG
{
- UINT32 current_status = state->m_rdp->GetStatusReg();
+ UINT32 current_status = state->m_rdp->get_status();
if (data & 0x00000001) current_status &= ~DP_STATUS_XBUS_DMA;
if (data & 0x00000002) current_status |= DP_STATUS_XBUS_DMA;
if (data & 0x00000004) current_status &= ~DP_STATUS_FREEZE;
@@ -969,7 +969,7 @@ WRITE32_MEMBER( n64_periphs::dp_reg_w )
if (data & 0x00000010) current_status &= ~DP_STATUS_FLUSH;
if (data & 0x00000020) current_status |= DP_STATUS_FLUSH;
if (data & 0x00000200) dp_clock = 0;
- state->m_rdp->SetStatusReg(current_status);
+ state->m_rdp->set_status(current_status);
break;
}
@@ -1025,7 +1025,7 @@ void n64_periphs::vi_recalculate_resolution()
if (height > 480)
height = 480;
- state->m_rdp->MiscState.FBHeight = height;
+ state->m_rdp->m_misc_state.m_fb_height = height;
visarea.max_x = width - 1;
visarea.max_y = height - 1;
@@ -1122,7 +1122,7 @@ WRITE32_MEMBER( n64_periphs::vi_reg_w )
vi_recalculate_resolution();
}
vi_width = data;
- state->m_rdp->MiscState.FBWidth = data;
+ state->m_rdp->m_misc_state.m_fb_width = data;
break;
case 0x0c/4: // VI_INTR_REG
diff --git a/src/mame/video/n64.c b/src/mame/video/n64.c
index b6acf7e1ad8..e263a2ea80b 100644
--- a/src/mame/video/n64.c
+++ b/src/mame/video/n64.c
@@ -29,29 +29,29 @@ TODO:
#define LOG_RDP_EXECUTION 0
-static FILE *rdp_exec;
+static FILE* rdp_exec;
UINT32 n64_rdp::s_special_9bit_clamptable[512];
bool n64_rdp::rdp_range_check(UINT32 addr)
{
- if(MiscState.FBSize == 0) return false;
+ if(m_misc_state.m_fb_size == 0) return false;
- int fbcount = ((MiscState.FBWidth * Scissor.m_yl) << (MiscState.FBSize - 1)) * 3;
- int fbaddr = MiscState.FBAddress & 0x007fffff;
+ INT32 fbcount = ((m_misc_state.m_fb_width * m_scissor.m_yl) << (m_misc_state.m_fb_size - 1)) * 3;
+ INT32 fbaddr = m_misc_state.m_fb_address & 0x007fffff;
if ((addr >= fbaddr) && (addr < (fbaddr + fbcount)))
{
return false;
}
- int zbcount = MiscState.FBWidth * Scissor.m_yl * 2;
- int zbaddr = MiscState.ZBAddress & 0x007fffff;
+ INT32 zbcount = m_misc_state.m_fb_width * m_scissor.m_yl * 2;
+ INT32 zbaddr = m_misc_state.m_zb_address & 0x007fffff;
if ((addr >= zbaddr) && (addr < (zbaddr + zbcount)))
{
return false;
}
- printf("Check failed: %08x vs. %08x-%08x, %08x-%08x (%d, %d)\n", addr, fbaddr, fbaddr + fbcount, zbaddr, zbaddr + zbcount, MiscState.FBWidth, Scissor.m_yl);
+ printf("Check failed: %08x vs. %08x-%08x, %08x-%08x (%d, %d)\n", addr, fbaddr, fbaddr + fbcount, zbaddr, zbaddr + zbcount, m_misc_state.m_fb_width, m_scissor.m_yl);
fflush(stdout);
return true;
}
@@ -61,20 +61,20 @@ bool n64_rdp::rdp_range_check(UINT32 addr)
// The functions in this file should be moved into the parent Processor class.
#include "rdpfiltr.inc"
-void n64_rdp::GetAlphaCvg(UINT8 *comb_alpha, rdp_span_aux *userdata, const rdp_poly_state &object)
+void n64_rdp::get_alpha_cvg(UINT8* comb_alpha, rdp_span_aux* userdata, const rdp_poly_state &object)
{
INT32 temp = *comb_alpha;
- INT32 temp2 = userdata->CurrentPixCvg;
+ INT32 temp2 = userdata->m_current_pix_cvg;
INT32 temp3 = 0;
- if (object.OtherModes.cvg_times_alpha)
+ if (object.m_other_modes.cvg_times_alpha)
{
temp3 = (temp * temp2) + 4;
- userdata->CurrentPixCvg = (temp3 >> 8) & 0xf;
+ userdata->m_current_pix_cvg = (temp3 >> 8) & 0xf;
}
- if (object.OtherModes.alpha_cvg_select)
+ if (object.m_other_modes.alpha_cvg_select)
{
- temp = (OtherModes.cvg_times_alpha) ? (temp3 >> 3) : (temp2 << 5);
+ temp = (m_other_modes.cvg_times_alpha) ? (temp3 >> 3) : (temp2 << 5);
}
if (temp > 0xff)
{
@@ -85,37 +85,37 @@ void n64_rdp::GetAlphaCvg(UINT8 *comb_alpha, rdp_span_aux *userdata, const rdp_p
/*****************************************************************************/
-void n64_rdp::VideoUpdate(n64_periphs *n64, bitmap_rgb32 &bitmap)
+void n64_rdp::video_update(n64_periphs* n64, bitmap_rgb32 &bitmap)
{
switch(n64->vi_control & 0x3)
{
case PIXEL_SIZE_16BIT:
- VideoUpdate16(n64, bitmap);
+ video_update16(n64, bitmap);
break;
case PIXEL_SIZE_32BIT:
- VideoUpdate32(n64, bitmap);
+ video_update32(n64, bitmap);
break;
default:
- //fatalerror("Unsupported framebuffer depth: m_fb_size=%d\n", MiscState.FBSize);
+ //fatalerror("Unsupported framebuffer depth: m_fb_size=%d\n", m_misc_state.m_fb_size);
break;
}
}
-void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap)
+void n64_rdp::video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap)
{
- //int fsaa = (((n64->vi_control >> 8) & 3) < 2);
- //int divot = (n64->vi_control >> 4) & 1;
+ //INT32 fsaa = (((n64->vi_control >> 8) & 3) < 2);
+ //INT32 divot = (n64->vi_control >> 4) & 1;
//UINT32 prev_cvg = 0;
//UINT32 next_cvg = 0;
- //int dither_filter = (n64->vi_control >> 16) & 1;
- //int vibuffering = ((n64->vi_control & 2) && fsaa && divot);
+ //INT32 dither_filter = (n64->vi_control >> 16) & 1;
+ //INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT16 *frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ UINT16* frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
//UINT32 hb = ((n64->vi_origin & 0xffffff) >> 2) >> 1;
- //UINT8* hidden_buffer = &HiddenBits[hb];
+ //UINT8* hidden_buffer = &m_hidden_bits[hb];
INT32 hdiff = (n64->vi_hstart & 0x3ff) - ((n64->vi_hstart >> 16) & 0x3ff);
float hcoeff = ((float)(n64->vi_xscale & 0xfff) / (1 << 10));
@@ -146,17 +146,17 @@ void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap)
if (frame_buffer)
{
- for(int j = 0; j < vres; j++)
+ for(INT32 j = 0; j < vres; j++)
{
- UINT32 *d = &bitmap.pix32(j);
+ UINT32* d = &bitmap.pix32(j);
- for(int i = 0; i < hres; i++)
+ for(INT32 i = 0; i < hres; i++)
{
- Color c;
- //int r, g, b;
+ color_t c;
+ //INT32 r, g, b;
UINT16 pix = frame_buffer[pixels ^ WORD_ADDR_XOR];
- //MiscState.CurrentPixCvg = ((pix & 1) << 2) | (hidden_buffer[pixels ^ BYTE_ADDR_XOR] & 3);
+ //m_misc_state.m_current_pix_cvg = ((pix & 1) << 2) | (hidden_buffer[pixels ^ BYTE_ADDR_XOR] & 3);
//if(divot)
//{
@@ -172,12 +172,12 @@ void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap)
//if(fsaa)
//{
- //if (/*!vibuffering &&*/ state->m_rdp.MiscState.CurrentPixCvg < 7 && i > 1 && j > 1 && i < (hres - 2) && j < (vres - 2))
+ //if (/*!vibuffering &&*/ state->m_rdp.m_misc_state.m_current_pix_cvg < 7 && i > 1 && j > 1 && i < (hres - 2) && j < (vres - 2))
//{
//video_filter16(&c.i.r, &c.i.g, &c.i.b, &frame_buffer[pixels ^ WORD_ADDR_XOR],&hidden_buffer[pixels ^ BYTE_ADDR_XOR], n64->vi_width);
//}
//}
- //else if (dither_filter && state->m_rdp.MiscState.CurrentPixCvg == 7 && i > 0 && j > 0 && i < (hres - 1) && j < (vres - 1))
+ //else if (dither_filter && state->m_rdp.m_misc_state.m_current_pix_cvg == 7 && i > 0 && j > 0 && i < (hres - 1) && j < (vres - 1))
//{
//if (vibuffering)
//{
@@ -190,7 +190,7 @@ void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap)
//}
//if(divot)
//{
- //if (i > 0 && i < (hres - 1) && (MiscState.CurrentPixCvg != 7 || prev_cvg != 7 || next_cvg != 7))
+ //if (i > 0 && i < (hres - 1) && (m_misc_state.m_current_pix_cvg != 7 || prev_cvg != 7 || next_cvg != 7))
//{
//if (vibuffering)
//{
@@ -242,13 +242,13 @@ void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap)
}
}
-void n64_rdp::VideoUpdate32(n64_periphs *n64, bitmap_rgb32 &bitmap)
+void n64_rdp::video_update32(n64_periphs* n64, bitmap_rgb32 &bitmap)
{
- int gamma = (n64->vi_control >> 3) & 1;
- int gamma_dither = (n64->vi_control >> 2) & 1;
- //int vibuffering = ((n64->vi_control & 2) && fsaa && divot);
+ INT32 gamma = (n64->vi_control >> 3) & 1;
+ INT32 gamma_dither = (n64->vi_control >> 2) & 1;
+ //INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
- UINT32 *frame_buffer32 = (UINT32*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ UINT32* frame_buffer32 = (UINT32*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
const INT32 hdiff = (n64->vi_hstart & 0x3ff) - ((n64->vi_hstart >> 16) & 0x3ff);
const float hcoeff = ((float)(n64->vi_xscale & 0xfff) / (1 << 10));
@@ -272,21 +272,21 @@ void n64_rdp::VideoUpdate32(n64_periphs *n64, bitmap_rgb32 &bitmap)
if (frame_buffer32)
{
- for (int j = 0; j < vres; j++)
+ for (INT32 j = 0; j < vres; j++)
{
- UINT32 *d = &bitmap.pix32(j);
- for (int i = 0; i < hres; i++)
+ UINT32* d = &bitmap.pix32(j);
+ for (INT32 i = 0; i < hres; i++)
{
UINT32 pix = *frame_buffer32++;
if (gamma || gamma_dither)
{
- int r = (pix >> 24) & 0xff;
- int g = (pix >> 16) & 0xff;
- int b = (pix >> 8) & 0xff;
- int dith = 0;
+ INT32 r = (pix >> 24) & 0xff;
+ INT32 g = (pix >> 16) & 0xff;
+ INT32 b = (pix >> 8) & 0xff;
+ INT32 dith = 0;
if (gamma_dither)
{
- dith = GetRandom() & 0x3f;
+ dith = get_random() & 0x3f;
}
if (gamma)
{
@@ -325,15 +325,15 @@ void n64_rdp::VideoUpdate32(n64_periphs *n64, bitmap_rgb32 &bitmap)
/*****************************************************************************/
-void n64_rdp::TCDivNoPersp(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
+void n64_rdp::tc_div_no_perspective(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
{
*sss = (SIGN16(ss)) & 0x1ffff;
*sst = (SIGN16(st)) & 0x1ffff;
}
-void n64_rdp::TCDiv(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
+void n64_rdp::tc_div(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
{
- int w_carry = 0;
+ INT32 w_carry = 0;
if ((sw & 0x8000) || !(sw & 0x7fff))
{
w_carry = 1;
@@ -341,26 +341,26 @@ void n64_rdp::TCDiv(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
sw &= 0x7fff;
- int shift;
+ INT32 shift;
for (shift = 1; shift <= 14 && !((sw << shift) & 0x8000); shift++);
shift -= 1;
- int normout = (sw << shift) & 0x3fff;
- int wnorm = (normout & 0xff) << 2;
+ INT32 normout = (sw << shift) & 0x3fff;
+ INT32 wnorm = (normout & 0xff) << 2;
normout >>= 8;
- int temppoint = m_norm_point_rom[normout];
- int tempslope = m_norm_slope_rom[normout];
+ INT32 temppoint = m_norm_point_rom[normout];
+ INT32 tempslope = m_norm_slope_rom[normout];
- int tlu_rcp = ((-(tempslope * wnorm)) >> 10) + temppoint;
+ INT32 tlu_rcp = ((-(tempslope * wnorm)) >> 10) + temppoint;
- int sprod = SIGN16(ss) * tlu_rcp;
- int tprod = SIGN16(st) * tlu_rcp;
- int tempmask = ((1 << (shift + 1)) - 1) << (29 - shift);
- int shift_value = 13 - shift;
+ INT32 sprod = SIGN16(ss) * tlu_rcp;
+ INT32 tprod = SIGN16(st) * tlu_rcp;
+ INT32 tempmask = ((1 << (shift + 1)) - 1) << (29 - shift);
+ INT32 shift_value = 13 - shift;
- int outofbounds_s = sprod & tempmask;
- int outofbounds_t = tprod & tempmask;
+ INT32 outofbounds_s = sprod & tempmask;
+ INT32 outofbounds_t = tprod & tempmask;
if (shift == 0xe)
{
*sss = sprod << 1;
@@ -372,10 +372,10 @@ void n64_rdp::TCDiv(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
*sst = tprod = (tprod >> shift_value);
}
//compute clamp flags
- int under_s = 0;
- int under_t = 0;
- int over_s = 0;
- int over_t = 0;
+ INT32 under_s = 0;
+ INT32 under_t = 0;
+ INT32 over_s = 0;
+ INT32 over_t = 0;
if (outofbounds_s != tempmask && outofbounds_s != 0)
{
@@ -408,7 +408,7 @@ void n64_rdp::TCDiv(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst)
*sst = (*sst & 0x1ffff) | (over_t << 18) | (under_t << 17);
}
-INT32 n64_rdp::ColorCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d)
+INT32 n64_rdp::color_combiner_equation(INT32 a, INT32 b, INT32 c, INT32 d)
{
a = KURT_AKELEY_SIGN9(a);
b = KURT_AKELEY_SIGN9(b);
@@ -420,7 +420,7 @@ INT32 n64_rdp::ColorCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d)
return a;
}
-INT32 n64_rdp::AlphaCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d)
+INT32 n64_rdp::alpha_combiner_equation(INT32 a, INT32 b, INT32 c, INT32 d)
{
a = KURT_AKELEY_SIGN9(a);
b = KURT_AKELEY_SIGN9(b);
@@ -432,118 +432,118 @@ INT32 n64_rdp::AlphaCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d)
return a;
}
-void n64_rdp::SetSubAInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata)
+void n64_rdp::set_suba_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0xf)
{
- case 0: *input_r = &userdata->CombinedColor.i.r; *input_g = &userdata->CombinedColor.i.g; *input_b = &userdata->CombinedColor.i.b; break;
- case 1: *input_r = &userdata->Texel0Color.i.r; *input_g = &userdata->Texel0Color.i.g; *input_b = &userdata->Texel0Color.i.b; break;
- case 2: *input_r = &userdata->Texel1Color.i.r; *input_g = &userdata->Texel1Color.i.g; *input_b = &userdata->Texel1Color.i.b; break;
- case 3: *input_r = &userdata->PrimColor.i.r; *input_g = &userdata->PrimColor.i.g; *input_b = &userdata->PrimColor.i.b; break;
- case 4: *input_r = &userdata->ShadeColor.i.r; *input_g = &userdata->ShadeColor.i.g; *input_b = &userdata->ShadeColor.i.b; break;
- case 5: *input_r = &userdata->EnvColor.i.r; *input_g = &userdata->EnvColor.i.g; *input_b = &userdata->EnvColor.i.b; break;
- case 6: *input_r = &OneColor.i.r; *input_g = &OneColor.i.g; *input_b = &OneColor.i.b; break;
- case 7: *input_r = &userdata->NoiseColor.i.r; *input_g = &userdata->NoiseColor.i.g; *input_b = &userdata->NoiseColor.i.b; break;
+ case 0: *input_r = &userdata->m_combined_color.i.r; *input_g = &userdata->m_combined_color.i.g; *input_b = &userdata->m_combined_color.i.b; break;
+ case 1: *input_r = &userdata->m_texel0_color.i.r; *input_g = &userdata->m_texel0_color.i.g; *input_b = &userdata->m_texel0_color.i.b; break;
+ case 2: *input_r = &userdata->m_texel1_color.i.r; *input_g = &userdata->m_texel1_color.i.g; *input_b = &userdata->m_texel1_color.i.b; break;
+ case 3: *input_r = &userdata->m_prim_color.i.r; *input_g = &userdata->m_prim_color.i.g; *input_b = &userdata->m_prim_color.i.b; break;
+ case 4: *input_r = &userdata->m_shade_color.i.r; *input_g = &userdata->m_shade_color.i.g; *input_b = &userdata->m_shade_color.i.b; break;
+ case 5: *input_r = &userdata->m_env_color.i.r; *input_g = &userdata->m_env_color.i.g; *input_b = &userdata->m_env_color.i.b; break;
+ case 6: *input_r = &m_one.i.r; *input_g = &m_one.i.g; *input_b = &m_one.i.b; break;
+ case 7: *input_r = &userdata->m_noise_color.i.r; *input_g = &userdata->m_noise_color.i.g; *input_b = &userdata->m_noise_color.i.b; break;
case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15:
{
- *input_r = &ZeroColor.i.r; *input_g = &ZeroColor.i.g; *input_b = &ZeroColor.i.b; break;
+ *input_r = &m_zero.i.r; *input_g = &m_zero.i.g; *input_b = &m_zero.i.b; break;
}
}
}
-void n64_rdp::SetSubBInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata)
+void n64_rdp::set_subb_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0xf)
{
- case 0: *input_r = &userdata->CombinedColor.i.r; *input_g = &userdata->CombinedColor.i.g; *input_b = &userdata->CombinedColor.i.b; break;
- case 1: *input_r = &userdata->Texel0Color.i.r; *input_g = &userdata->Texel0Color.i.g; *input_b = &userdata->Texel0Color.i.b; break;
- case 2: *input_r = &userdata->Texel1Color.i.r; *input_g = &userdata->Texel1Color.i.g; *input_b = &userdata->Texel1Color.i.b; break;
- case 3: *input_r = &userdata->PrimColor.i.r; *input_g = &userdata->PrimColor.i.g; *input_b = &userdata->PrimColor.i.b; break;
- case 4: *input_r = &userdata->ShadeColor.i.r; *input_g = &userdata->ShadeColor.i.g; *input_b = &userdata->ShadeColor.i.b; break;
- case 5: *input_r = &userdata->EnvColor.i.r; *input_g = &userdata->EnvColor.i.g; *input_b = &userdata->EnvColor.i.b; break;
+ case 0: *input_r = &userdata->m_combined_color.i.r; *input_g = &userdata->m_combined_color.i.g; *input_b = &userdata->m_combined_color.i.b; break;
+ case 1: *input_r = &userdata->m_texel0_color.i.r; *input_g = &userdata->m_texel0_color.i.g; *input_b = &userdata->m_texel0_color.i.b; break;
+ case 2: *input_r = &userdata->m_texel1_color.i.r; *input_g = &userdata->m_texel1_color.i.g; *input_b = &userdata->m_texel1_color.i.b; break;
+ case 3: *input_r = &userdata->m_prim_color.i.r; *input_g = &userdata->m_prim_color.i.g; *input_b = &userdata->m_prim_color.i.b; break;
+ case 4: *input_r = &userdata->m_shade_color.i.r; *input_g = &userdata->m_shade_color.i.g; *input_b = &userdata->m_shade_color.i.b; break;
+ case 5: *input_r = &userdata->m_env_color.i.r; *input_g = &userdata->m_env_color.i.g; *input_b = &userdata->m_env_color.i.b; break;
case 6: fatalerror("SET_SUBB_RGB_INPUT: key_center\n");
- case 7: *input_r = (UINT8*)&m_k4; *input_g = (UINT8*)&m_k4; *input_b = (UINT8*)&m_k4; break;
+ case 7: *input_r = (UINT8*)&m_k4; *input_g = (UINT8*)&m_k4; *input_b = (UINT8*)&m_k4; break;
case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15:
{
- *input_r = &ZeroColor.i.r; *input_g = &ZeroColor.i.g; *input_b = &ZeroColor.i.b; break;
+ *input_r = &m_zero.i.r; *input_g = &m_zero.i.g; *input_b = &m_zero.i.b; break;
}
}
}
-void n64_rdp::SetMulInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata)
+void n64_rdp::set_mul_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0x1f)
{
- case 0: *input_r = &userdata->CombinedColor.i.r; *input_g = &userdata->CombinedColor.i.g; *input_b = &userdata->CombinedColor.i.b; break;
- case 1: *input_r = &userdata->Texel0Color.i.r; *input_g = &userdata->Texel0Color.i.g; *input_b = &userdata->Texel0Color.i.b; break;
- case 2: *input_r = &userdata->Texel1Color.i.r; *input_g = &userdata->Texel1Color.i.g; *input_b = &userdata->Texel1Color.i.b; break;
- case 3: *input_r = &userdata->PrimColor.i.r; *input_g = &userdata->PrimColor.i.g; *input_b = &userdata->PrimColor.i.b; break;
- case 4: *input_r = &userdata->ShadeColor.i.r; *input_g = &userdata->ShadeColor.i.g; *input_b = &userdata->ShadeColor.i.b; break;
- case 5: *input_r = &userdata->EnvColor.i.r; *input_g = &userdata->EnvColor.i.g; *input_b = &userdata->EnvColor.i.b; break;
- case 6: *input_r = &userdata->KeyScale.i.r; *input_g = &userdata->KeyScale.i.g; *input_b = &userdata->KeyScale.i.b; break;
- case 7: *input_r = &userdata->CombinedColor.i.a; *input_g = &userdata->CombinedColor.i.a; *input_b = &userdata->CombinedColor.i.a; break;
- case 8: *input_r = &userdata->Texel0Color.i.a; *input_g = &userdata->Texel0Color.i.a; *input_b = &userdata->Texel0Color.i.a; break;
- case 9: *input_r = &userdata->Texel1Color.i.a; *input_g = &userdata->Texel1Color.i.a; *input_b = &userdata->Texel1Color.i.a; break;
- case 10: *input_r = &userdata->PrimColor.i.a; *input_g = &userdata->PrimColor.i.a; *input_b = &userdata->PrimColor.i.a; break;
- case 11: *input_r = &userdata->ShadeColor.i.a; *input_g = &userdata->ShadeColor.i.a; *input_b = &userdata->ShadeColor.i.a; break;
- case 12: *input_r = &userdata->EnvColor.i.a; *input_g = &userdata->EnvColor.i.a; *input_b = &userdata->EnvColor.i.a; break;
- case 13: *input_r = &userdata->LODFraction; *input_g = &userdata->LODFraction; *input_b = &userdata->LODFraction; break;
- case 14: *input_r = &userdata->PrimLODFraction; *input_g = &userdata->PrimLODFraction; *input_b = &userdata->PrimLODFraction; break;
+ case 0: *input_r = &userdata->m_combined_color.i.r; *input_g = &userdata->m_combined_color.i.g; *input_b = &userdata->m_combined_color.i.b; break;
+ case 1: *input_r = &userdata->m_texel0_color.i.r; *input_g = &userdata->m_texel0_color.i.g; *input_b = &userdata->m_texel0_color.i.b; break;
+ case 2: *input_r = &userdata->m_texel1_color.i.r; *input_g = &userdata->m_texel1_color.i.g; *input_b = &userdata->m_texel1_color.i.b; break;
+ case 3: *input_r = &userdata->m_prim_color.i.r; *input_g = &userdata->m_prim_color.i.g; *input_b = &userdata->m_prim_color.i.b; break;
+ case 4: *input_r = &userdata->m_shade_color.i.r; *input_g = &userdata->m_shade_color.i.g; *input_b = &userdata->m_shade_color.i.b; break;
+ case 5: *input_r = &userdata->m_env_color.i.r; *input_g = &userdata->m_env_color.i.g; *input_b = &userdata->m_env_color.i.b; break;
+ case 6: *input_r = &userdata->m_key_scale.i.r; *input_g = &userdata->m_key_scale.i.g; *input_b = &userdata->m_key_scale.i.b; break;
+ case 7: *input_r = &userdata->m_combined_color.i.a; *input_g = &userdata->m_combined_color.i.a; *input_b = &userdata->m_combined_color.i.a; break;
+ case 8: *input_r = &userdata->m_texel0_color.i.a; *input_g = &userdata->m_texel0_color.i.a; *input_b = &userdata->m_texel0_color.i.a; break;
+ case 9: *input_r = &userdata->m_texel1_color.i.a; *input_g = &userdata->m_texel1_color.i.a; *input_b = &userdata->m_texel1_color.i.a; break;
+ case 10: *input_r = &userdata->m_prim_color.i.a; *input_g = &userdata->m_prim_color.i.a; *input_b = &userdata->m_prim_color.i.a; break;
+ case 11: *input_r = &userdata->m_shade_color.i.a; *input_g = &userdata->m_shade_color.i.a; *input_b = &userdata->m_shade_color.i.a; break;
+ case 12: *input_r = &userdata->m_env_color.i.a; *input_g = &userdata->m_env_color.i.a; *input_b = &userdata->m_env_color.i.a; break;
+ case 13: *input_r = &userdata->m_lod_fraction; *input_g = &userdata->m_lod_fraction; *input_b = &userdata->m_lod_fraction; break;
+ case 14: *input_r = &userdata->m_prim_lod_fraction; *input_g = &userdata->m_prim_lod_fraction; *input_b = &userdata->m_prim_lod_fraction; break;
case 15: *input_r = (UINT8*)&m_k5; *input_g = (UINT8*)&m_k5; *input_b = (UINT8*)&m_k5; break;
case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23:
case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
{
- *input_r = &ZeroColor.i.r; *input_g = &ZeroColor.i.g; *input_b = &ZeroColor.i.b; break;
+ *input_r = &m_zero.i.r; *input_g = &m_zero.i.g; *input_b = &m_zero.i.b; break;
}
}
}
-void n64_rdp::SetAddInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata)
+void n64_rdp::set_add_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0x7)
{
- case 0: *input_r = &userdata->CombinedColor.i.r; *input_g = &userdata->CombinedColor.i.g; *input_b = &userdata->CombinedColor.i.b; break;
- case 1: *input_r = &userdata->Texel0Color.i.r; *input_g = &userdata->Texel0Color.i.g; *input_b = &userdata->Texel0Color.i.b; break;
- case 2: *input_r = &userdata->Texel1Color.i.r; *input_g = &userdata->Texel1Color.i.g; *input_b = &userdata->Texel1Color.i.b; break;
- case 3: *input_r = &userdata->PrimColor.i.r; *input_g = &userdata->PrimColor.i.g; *input_b = &userdata->PrimColor.i.b; break;
- case 4: *input_r = &userdata->ShadeColor.i.r; *input_g = &userdata->ShadeColor.i.g; *input_b = &userdata->ShadeColor.i.b; break;
- case 5: *input_r = &userdata->EnvColor.i.r; *input_g = &userdata->EnvColor.i.g; *input_b = &userdata->EnvColor.i.b; break;
- case 6: *input_r = &OneColor.i.r; *input_g = &OneColor.i.g; *input_b = &OneColor.i.b; break;
- case 7: *input_r = &ZeroColor.i.r; *input_g = &ZeroColor.i.g; *input_b = &ZeroColor.i.b; break;
+ case 0: *input_r = &userdata->m_combined_color.i.r; *input_g = &userdata->m_combined_color.i.g; *input_b = &userdata->m_combined_color.i.b; break;
+ case 1: *input_r = &userdata->m_texel0_color.i.r; *input_g = &userdata->m_texel0_color.i.g; *input_b = &userdata->m_texel0_color.i.b; break;
+ case 2: *input_r = &userdata->m_texel1_color.i.r; *input_g = &userdata->m_texel1_color.i.g; *input_b = &userdata->m_texel1_color.i.b; break;
+ case 3: *input_r = &userdata->m_prim_color.i.r; *input_g = &userdata->m_prim_color.i.g; *input_b = &userdata->m_prim_color.i.b; break;
+ case 4: *input_r = &userdata->m_shade_color.i.r; *input_g = &userdata->m_shade_color.i.g; *input_b = &userdata->m_shade_color.i.b; break;
+ case 5: *input_r = &userdata->m_env_color.i.r; *input_g = &userdata->m_env_color.i.g; *input_b = &userdata->m_env_color.i.b; break;
+ case 6: *input_r = &m_one.i.r; *input_g = &m_one.i.g; *input_b = &m_one.i.b; break;
+ case 7: *input_r = &m_zero.i.r; *input_g = &m_zero.i.g; *input_b = &m_zero.i.b; break;
}
}
-void n64_rdp::SetSubInputAlpha(UINT8 **input, int code, rdp_span_aux *userdata)
+void n64_rdp::set_sub_input_alpha(UINT8** input, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0x7)
{
- case 0: *input = &userdata->CombinedColor.i.a; break;
- case 1: *input = &userdata->Texel0Color.i.a; break;
- case 2: *input = &userdata->Texel1Color.i.a; break;
- case 3: *input = &userdata->PrimColor.i.a; break;
- case 4: *input = &userdata->ShadeColor.i.a; break;
- case 5: *input = &userdata->EnvColor.i.a; break;
- case 6: *input = &OneColor.i.a; break;
- case 7: *input = &ZeroColor.i.a; break;
+ case 0: *input = &userdata->m_combined_color.i.a; break;
+ case 1: *input = &userdata->m_texel0_color.i.a; break;
+ case 2: *input = &userdata->m_texel1_color.i.a; break;
+ case 3: *input = &userdata->m_prim_color.i.a; break;
+ case 4: *input = &userdata->m_shade_color.i.a; break;
+ case 5: *input = &userdata->m_env_color.i.a; break;
+ case 6: *input = &m_one.i.a; break;
+ case 7: *input = &m_zero.i.a; break;
}
}
-void n64_rdp::SetMulInputAlpha(UINT8 **input, int code, rdp_span_aux *userdata)
+void n64_rdp::set_mul_input_alpha(UINT8** input, INT32 code, rdp_span_aux* userdata)
{
switch (code & 0x7)
{
- case 0: *input = &userdata->LODFraction; break;
- case 1: *input = &userdata->Texel0Color.i.a; break;
- case 2: *input = &userdata->Texel1Color.i.a; break;
- case 3: *input = &userdata->PrimColor.i.a; break;
- case 4: *input = &userdata->ShadeColor.i.a; break;
- case 5: *input = &userdata->EnvColor.i.a; break;
- case 6: *input = &userdata->PrimLODFraction; break;
- case 7: *input = &ZeroColor.i.a; break;
+ case 0: *input = &userdata->m_lod_fraction; break;
+ case 1: *input = &userdata->m_texel0_color.i.a; break;
+ case 2: *input = &userdata->m_texel1_color.i.a; break;
+ case 3: *input = &userdata->m_prim_color.i.a; break;
+ case 4: *input = &userdata->m_shade_color.i.a; break;
+ case 5: *input = &userdata->m_env_color.i.a; break;
+ case 6: *input = &userdata->m_prim_lod_fraction; break;
+ case 7: *input = &m_zero.i.a; break;
}
}
-void n64_rdp::SetBlenderInput(int cycle, int which, UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, UINT8 **input_a, int a, int b, rdp_span_aux *userdata)
+void n64_rdp::set_blender_input(INT32 cycle, INT32 which, UINT8** input_r, UINT8** input_g, UINT8** input_b, UINT8** input_a, INT32 a, INT32 b, rdp_span_aux* userdata)
{
switch (a & 0x3)
{
@@ -551,40 +551,40 @@ void n64_rdp::SetBlenderInput(int cycle, int which, UINT8 **input_r, UINT8 **inp
{
if (cycle == 0)
{
- *input_r = &userdata->PixelColor.i.r;
- *input_g = &userdata->PixelColor.i.g;
- *input_b = &userdata->PixelColor.i.b;
+ *input_r = &userdata->m_pixel_color.i.r;
+ *input_g = &userdata->m_pixel_color.i.g;
+ *input_b = &userdata->m_pixel_color.i.b;
}
else
{
- *input_r = &userdata->BlendedPixelColor.i.r;
- *input_g = &userdata->BlendedPixelColor.i.g;
- *input_b = &userdata->BlendedPixelColor.i.b;
+ *input_r = &userdata->m_blended_pixel_color.i.r;
+ *input_g = &userdata->m_blended_pixel_color.i.g;
+ *input_b = &userdata->m_blended_pixel_color.i.b;
}
break;
}
case 1:
{
- *input_r = &userdata->MemoryColor.i.r;
- *input_g = &userdata->MemoryColor.i.g;
- *input_b = &userdata->MemoryColor.i.b;
+ *input_r = &userdata->m_memory_color.i.r;
+ *input_g = &userdata->m_memory_color.i.g;
+ *input_b = &userdata->m_memory_color.i.b;
break;
}
case 2:
{
- *input_r = &userdata->BlendColor.i.r;
- *input_g = &userdata->BlendColor.i.g;
- *input_b = &userdata->BlendColor.i.b;
+ *input_r = &userdata->m_blend_color.i.r;
+ *input_g = &userdata->m_blend_color.i.g;
+ *input_b = &userdata->m_blend_color.i.b;
break;
}
case 3:
{
- *input_r = &userdata->FogColor.i.r;
- *input_g = &userdata->FogColor.i.g;
- *input_b = &userdata->FogColor.i.b;
+ *input_r = &userdata->m_fog_color.i.r;
+ *input_g = &userdata->m_fog_color.i.g;
+ *input_b = &userdata->m_fog_color.i.b;
break;
}
}
@@ -593,20 +593,20 @@ void n64_rdp::SetBlenderInput(int cycle, int which, UINT8 **input_r, UINT8 **inp
{
switch (b & 0x3)
{
- case 0: *input_a = &userdata->PixelColor.i.a; break;
- case 1: *input_a = &userdata->FogColor.i.a; break;
- case 2: *input_a = &userdata->ShadeColor.i.a; break;
- case 3: *input_a = &ZeroColor.i.a; break;
+ case 0: *input_a = &userdata->m_pixel_color.i.a; break;
+ case 1: *input_a = &userdata->m_fog_color.i.a; break;
+ case 2: *input_a = &userdata->m_shade_color.i.a; break;
+ case 3: *input_a = &m_zero.i.a; break;
}
}
else
{
switch (b & 0x3)
{
- case 0: *input_a = &userdata->InvPixelColor.i.a; break;
- case 1: *input_a = &userdata->MemoryColor.i.a; break;
- case 2: *input_a = &OneColor.i.a; break;
- case 3: *input_a = &ZeroColor.i.a; break;
+ case 0: *input_a = &userdata->m_inv_pixel_color.i.a; break;
+ case 1: *input_a = &userdata->m_memory_color.i.a; break;
+ case 2: *input_a = &m_one.i.a; break;
+ case 3: *input_a = &m_zero.i.a; break;
}
}
}
@@ -627,7 +627,7 @@ const UINT8 n64_rdp::s_magic_matrix[16] =
7, 1, 6, 0
};
-const n64_rdp::ZDecompressEntry n64_rdp::z_dec_table[8] =
+const z_decompress_entry_t n64_rdp::m_z_dec_table[8] =
{
{ 6, 0x00000 },
{ 5, 0x20000 },
@@ -644,157 +644,157 @@ const n64_rdp::ZDecompressEntry n64_rdp::z_dec_table[8] =
void n64_rdp::z_build_com_table(void)
{
UINT16 altmem = 0;
- for(int z = 0; z < 0x40000; z++)
- {
- switch((z >> 11) & 0x7f)
- {
- case 0x00:
- case 0x01:
- case 0x02:
- case 0x03:
- case 0x04:
- case 0x05:
- case 0x06:
- case 0x07:
- case 0x08:
- case 0x09:
- case 0x0a:
- case 0x0b:
- case 0x0c:
- case 0x0d:
- case 0x0e:
- case 0x0f:
- case 0x10:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- case 0x15:
- case 0x16:
- case 0x17:
- case 0x18:
- case 0x19:
- case 0x1a:
- case 0x1b:
- case 0x1c:
- case 0x1d:
- case 0x1e:
- case 0x1f:
- case 0x20:
- case 0x21:
- case 0x22:
- case 0x23:
- case 0x24:
- case 0x25:
- case 0x26:
- case 0x27:
- case 0x28:
- case 0x29:
- case 0x2a:
- case 0x2b:
- case 0x2c:
- case 0x2d:
- case 0x2e:
- case 0x2f:
- case 0x30:
- case 0x31:
- case 0x32:
- case 0x33:
- case 0x34:
- case 0x35:
- case 0x36:
- case 0x37:
- case 0x38:
- case 0x39:
- case 0x3a:
- case 0x3b:
- case 0x3c:
- case 0x3d:
- case 0x3e:
- case 0x3f:
- altmem = (z >> 4) & 0x1ffc;
- break;
- case 0x40:
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- case 0x48:
- case 0x49:
- case 0x4a:
- case 0x4b:
- case 0x4c:
- case 0x4d:
- case 0x4e:
- case 0x4f:
- case 0x50:
- case 0x51:
- case 0x52:
- case 0x53:
- case 0x54:
- case 0x55:
- case 0x56:
- case 0x57:
- case 0x58:
- case 0x59:
- case 0x5a:
- case 0x5b:
- case 0x5c:
- case 0x5d:
- case 0x5e:
- case 0x5f:
- altmem = ((z >> 3) & 0x1ffc) | 0x2000;
- break;
- case 0x60:
- case 0x61:
- case 0x62:
- case 0x63:
- case 0x64:
- case 0x65:
- case 0x66:
- case 0x67:
- case 0x68:
- case 0x69:
- case 0x6a:
- case 0x6b:
- case 0x6c:
- case 0x6d:
- case 0x6e:
- case 0x6f:
- altmem = ((z >> 2) & 0x1ffc) | 0x4000;
- break;
- case 0x70:
- case 0x71:
- case 0x72:
- case 0x73:
- case 0x74:
- case 0x75:
- case 0x76:
- case 0x77:
- altmem = ((z >> 1) & 0x1ffc) | 0x6000;
- break;
- case 0x78://uncompressed z = 0x3c000
- case 0x79:
- case 0x7a:
- case 0x7b:
- altmem = (z & 0x1ffc) | 0x8000;
- break;
- case 0x7c://uncompressed z = 0x3e000
- case 0x7d:
- altmem = ((z << 1) & 0x1ffc) | 0xa000;
- break;
- case 0x7e://uncompressed z = 0x3f000
- altmem = ((z << 2) & 0x1ffc) | 0xc000;
- break;
- case 0x7f://uncompressed z = 0x3f000
- altmem = ((z << 2) & 0x1ffc) | 0xe000;
- break;
- }
+ for(INT32 z = 0; z < 0x40000; z++)
+ {
+ switch((z >> 11) & 0x7f)
+ {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0a:
+ case 0x0b:
+ case 0x0c:
+ case 0x0d:
+ case 0x0e:
+ case 0x0f:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1a:
+ case 0x1b:
+ case 0x1c:
+ case 0x1d:
+ case 0x1e:
+ case 0x1f:
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2a:
+ case 0x2b:
+ case 0x2c:
+ case 0x2d:
+ case 0x2e:
+ case 0x2f:
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3a:
+ case 0x3b:
+ case 0x3c:
+ case 0x3d:
+ case 0x3e:
+ case 0x3f:
+ altmem = (z >> 4) & 0x1ffc;
+ break;
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4a:
+ case 0x4b:
+ case 0x4c:
+ case 0x4d:
+ case 0x4e:
+ case 0x4f:
+ case 0x50:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5a:
+ case 0x5b:
+ case 0x5c:
+ case 0x5d:
+ case 0x5e:
+ case 0x5f:
+ altmem = ((z >> 3) & 0x1ffc) | 0x2000;
+ break;
+ case 0x60:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x64:
+ case 0x65:
+ case 0x66:
+ case 0x67:
+ case 0x68:
+ case 0x69:
+ case 0x6a:
+ case 0x6b:
+ case 0x6c:
+ case 0x6d:
+ case 0x6e:
+ case 0x6f:
+ altmem = ((z >> 2) & 0x1ffc) | 0x4000;
+ break;
+ case 0x70:
+ case 0x71:
+ case 0x72:
+ case 0x73:
+ case 0x74:
+ case 0x75:
+ case 0x76:
+ case 0x77:
+ altmem = ((z >> 1) & 0x1ffc) | 0x6000;
+ break;
+ case 0x78://uncompressed z = 0x3c000
+ case 0x79:
+ case 0x7a:
+ case 0x7b:
+ altmem = (z & 0x1ffc) | 0x8000;
+ break;
+ case 0x7c://uncompressed z = 0x3e000
+ case 0x7d:
+ altmem = ((z << 1) & 0x1ffc) | 0xa000;
+ break;
+ case 0x7e://uncompressed z = 0x3f000
+ altmem = ((z << 2) & 0x1ffc) | 0xc000;
+ break;
+ case 0x7f://uncompressed z = 0x3f000
+ altmem = ((z << 2) & 0x1ffc) | 0xe000;
+ break;
+ }
- z_com_table[z] = altmem;
+ m_z_com_table[z] = altmem;
}
}
@@ -804,24 +804,24 @@ void n64_rdp::precalc_cvmask_derivatives(void)
const UINT8 yarray[16] = {0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0};
const UINT8 xarray[16] = {0, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0};
- for (int i = 0; i < 0x10000; i++)
+ for (INT32 i = 0; i < 0x10000; i++)
{
- compressed_cvmasks[i] = (i & 1) | ((i & 4) >> 1) | ((i & 0x20) >> 3) | ((i & 0x80) >> 4) |
+ m_compressed_cvmasks[i] = (i & 1) | ((i & 4) >> 1) | ((i & 0x20) >> 3) | ((i & 0x80) >> 4) |
((i & 0x100) >> 4) | ((i & 0x400) >> 5) | ((i & 0x2000) >> 7) | ((i & 0x8000) >> 8);
}
- for (int i = 0; i < 0x100; i++)
+ for (INT32 i = 0; i < 0x100; i++)
{
UINT16 mask = decompress_cvmask_frombyte(i);
cvarray[i].cvg = cvarray[i].cvbit = 0;
cvarray[i].cvbit = (i >> 7) & 1;
- for (int k = 0; k < 8; k++)
+ for (INT32 k = 0; k < 8; k++)
{
cvarray[i].cvg += ((i >> k) & 1);
}
UINT16 masky = 0;
- for (int k = 0; k < 4; k++)
+ for (INT32 k = 0; k < 4; k++)
{
masky |= ((mask & (0xf000 >> (k << 2))) > 0) << k;
}
@@ -842,29 +842,29 @@ UINT16 n64_rdp::decompress_cvmask_frombyte(UINT8 x)
return y;
}
-void n64_rdp::lookup_cvmask_derivatives(UINT32 mask, UINT8* offx, UINT8* offy, rdp_span_aux *userdata)
+void n64_rdp::lookup_cvmask_derivatives(UINT32 mask, UINT8* offx, UINT8* offy, rdp_span_aux* userdata)
{
- UINT32 index = compressed_cvmasks[mask];
- userdata->CurrentPixCvg = cvarray[index].cvg;
- userdata->CurrentCvgBit = cvarray[index].cvbit;
+ const UINT32 index = m_compressed_cvmasks[mask];
+ userdata->m_current_pix_cvg = cvarray[index].cvg;
+ userdata->m_current_cvg_bit = cvarray[index].cvbit;
*offx = cvarray[index].xoff;
*offy = cvarray[index].yoff;
}
-void n64_rdp::ZStore(const rdp_poly_state &object, UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 z, UINT32 enc)
+void n64_rdp::z_store(const rdp_poly_state &object, UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 z, UINT32 enc)
{
- UINT16 zval = z_com_table[z & 0x3ffff]|(enc >> 2);
+ UINT16 zval = m_z_com_table[z & 0x3ffff]|(enc >> 2);
if(zcurpixel <= MEM16_LIMIT)
{
((UINT16*)rdram)[zcurpixel ^ WORD_ADDR_XOR] = zval;
}
if(dzcurpixel <= MEM8_LIMIT)
{
- HiddenBits[dzcurpixel ^ BYTE_ADDR_XOR] = enc & 3;
+ m_hidden_bits[dzcurpixel ^ BYTE_ADDR_XOR] = enc & 3;
}
}
-INT32 n64_rdp::NormalizeDZPix(INT32 sum)
+INT32 n64_rdp::normalize_dzpix(INT32 sum)
{
if (sum & 0xc000)
{
@@ -874,7 +874,7 @@ INT32 n64_rdp::NormalizeDZPix(INT32 sum)
{
return 1;
}
- for(int count = 0x2000; count > 0; count >>= 1)
+ for(INT32 count = 0x2000; count > 0; count >>= 1)
{
if (sum & count)
{
@@ -884,33 +884,30 @@ INT32 n64_rdp::NormalizeDZPix(INT32 sum)
return 0;
}
-UINT32 n64_rdp::ZDecompress(UINT32 zcurpixel)
+UINT32 n64_rdp::z_decompress(UINT32 zcurpixel)
{
- UINT32 zb = RREADIDX16(zcurpixel);
- CHECK16(zcurpixel);
- return z_complete_dec_table[(zb >> 2) & 0x3fff];
+ return m_z_complete_dec_table[(RREADIDX16(zcurpixel) >> 2) & 0x3fff];
}
-UINT32 n64_rdp::DZDecompress(UINT32 zcurpixel, UINT32 dzcurpixel)
+UINT32 n64_rdp::dz_decompress(UINT32 zcurpixel, UINT32 dzcurpixel)
{
- UINT16 zval = RREADIDX16(zcurpixel);
- CHECK16(zcurpixel);
- UINT8 dzval = (((dzcurpixel) <= 0x7fffff) ? (HiddenBits[(dzcurpixel) ^ BYTE_ADDR_XOR]) : 0);
- UINT32 dz_compressed = ((zval & 3) << 2) | (dzval & 3);
+ const UINT16 zval = RREADIDX16(zcurpixel);
+ const UINT8 dzval = (((dzcurpixel) <= 0x7fffff) ? (m_hidden_bits[(dzcurpixel) ^ BYTE_ADDR_XOR]) : 0);
+ const UINT32 dz_compressed = ((zval & 3) << 2) | (dzval & 3);
return (1 << dz_compressed);
}
-UINT32 n64_rdp::DZCompress(UINT32 value)
+UINT32 n64_rdp::dz_compress(UINT32 value)
{
INT32 j = 0;
for (; value > 1; j++, value >>= 1);
return j;
}
-void n64_rdp::GetDitherValues(int x, int y, int* cdith, int* adith, const rdp_poly_state& object)
+void n64_rdp::get_dither_values(INT32 x, INT32 y, INT32* cdith, INT32* adith, const rdp_poly_state& object)
{
- int dithindex = ((y & 3) << 2) | (x & 3);
- switch((object.OtherModes.rgb_dither_sel << 2) | object.OtherModes.alpha_dither_sel)
+ const INT32 dithindex = ((y & 3) << 2) | (x & 3);
+ switch((object.m_other_modes.rgb_dither_sel << 2) | object.m_other_modes.alpha_dither_sel)
{
case 0:
*adith = *cdith = s_magic_matrix[dithindex];
@@ -983,7 +980,7 @@ INT32 CLAMP(INT32 in, INT32 min, INT32 max)
return in;
}
-bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix, rdp_span_aux *userdata, const rdp_poly_state &object)
+bool n64_rdp::z_compare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix, rdp_span_aux* userdata, const rdp_poly_state &object)
{
bool force_coplanar = false;
sz &= 0x3ffff;
@@ -993,13 +990,12 @@ bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dz
UINT32 zval;
INT32 rawdzmem;
- if (object.OtherModes.z_compare_en)
+ if (object.m_other_modes.z_compare_en)
{
- oz = ZDecompress(zcurpixel);
- dzmem = DZDecompress(zcurpixel, dzcurpixel);
+ oz = z_decompress(zcurpixel);
+ dzmem = dz_decompress(zcurpixel, dzcurpixel);
zval = RREADIDX16(zcurpixel);
- CHECK16(zcurpixel);
- rawdzmem = ((zval & 3) << 2) | ((((dzcurpixel) <= 0x3fffff) ? (HiddenBits[(dzcurpixel) ^ BYTE_ADDR_XOR]) : 0) & 3);
+ rawdzmem = ((zval & 3) << 2) | ((((dzcurpixel) <= 0x3fffff) ? (m_hidden_bits[(dzcurpixel) ^ BYTE_ADDR_XOR]) : 0) & 3);
}
else
{
@@ -1009,14 +1005,14 @@ bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dz
rawdzmem = 0xf;
}
- userdata->m_dzpix_enc = DZCompress(dzpix & 0xffff);
- userdata->ShiftA = CLAMP(userdata->m_dzpix_enc - rawdzmem, 0, 4);
- userdata->ShiftB = CLAMP(rawdzmem - userdata->m_dzpix_enc, 0, 4);
+ userdata->m_dzpix_enc = dz_compress(dzpix & 0xffff);
+ userdata->m_shift_a = CLAMP(userdata->m_dzpix_enc - rawdzmem, 0, 4);
+ userdata->m_shift_b = CLAMP(rawdzmem - userdata->m_dzpix_enc, 0, 4);
- int precision_factor = (zval >> 13) & 0xf;
+ INT32 precision_factor = (zval >> 13) & 0xf;
if (precision_factor < 3)
{
- int dzmemmodifier = 16 >> precision_factor;
+ INT32 dzmemmodifier = 16 >> precision_factor;
if (dzmem == 0x8000)
{
force_coplanar = true;
@@ -1048,21 +1044,21 @@ bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dz
farther = true;
}
- bool overflow = ((userdata->CurrentMemCvg + userdata->CurrentPixCvg) & 8) > 0;
- userdata->BlendEnable = (object.OtherModes.force_blend || (!overflow && object.OtherModes.antialias_en && farther)) ? 1 : 0;
- userdata->PreWrap = overflow;
+ bool overflow = ((userdata->m_current_mem_cvg + userdata->m_current_pix_cvg) & 8) > 0;
+ userdata->m_blend_enable = (object.m_other_modes.force_blend || (!overflow && object.m_other_modes.antialias_en && farther)) ? 1 : 0;
+ userdata->m_pre_wrap = overflow;
- int cvgcoeff = 0;
+ INT32 cvgcoeff = 0;
UINT32 dzenc = 0;
- if (object.OtherModes.z_mode == 1 && infront && farther && overflow)
+ if (object.m_other_modes.z_mode == 1 && infront && farther && overflow)
{
- dzenc = DZCompress(dznotshift & 0xffff);
+ dzenc = dz_compress(dznotshift & 0xffff);
cvgcoeff = ((oz >> dzenc) - (sz >> dzenc)) & 0xf;
- userdata->CurrentPixCvg = ((cvgcoeff * userdata->CurrentPixCvg) >> 3) & 0xf;
+ userdata->m_current_pix_cvg = ((cvgcoeff * userdata->m_current_pix_cvg) >> 3) & 0xf;
}
- if (!object.OtherModes.z_compare_en)
+ if (!object.m_other_modes.z_compare_en)
{
return true;
}
@@ -1075,7 +1071,7 @@ bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dz
nearer = true;
}
- switch(object.OtherModes.z_mode)
+ switch(object.m_other_modes.z_mode)
{
case 0:
return (max || (overflow ? infront : nearer));
@@ -1090,7 +1086,7 @@ bool n64_rdp::ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dz
return false;
}
-UINT32 n64_rdp::GetLog2(UINT32 lod_clamp)
+UINT32 n64_rdp::get_log2(UINT32 lod_clamp)
{
if (lod_clamp < 2)
{
@@ -1098,7 +1094,7 @@ UINT32 n64_rdp::GetLog2(UINT32 lod_clamp)
}
else
{
- for (int i = 7; i > 0; i--)
+ for (INT32 i = 7; i > 0; i--)
{
if ((lod_clamp >> i) & 1)
{
@@ -1112,7 +1108,7 @@ UINT32 n64_rdp::GetLog2(UINT32 lod_clamp)
/*****************************************************************************/
-UINT32 n64_rdp::ReadData(UINT32 address)
+UINT32 n64_rdp::read_data(UINT32 address)
{
if (m_status & 0x1) // XBUS_DMEM_DMA enabled
{
@@ -1124,10 +1120,10 @@ UINT32 n64_rdp::ReadData(UINT32 address)
}
}
-static const char *const image_format[] = { "RGBA", "YUV", "CI", "IA", "I", "???", "???", "???" };
-static const char *const image_size[] = { "4-bit", "8-bit", "16-bit", "32-bit" };
+const char* n64_rdp::s_image_format[] = { "RGBA", "YUV", "CI", "IA", "I", "???", "???", "???" };
+const char* n64_rdp::s_image_size[] = { "4-bit", "8-bit", "16-bit", "32-bit" };
-static const int rdp_command_length[64] =
+const INT32 n64_rdp::s_rdp_command_length[64] =
{
8, // 0x00, No Op
8, // 0x01, ???
@@ -1195,11 +1191,8 @@ static const int rdp_command_length[64] =
8 // 0x3f, Set_Color_Image
};
-void n64_rdp::Dasm(char *buffer)
+void n64_rdp::disassemble(char* buffer)
{
- int i;
- int tile;
- const char *format, *size;
char sl[32], tl[32], sh[32], th[32];
char s[32], t[32], w[32];
char dsdx[32], dtdx[32], dwdx[32];
@@ -1211,13 +1204,10 @@ void n64_rdp::Dasm(char *buffer)
char drdx[32], dgdx[32], dbdx[32], dadx[32];
char drdy[32], dgdy[32], dbdy[32], dady[32];
char drde[32], dgde[32], dbde[32], dade[32];
- UINT32 r,g,b,a;
UINT32 cmd[64];
- UINT32 length;
- UINT32 command;
- length = m_cmd_ptr * 4;
+ const UINT32 length = m_cmd_ptr * 4;
if (length < 8)
{
sprintf(buffer, "ERROR: length = %d\n", length);
@@ -1227,29 +1217,29 @@ void n64_rdp::Dasm(char *buffer)
cmd[0] = m_cmd_data[m_cmd_cur+0];
cmd[1] = m_cmd_data[m_cmd_cur+1];
- tile = (cmd[1] >> 24) & 0x7;
+ const INT32 tile = (cmd[1] >> 24) & 0x7;
sprintf(sl, "%4.2f", (float)((cmd[0] >> 12) & 0xfff) / 4.0f);
sprintf(tl, "%4.2f", (float)((cmd[0] >> 0) & 0xfff) / 4.0f);
sprintf(sh, "%4.2f", (float)((cmd[1] >> 12) & 0xfff) / 4.0f);
sprintf(th, "%4.2f", (float)((cmd[1] >> 0) & 0xfff) / 4.0f);
- format = image_format[(cmd[0] >> 21) & 0x7];
- size = image_size[(cmd[0] >> 19) & 0x3];
+ const char* format = s_image_format[(cmd[0] >> 21) & 0x7];
+ const char* size = s_image_size[(cmd[0] >> 19) & 0x3];
- r = (cmd[1] >> 24) & 0xff;
- g = (cmd[1] >> 16) & 0xff;
- b = (cmd[1] >> 8) & 0xff;
- a = (cmd[1] >> 0) & 0xff;
+ const UINT32 r = (cmd[1] >> 24) & 0xff;
+ const UINT32 g = (cmd[1] >> 16) & 0xff;
+ const UINT32 b = (cmd[1] >> 8) & 0xff;
+ const UINT32 a = (cmd[1] >> 0) & 0xff;
- command = (cmd[0] >> 24) & 0x3f;
+ const UINT32 command = (cmd[0] >> 24) & 0x3f;
switch (command)
{
case 0x00: sprintf(buffer, "No Op"); break;
case 0x08: // Tri_NoShade
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length != rdp_command_length[command])
+ if (length != s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_NoShade length = %d\n", length);
return;
@@ -1272,14 +1262,14 @@ void n64_rdp::Dasm(char *buffer)
sprintf(xm, "%4.4f", (float)(cmd[6] / 65536.0f));
sprintf(dxmdy, "%4.4f", (float)(cmd[7] / 65536.0f));
- sprintf(buffer, "Tri_NoShade %d, XL: %s, XM: %s, XH: %s, YL: %s, YM: %s, YH: %s\n", lft, xl,xm,xh,yl,ym,yh);
+ sprintf(buffer, "Tri_NoShade %d, XL: %s, XM: %s, XH: %s, YL: %s, YM: %s, YH: %s\n", lft, xl,xm,xh,yl,ym,yh);
break;
}
case 0x09: // Tri_NoShadeZ
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length != rdp_command_length[command])
+ if (length != s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_NoShadeZ length = %d\n", length);
return;
@@ -1302,20 +1292,20 @@ void n64_rdp::Dasm(char *buffer)
sprintf(xm, "%4.4f", (float)(cmd[6] / 65536.0f));
sprintf(dxmdy, "%4.4f", (float)(cmd[7] / 65536.0f));
- sprintf(buffer, "Tri_NoShadeZ %d, XL: %s, XM: %s, XH: %s, YL: %s, YM: %s, YH: %s\n", lft, xl,xm,xh,yl,ym,yh);
+ sprintf(buffer, "Tri_NoShadeZ %d, XL: %s, XM: %s, XH: %s, YL: %s, YM: %s, YH: %s\n", lft, xl,xm,xh,yl,ym,yh);
break;
}
case 0x0a: // Tri_Tex
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length < rdp_command_length[command])
+ if (length < s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_Tex length = %d\n", length);
return;
}
- for (i=2; i < 24; i++)
+ for (INT32 i = 2; i < 24; i++)
{
cmd[i] = m_cmd_data[m_cmd_cur+i];
}
@@ -1357,15 +1347,15 @@ void n64_rdp::Dasm(char *buffer)
}
case 0x0b: // Tri_TexZ
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length < rdp_command_length[command])
+ if (length < s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_TexZ length = %d\n", length);
return;
}
- for (i=2; i < 24; i++)
+ for (INT32 i = 2; i < 24; i++)
{
cmd[i] = m_cmd_data[m_cmd_cur+i];
}
@@ -1407,15 +1397,15 @@ void n64_rdp::Dasm(char *buffer)
}
case 0x0c: // Tri_Shade
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length != rdp_command_length[command])
+ if (length != s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_Shade length = %d\n", length);
return;
}
- for (i=2; i < 24; i++)
+ for (INT32 i = 2; i < 24; i++)
{
cmd[i] = m_cmd_data[i];
}
@@ -1459,15 +1449,15 @@ void n64_rdp::Dasm(char *buffer)
}
case 0x0d: // Tri_ShadeZ
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length != rdp_command_length[command])
+ if (length != s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_ShadeZ length = %d\n", length);
return;
}
- for (i=2; i < 24; i++)
+ for (INT32 i = 2; i < 24; i++)
{
cmd[i] = m_cmd_data[i];
}
@@ -1511,15 +1501,15 @@ void n64_rdp::Dasm(char *buffer)
}
case 0x0e: // Tri_TexShade
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length < rdp_command_length[command])
+ if (length < s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_TexShade length = %d\n", length);
return;
}
- for (i=2; i < 40; i++)
+ for (INT32 i = 2; i < 40; i++)
{
cmd[i] = m_cmd_data[m_cmd_cur+i];
}
@@ -1586,15 +1576,15 @@ void n64_rdp::Dasm(char *buffer)
}
case 0x0f: // Tri_TexShadeZ
{
- int lft = (command >> 23) & 0x1;
+ const INT32 lft = (command >> 23) & 0x1;
- if (length < rdp_command_length[command])
+ if (length < s_rdp_command_length[command])
{
sprintf(buffer, "ERROR: Tri_TexShadeZ length = %d\n", length);
return;
}
- for (i=2; i < 40; i++)
+ for (INT32 i = 2; i < 40; i++)
{
cmd[i] = m_cmd_data[m_cmd_cur+i];
}
@@ -1703,7 +1693,7 @@ void n64_rdp::Dasm(char *buffer)
case 0x3d: sprintf(buffer, "Set_Texture_Image %s, %s, %d, %08X", format, size, (cmd[0] & 0x1ff)+1, cmd[1]); break;
case 0x3e: sprintf(buffer, "Set_Mask_Image %08X", cmd[1]); break;
case 0x3f: sprintf(buffer, "Set_Color_Image %s, %s, %d, %08X", format, size, (cmd[0] & 0x1ff)+1, cmd[1]); break;
- default: sprintf(buffer, "??? (%08X %08X)", cmd[0], cmd[1]); break;
+ default: sprintf(buffer, "Unknown (%08X %08X)", cmd[0], cmd[1]); break;
}
}
@@ -1741,16 +1731,16 @@ static INT32 CLIP(INT32 value,INT32 min,INT32 max)
}
}
-void n64_rdp::compute_cvg_noflip(extent_t *Spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base)
+void n64_rdp::compute_cvg_noflip(extent_t* spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base)
{
INT32 purgestart = 0xfff;
INT32 purgeend = 0;
- bool writablescanline = !(scanline & ~0x3ff);
- INT32 scanlinespx = scanline << 2;
+ const bool writablescanline = !(scanline & ~0x3ff);
+ const INT32 scanlinespx = scanline << 2;
if (!writablescanline) return;
- for(int i = 0; i < 4; i++)
+ for(INT32 i = 0; i < 4; i++)
{
if (minorxint[i] < purgestart)
{
@@ -1768,10 +1758,10 @@ void n64_rdp::compute_cvg_noflip(extent_t *Spans, INT32* majorx, INT32* minorx,
if (length < 0) return;
- rdp_span_aux *userdata = (rdp_span_aux*)Spans[scanline - base].userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)spans[scanline - base].userdata;
memset(&userdata->m_cvg[purgestart], 0, (length + 1) << 1);
- for(int i = 0; i < 4; i++)
+ for(INT32 i = 0; i < 4; i++)
{
INT32 minorcur = minorx[i];
INT32 majorcur = majorx[i];
@@ -1814,16 +1804,16 @@ void n64_rdp::compute_cvg_noflip(extent_t *Spans, INT32* majorx, INT32* minorx,
}
}
-void n64_rdp::compute_cvg_flip(extent_t *Spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base)
+void n64_rdp::compute_cvg_flip(extent_t* spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base)
{
INT32 purgestart = 0xfff;
INT32 purgeend = 0;
- bool writablescanline = !(scanline & ~0x3ff);
- INT32 scanlinespx = scanline << 2;
+ const bool writablescanline = !(scanline & ~0x3ff);
+ const INT32 scanlinespx = scanline << 2;
if(!writablescanline) return;
- for(int i = 0; i < 4; i++)
+ for(INT32 i = 0; i < 4; i++)
{
if (majorxint[i] < purgestart)
{
@@ -1838,14 +1828,14 @@ void n64_rdp::compute_cvg_flip(extent_t *Spans, INT32* majorx, INT32* minorx, IN
purgestart = CLIP(purgestart, 0, 1023);
purgeend = CLIP(purgeend, 0, 1023);
- int length = purgeend - purgestart;
+ INT32 length = purgeend - purgestart;
if (length < 0) return;
- rdp_span_aux *userdata = (rdp_span_aux*)Spans[scanline - base].userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)spans[scanline - base].userdata;
memset(&userdata->m_cvg[purgestart], 0, (length + 1) << 1);
- for(int i = 0; i < 4; i++)
+ for(INT32 i = 0; i < 4; i++)
{
INT32 minorcur = minorx[i];
INT32 majorcur = majorx[i];
@@ -1888,30 +1878,30 @@ void n64_rdp::compute_cvg_flip(extent_t *Spans, INT32* majorx, INT32* minorx, IN
}
}
-void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
+void n64_rdp::draw_triangle(bool shade, bool texture, bool zbuffer, bool rect)
{
- UINT32 *cmd_data = rect ? m_temp_rect_data : m_cmd_data;
- UINT32 fifo_index = rect ? 0 : m_cmd_cur;
- UINT32 w1 = cmd_data[fifo_index + 0];
- UINT32 w2 = cmd_data[fifo_index + 1];
+ const UINT32* cmd_data = rect ? m_temp_rect_data : m_cmd_data;
+ const UINT32 fifo_index = rect ? 0 : m_cmd_cur;
+ const UINT32 w1 = cmd_data[fifo_index + 0];
+ const UINT32 w2 = cmd_data[fifo_index + 1];
- int flip = (w1 & 0x00800000) ? 1 : 0;
- MiscState.MaxLevel = ((w1 >> 19) & 7);
- int tilenum = (w1 >> 16) & 0x7;
+ INT32 flip = (w1 & 0x00800000) ? 1 : 0;
+ m_misc_state.m_max_level = ((w1 >> 19) & 7);
+ INT32 tilenum = (w1 >> 16) & 0x7;
- int dsdiff = 0, dtdiff = 0, dwdiff = 0, drdiff = 0, dgdiff = 0, dbdiff = 0, dadiff = 0, dzdiff = 0;
- int dsdeh = 0, dtdeh = 0, dwdeh = 0, drdeh = 0, dgdeh = 0, dbdeh = 0, dadeh = 0, dzdeh = 0;
- int dsdxh = 0, dtdxh = 0, dwdxh = 0, drdxh = 0, dgdxh = 0, dbdxh = 0, dadxh = 0, dzdxh = 0;
- int dsdyh = 0, dtdyh = 0, dwdyh = 0, drdyh = 0, dgdyh = 0, dbdyh = 0, dadyh = 0, dzdyh = 0;
+ INT32 dsdiff = 0, dtdiff = 0, dwdiff = 0, drdiff = 0, dgdiff = 0, dbdiff = 0, dadiff = 0, dzdiff = 0;
+ INT32 dsdeh = 0, dtdeh = 0, dwdeh = 0, drdeh = 0, dgdeh = 0, dbdeh = 0, dadeh = 0, dzdeh = 0;
+ INT32 dsdxh = 0, dtdxh = 0, dwdxh = 0, drdxh = 0, dgdxh = 0, dbdxh = 0, dadxh = 0, dzdxh = 0;
+ INT32 dsdyh = 0, dtdyh = 0, dwdyh = 0, drdyh = 0, dgdyh = 0, dbdyh = 0, dadyh = 0, dzdyh = 0;
INT32 maxxmx = 0; // maxxmx / minxhx very opaque names, consider re-naming
INT32 minxmx = 0;
INT32 maxxhx = 0;
INT32 minxhx = 0;
- int shade_base = fifo_index + 8;
- int texture_base = fifo_index + 8;
- int zbuffer_base = fifo_index + 8;
+ INT32 shade_base = fifo_index + 8;
+ INT32 texture_base = fifo_index + 8;
+ INT32 zbuffer_base = fifo_index + 8;
if(shade)
{
texture_base += 16;
@@ -1948,73 +1938,73 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
if (xm & 0x20000000) xm |= 0xc0000000;
if (xh & 0x20000000) xh |= 0xc0000000;
- int r = (cmd_data[shade_base+0 ] & 0xffff0000) | ((cmd_data[shade_base+4 ] >> 16) & 0x0000ffff);
- int g = ((cmd_data[shade_base+0 ] << 16) & 0xffff0000) | (cmd_data[shade_base+4 ] & 0x0000ffff);
- int b = (cmd_data[shade_base+1 ] & 0xffff0000) | ((cmd_data[shade_base+5 ] >> 16) & 0x0000ffff);
- int a = ((cmd_data[shade_base+1 ] << 16) & 0xffff0000) | (cmd_data[shade_base+5 ] & 0x0000ffff);
- int drdx = (cmd_data[shade_base+2 ] & 0xffff0000) | ((cmd_data[shade_base+6 ] >> 16) & 0x0000ffff);
- int dgdx = ((cmd_data[shade_base+2 ] << 16) & 0xffff0000) | (cmd_data[shade_base+6 ] & 0x0000ffff);
- int dbdx = (cmd_data[shade_base+3 ] & 0xffff0000) | ((cmd_data[shade_base+7 ] >> 16) & 0x0000ffff);
- int dadx = ((cmd_data[shade_base+3 ] << 16) & 0xffff0000) | (cmd_data[shade_base+7 ] & 0x0000ffff);
- int drde = (cmd_data[shade_base+8 ] & 0xffff0000) | ((cmd_data[shade_base+12] >> 16) & 0x0000ffff);
- int dgde = ((cmd_data[shade_base+8 ] << 16) & 0xffff0000) | (cmd_data[shade_base+12] & 0x0000ffff);
- int dbde = (cmd_data[shade_base+9 ] & 0xffff0000) | ((cmd_data[shade_base+13] >> 16) & 0x0000ffff);
- int dade = ((cmd_data[shade_base+9 ] << 16) & 0xffff0000) | (cmd_data[shade_base+13] & 0x0000ffff);
- int drdy = (cmd_data[shade_base+10] & 0xffff0000) | ((cmd_data[shade_base+14] >> 16) & 0x0000ffff);
- int dgdy = ((cmd_data[shade_base+10] << 16) & 0xffff0000) | (cmd_data[shade_base+14] & 0x0000ffff);
- int dbdy = (cmd_data[shade_base+11] & 0xffff0000) | ((cmd_data[shade_base+15] >> 16) & 0x0000ffff);
- int dady = ((cmd_data[shade_base+11] << 16) & 0xffff0000) | (cmd_data[shade_base+15] & 0x0000ffff);
- int s = (cmd_data[texture_base+0 ] & 0xffff0000) | ((cmd_data[texture_base+4 ] >> 16) & 0x0000ffff);
- int t = ((cmd_data[texture_base+0 ] << 16) & 0xffff0000) | (cmd_data[texture_base+4 ] & 0x0000ffff);
- int w = (cmd_data[texture_base+1 ] & 0xffff0000) | ((cmd_data[texture_base+5 ] >> 16) & 0x0000ffff);
- int dsdx = (cmd_data[texture_base+2 ] & 0xffff0000) | ((cmd_data[texture_base+6 ] >> 16) & 0x0000ffff);
- int dtdx = ((cmd_data[texture_base+2 ] << 16) & 0xffff0000) | (cmd_data[texture_base+6 ] & 0x0000ffff);
- int dwdx = (cmd_data[texture_base+3 ] & 0xffff0000) | ((cmd_data[texture_base+7 ] >> 16) & 0x0000ffff);
- int dsde = (cmd_data[texture_base+8 ] & 0xffff0000) | ((cmd_data[texture_base+12] >> 16) & 0x0000ffff);
- int dtde = ((cmd_data[texture_base+8 ] << 16) & 0xffff0000) | (cmd_data[texture_base+12] & 0x0000ffff);
- int dwde = (cmd_data[texture_base+9 ] & 0xffff0000) | ((cmd_data[texture_base+13] >> 16) & 0x0000ffff);
- int dsdy = (cmd_data[texture_base+10] & 0xffff0000) | ((cmd_data[texture_base+14] >> 16) & 0x0000ffff);
- int dtdy = ((cmd_data[texture_base+10] << 16) & 0xffff0000) | (cmd_data[texture_base+14] & 0x0000ffff);
- int dwdy = (cmd_data[texture_base+11] & 0xffff0000) | ((cmd_data[texture_base+15] >> 16) & 0x0000ffff);
- int z = cmd_data[zbuffer_base+0];
- int dzdx = cmd_data[zbuffer_base+1];
- int dzde = cmd_data[zbuffer_base+2];
- int dzdy = cmd_data[zbuffer_base+3];
-
- int dzdy_dz = (dzdy >> 16) & 0xffff;
- int dzdx_dz = (dzdx >> 16) & 0xffff;
-
- extent_t Spans[2048];
+ INT32 r = (cmd_data[shade_base+0 ] & 0xffff0000) | ((cmd_data[shade_base+4 ] >> 16) & 0x0000ffff);
+ INT32 g = ((cmd_data[shade_base+0 ] << 16) & 0xffff0000) | (cmd_data[shade_base+4 ] & 0x0000ffff);
+ INT32 b = (cmd_data[shade_base+1 ] & 0xffff0000) | ((cmd_data[shade_base+5 ] >> 16) & 0x0000ffff);
+ INT32 a = ((cmd_data[shade_base+1 ] << 16) & 0xffff0000) | (cmd_data[shade_base+5 ] & 0x0000ffff);
+ const INT32 drdx = (cmd_data[shade_base+2 ] & 0xffff0000) | ((cmd_data[shade_base+6 ] >> 16) & 0x0000ffff);
+ const INT32 dgdx = ((cmd_data[shade_base+2 ] << 16) & 0xffff0000) | (cmd_data[shade_base+6 ] & 0x0000ffff);
+ const INT32 dbdx = (cmd_data[shade_base+3 ] & 0xffff0000) | ((cmd_data[shade_base+7 ] >> 16) & 0x0000ffff);
+ const INT32 dadx = ((cmd_data[shade_base+3 ] << 16) & 0xffff0000) | (cmd_data[shade_base+7 ] & 0x0000ffff);
+ const INT32 drde = (cmd_data[shade_base+8 ] & 0xffff0000) | ((cmd_data[shade_base+12] >> 16) & 0x0000ffff);
+ const INT32 dgde = ((cmd_data[shade_base+8 ] << 16) & 0xffff0000) | (cmd_data[shade_base+12] & 0x0000ffff);
+ const INT32 dbde = (cmd_data[shade_base+9 ] & 0xffff0000) | ((cmd_data[shade_base+13] >> 16) & 0x0000ffff);
+ const INT32 dade = ((cmd_data[shade_base+9 ] << 16) & 0xffff0000) | (cmd_data[shade_base+13] & 0x0000ffff);
+ const INT32 drdy = (cmd_data[shade_base+10] & 0xffff0000) | ((cmd_data[shade_base+14] >> 16) & 0x0000ffff);
+ const INT32 dgdy = ((cmd_data[shade_base+10] << 16) & 0xffff0000) | (cmd_data[shade_base+14] & 0x0000ffff);
+ const INT32 dbdy = (cmd_data[shade_base+11] & 0xffff0000) | ((cmd_data[shade_base+15] >> 16) & 0x0000ffff);
+ const INT32 dady = ((cmd_data[shade_base+11] << 16) & 0xffff0000) | (cmd_data[shade_base+15] & 0x0000ffff);
+ INT32 s = (cmd_data[texture_base+0 ] & 0xffff0000) | ((cmd_data[texture_base+4 ] >> 16) & 0x0000ffff);
+ INT32 t = ((cmd_data[texture_base+0 ] << 16) & 0xffff0000) | (cmd_data[texture_base+4 ] & 0x0000ffff);
+ INT32 w = (cmd_data[texture_base+1 ] & 0xffff0000) | ((cmd_data[texture_base+5 ] >> 16) & 0x0000ffff);
+ const INT32 dsdx = (cmd_data[texture_base+2 ] & 0xffff0000) | ((cmd_data[texture_base+6 ] >> 16) & 0x0000ffff);
+ const INT32 dtdx = ((cmd_data[texture_base+2 ] << 16) & 0xffff0000) | (cmd_data[texture_base+6 ] & 0x0000ffff);
+ const INT32 dwdx = (cmd_data[texture_base+3 ] & 0xffff0000) | ((cmd_data[texture_base+7 ] >> 16) & 0x0000ffff);
+ const INT32 dsde = (cmd_data[texture_base+8 ] & 0xffff0000) | ((cmd_data[texture_base+12] >> 16) & 0x0000ffff);
+ const INT32 dtde = ((cmd_data[texture_base+8 ] << 16) & 0xffff0000) | (cmd_data[texture_base+12] & 0x0000ffff);
+ const INT32 dwde = (cmd_data[texture_base+9 ] & 0xffff0000) | ((cmd_data[texture_base+13] >> 16) & 0x0000ffff);
+ const INT32 dsdy = (cmd_data[texture_base+10] & 0xffff0000) | ((cmd_data[texture_base+14] >> 16) & 0x0000ffff);
+ const INT32 dtdy = ((cmd_data[texture_base+10] << 16) & 0xffff0000) | (cmd_data[texture_base+14] & 0x0000ffff);
+ const INT32 dwdy = (cmd_data[texture_base+11] & 0xffff0000) | ((cmd_data[texture_base+15] >> 16) & 0x0000ffff);
+ INT32 z = cmd_data[zbuffer_base+0];
+ const INT32 dzdx = cmd_data[zbuffer_base+1];
+ const INT32 dzde = cmd_data[zbuffer_base+2];
+ const INT32 dzdy = cmd_data[zbuffer_base+3];
+
+ const INT32 dzdy_dz = (dzdy >> 16) & 0xffff;
+ const INT32 dzdx_dz = (dzdx >> 16) & 0xffff;
+
+ extent_t spans[2048];
#ifdef MAME_DEBUG
- memset(Spans, 0xcc, sizeof(Spans));
+ memset(spans, 0xcc, sizeof(spans));
#endif
- SpanBase.m_span_drdy = drdy;
- SpanBase.m_span_dgdy = dgdy;
- SpanBase.m_span_dbdy = dbdy;
- SpanBase.m_span_dady = dady;
- SpanBase.m_span_dzdy = OtherModes.z_source_sel ? 0 : dzdy;
+ m_span_base.m_span_drdy = drdy;
+ m_span_base.m_span_dgdy = dgdy;
+ m_span_base.m_span_dbdy = dbdy;
+ m_span_base.m_span_dady = dady;
+ m_span_base.m_span_dzdy = m_other_modes.z_source_sel ? 0 : dzdy;
UINT32 temp_dzpix = ((dzdy_dz & 0x8000) ? ((~dzdy_dz) & 0x7fff) : dzdy_dz) + ((dzdx_dz & 0x8000) ? ((~dzdx_dz) & 0x7fff) : dzdx_dz);
- SpanBase.m_span_dr = drdx & ~0x1f;
- SpanBase.m_span_dg = dgdx & ~0x1f;
- SpanBase.m_span_db = dbdx & ~0x1f;
- SpanBase.m_span_da = dadx & ~0x1f;
- SpanBase.m_span_ds = dsdx;
- SpanBase.m_span_dt = dtdx;
- SpanBase.m_span_dw = dwdx;
- SpanBase.m_span_dz = OtherModes.z_source_sel ? 0 : dzdx;
- SpanBase.m_span_dymax = 0;
- SpanBase.m_span_dzpix = m_dzpix_normalize[temp_dzpix & 0xffff];
-
- int xleft_inc = (dxmdy >> 2) & ~1;
- int xright_inc = (dxhdy >> 2) & ~1;
-
- int xright = xh & ~1;
- int xleft = xm & ~1;
-
- int sign_dxhdy = (dxhdy & 0x80000000) ? 1 : 0;
- int do_offset = !(sign_dxhdy ^ (flip));
+ m_span_base.m_span_dr = drdx & ~0x1f;
+ m_span_base.m_span_dg = dgdx & ~0x1f;
+ m_span_base.m_span_db = dbdx & ~0x1f;
+ m_span_base.m_span_da = dadx & ~0x1f;
+ m_span_base.m_span_ds = dsdx;
+ m_span_base.m_span_dt = dtdx;
+ m_span_base.m_span_dw = dwdx;
+ m_span_base.m_span_dz = m_other_modes.z_source_sel ? 0 : dzdx;
+ m_span_base.m_span_dymax = 0;
+ m_span_base.m_span_dzpix = m_dzpix_normalize[temp_dzpix & 0xffff];
+
+ INT32 xleft_inc = (dxmdy >> 2) & ~1;
+ INT32 xright_inc = (dxhdy >> 2) & ~1;
+
+ INT32 xright = xh & ~1;
+ INT32 xleft = xm & ~1;
+
+ const INT32 sign_dxhdy = (dxhdy & 0x80000000) ? 1 : 0;
+ const INT32 do_offset = !(sign_dxhdy ^ (flip));
if (do_offset)
{
@@ -2050,19 +2040,18 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
dadxh = dadx >> 8;
dzdxh = dzdx >> 8;
- INT32 ycur = yh & ~3;
- INT32 ylfar = yl | 3;
- INT32 ldflag = (sign_dxhdy ^ flip) ? 0 : 3;
+ const INT32 ycur = yh & ~3;
+ const INT32 ylfar = yl | 3;
+ const INT32 ldflag = (sign_dxhdy ^ flip) ? 0 : 3;
INT32 majorx[4];
INT32 minorx[4];
INT32 majorxint[4];
INT32 minorxint[4];
- bool valid_y = true;
- int xfrac = ((xright >> 8) & 0xff);
+ INT32 xfrac = ((xright >> 8) & 0xff);
- int clipy1 = Scissor.m_yh;
- int clipy2 = Scissor.m_yl;
+ const INT32 clipy1 = m_scissor.m_yh;
+ const INT32 clipy2 = m_scissor.m_yl;
// Trivial reject
if((ycur >> 2) >= clipy2 && (ylfar >> 2) >= clipy2)
@@ -2075,12 +2064,12 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
}
bool new_object = true;
- rdp_poly_state *object = NULL;
+ rdp_poly_state* object = NULL;
bool valid = false;
if(flip)
{
- for (int k = ycur; k <= ylfar; k++)
+ for (INT32 k = ycur; k <= ylfar; k++)
{
if (k == ym)
{
@@ -2088,12 +2077,12 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
xleft_inc = (dxldy >> 2) & ~1;
}
- int xstart = xleft >> 16; // 319
- int xend = xright >> 16; // 0
- int j = k >> 2;
- int spanidx = (k - ycur) >> 2;
- int spix = k & 3;
- valid_y = !(k < yh || k >= yl);
+ const INT32 xstart = xleft >> 16; // 319
+ const INT32 xend = xright >> 16; // 0
+ const INT32 j = k >> 2;
+ const INT32 spanidx = (k - ycur) >> 2;
+ const INT32 spix = k & 3;
+ const bool valid_y = !(k < yh || k >= yl);
if (spanidx >= 0 && spanidx < 2048)
{
@@ -2123,110 +2112,110 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
new_object = false;
}
- Spans[spanidx].userdata = (void*)((UINT8*)AuxBuf + AuxBufPtr);
- AuxBufPtr += sizeof(rdp_span_aux);
+ spans[spanidx].userdata = (void*)((UINT8*)m_aux_buf + m_aux_buf_ptr);
+ m_aux_buf_ptr += sizeof(rdp_span_aux);
- if(AuxBufPtr >= EXTENT_AUX_COUNT)
+ if(m_aux_buf_ptr >= EXTENT_AUX_COUNT)
{
- fatalerror("n64_rdp::DrawTriangle: span aux buffer overflow\n");
+ fatalerror("n64_rdp::draw_triangle: span aux buffer overflow\n");
}
- rdp_span_aux *userdata = (rdp_span_aux*)Spans[spanidx].userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)spans[spanidx].userdata;
valid = true;
userdata->m_tmem = object->m_tmem;
- userdata->BlendColor = BlendColor;
- userdata->PrimColor = PrimColor;
- userdata->EnvColor = EnvColor;
- userdata->FogColor = FogColor;
- userdata->KeyScale = KeyScale;
- userdata->LODFraction = LODFraction;
- userdata->PrimLODFraction = PrimLODFraction;
-
- userdata->ColorInputs.combiner_rgbsub_a_r[0] = userdata->ColorInputs.combiner_rgbsub_a_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbsub_a_g[0] = userdata->ColorInputs.combiner_rgbsub_a_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbsub_a_b[0] = userdata->ColorInputs.combiner_rgbsub_a_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbsub_b_r[0] = userdata->ColorInputs.combiner_rgbsub_b_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbsub_b_g[0] = userdata->ColorInputs.combiner_rgbsub_b_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbsub_b_b[0] = userdata->ColorInputs.combiner_rgbsub_b_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbmul_r[0] = userdata->ColorInputs.combiner_rgbmul_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbmul_g[0] = userdata->ColorInputs.combiner_rgbmul_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbmul_b[0] = userdata->ColorInputs.combiner_rgbmul_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbadd_r[0] = userdata->ColorInputs.combiner_rgbadd_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbadd_g[0] = userdata->ColorInputs.combiner_rgbadd_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbadd_b[0] = userdata->ColorInputs.combiner_rgbadd_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_alphasub_a[0] = userdata->ColorInputs.combiner_alphasub_a[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphasub_b[0] = userdata->ColorInputs.combiner_alphasub_b[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphamul[0] = userdata->ColorInputs.combiner_alphamul[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphaadd[0] = userdata->ColorInputs.combiner_alphaadd[1] = &OneColor.i.a;
-
- userdata->ColorInputs.blender1a_r[0] = userdata->ColorInputs.blender1a_r[1] = &userdata->PixelColor.i.r;
- userdata->ColorInputs.blender1a_g[0] = userdata->ColorInputs.blender1a_g[1] = &userdata->PixelColor.i.g;
- userdata->ColorInputs.blender1a_b[0] = userdata->ColorInputs.blender1a_b[1] = &userdata->PixelColor.i.b;
- userdata->ColorInputs.blender1b_a[0] = userdata->ColorInputs.blender1b_a[1] = &userdata->PixelColor.i.a;
- userdata->ColorInputs.blender2a_r[0] = userdata->ColorInputs.blender2a_r[1] = &userdata->PixelColor.i.r;
- userdata->ColorInputs.blender2a_g[0] = userdata->ColorInputs.blender2a_g[1] = &userdata->PixelColor.i.g;
- userdata->ColorInputs.blender2a_b[0] = userdata->ColorInputs.blender2a_b[1] = &userdata->PixelColor.i.b;
- userdata->ColorInputs.blender2b_a[0] = userdata->ColorInputs.blender2b_a[1] = &userdata->PixelColor.i.a;
+ userdata->m_blend_color = m_blend_color;
+ userdata->m_prim_color = m_prim_color;
+ userdata->m_env_color = m_env_color;
+ userdata->m_fog_color = m_fog_color;
+ userdata->m_key_scale = m_key_scale;
+ userdata->m_lod_fraction = m_lod_fraction;
+ userdata->m_prim_lod_fraction = m_prim_lod_fraction;
+
+ userdata->m_color_inputs.combiner_rgbsub_a_r[0] = userdata->m_color_inputs.combiner_rgbsub_a_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbsub_a_g[0] = userdata->m_color_inputs.combiner_rgbsub_a_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbsub_a_b[0] = userdata->m_color_inputs.combiner_rgbsub_a_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbsub_b_r[0] = userdata->m_color_inputs.combiner_rgbsub_b_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbsub_b_g[0] = userdata->m_color_inputs.combiner_rgbsub_b_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbsub_b_b[0] = userdata->m_color_inputs.combiner_rgbsub_b_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbmul_r[0] = userdata->m_color_inputs.combiner_rgbmul_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbmul_g[0] = userdata->m_color_inputs.combiner_rgbmul_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbmul_b[0] = userdata->m_color_inputs.combiner_rgbmul_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbadd_r[0] = userdata->m_color_inputs.combiner_rgbadd_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbadd_g[0] = userdata->m_color_inputs.combiner_rgbadd_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbadd_b[0] = userdata->m_color_inputs.combiner_rgbadd_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_alphasub_a[0] = userdata->m_color_inputs.combiner_alphasub_a[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphasub_b[0] = userdata->m_color_inputs.combiner_alphasub_b[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphamul[0] = userdata->m_color_inputs.combiner_alphamul[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphaadd[0] = userdata->m_color_inputs.combiner_alphaadd[1] = &m_one.i.a;
+
+ userdata->m_color_inputs.blender1a_r[0] = userdata->m_color_inputs.blender1a_r[1] = &userdata->m_pixel_color.i.r;
+ userdata->m_color_inputs.blender1a_g[0] = userdata->m_color_inputs.blender1a_g[1] = &userdata->m_pixel_color.i.g;
+ userdata->m_color_inputs.blender1a_b[0] = userdata->m_color_inputs.blender1a_b[1] = &userdata->m_pixel_color.i.b;
+ userdata->m_color_inputs.blender1b_a[0] = userdata->m_color_inputs.blender1b_a[1] = &userdata->m_pixel_color.i.a;
+ userdata->m_color_inputs.blender2a_r[0] = userdata->m_color_inputs.blender2a_r[1] = &userdata->m_pixel_color.i.r;
+ userdata->m_color_inputs.blender2a_g[0] = userdata->m_color_inputs.blender2a_g[1] = &userdata->m_pixel_color.i.g;
+ userdata->m_color_inputs.blender2a_b[0] = userdata->m_color_inputs.blender2a_b[1] = &userdata->m_pixel_color.i.b;
+ userdata->m_color_inputs.blender2b_a[0] = userdata->m_color_inputs.blender2b_a[1] = &userdata->m_pixel_color.i.a;
// Setup blender data for this scanline
- SetBlenderInput(0, 0, &userdata->ColorInputs.blender1a_r[0],
- &userdata->ColorInputs.blender1a_g[0],
- &userdata->ColorInputs.blender1a_b[0],
- &userdata->ColorInputs.blender1b_a[0], OtherModes.blend_m1a_0, OtherModes.blend_m1b_0, userdata);
- SetBlenderInput(0, 1, &userdata->ColorInputs.blender2a_r[0],
- &userdata->ColorInputs.blender2a_g[0],
- &userdata->ColorInputs.blender2a_b[0],
- &userdata->ColorInputs.blender2b_a[0], OtherModes.blend_m2a_0, OtherModes.blend_m2b_0, userdata);
- SetBlenderInput(1, 0, &userdata->ColorInputs.blender1a_r[1],
- &userdata->ColorInputs.blender1a_g[1],
- &userdata->ColorInputs.blender1a_b[1],
- &userdata->ColorInputs.blender1b_a[1], OtherModes.blend_m1a_1, OtherModes.blend_m1b_1, userdata);
- SetBlenderInput(1, 1, &userdata->ColorInputs.blender2a_r[1],
- &userdata->ColorInputs.blender2a_g[1],
- &userdata->ColorInputs.blender2a_b[1],
- &userdata->ColorInputs.blender2b_a[1], OtherModes.blend_m2a_1, OtherModes.blend_m2b_1, userdata);
+ set_blender_input(0, 0, &userdata->m_color_inputs.blender1a_r[0],
+ &userdata->m_color_inputs.blender1a_g[0],
+ &userdata->m_color_inputs.blender1a_b[0],
+ &userdata->m_color_inputs.blender1b_a[0], m_other_modes.blend_m1a_0, m_other_modes.blend_m1b_0, userdata);
+ set_blender_input(0, 1, &userdata->m_color_inputs.blender2a_r[0],
+ &userdata->m_color_inputs.blender2a_g[0],
+ &userdata->m_color_inputs.blender2a_b[0],
+ &userdata->m_color_inputs.blender2b_a[0], m_other_modes.blend_m2a_0, m_other_modes.blend_m2b_0, userdata);
+ set_blender_input(1, 0, &userdata->m_color_inputs.blender1a_r[1],
+ &userdata->m_color_inputs.blender1a_g[1],
+ &userdata->m_color_inputs.blender1a_b[1],
+ &userdata->m_color_inputs.blender1b_a[1], m_other_modes.blend_m1a_1, m_other_modes.blend_m1b_1, userdata);
+ set_blender_input(1, 1, &userdata->m_color_inputs.blender2a_r[1],
+ &userdata->m_color_inputs.blender2a_g[1],
+ &userdata->m_color_inputs.blender2a_b[1],
+ &userdata->m_color_inputs.blender2b_a[1], m_other_modes.blend_m2a_1, m_other_modes.blend_m2b_1, userdata);
// Setup color combiner data for this scanline
- SetSubAInputRGB(&userdata->ColorInputs.combiner_rgbsub_a_r[0], &userdata->ColorInputs.combiner_rgbsub_a_g[0], &userdata->ColorInputs.combiner_rgbsub_a_b[0], m_combine.sub_a_rgb0, userdata);
- SetSubBInputRGB(&userdata->ColorInputs.combiner_rgbsub_b_r[0], &userdata->ColorInputs.combiner_rgbsub_b_g[0], &userdata->ColorInputs.combiner_rgbsub_b_b[0], m_combine.sub_b_rgb0, userdata);
- SetMulInputRGB(&userdata->ColorInputs.combiner_rgbmul_r[0], &userdata->ColorInputs.combiner_rgbmul_g[0], &userdata->ColorInputs.combiner_rgbmul_b[0], m_combine.mul_rgb0, userdata);
- SetAddInputRGB(&userdata->ColorInputs.combiner_rgbadd_r[0], &userdata->ColorInputs.combiner_rgbadd_g[0], &userdata->ColorInputs.combiner_rgbadd_b[0], m_combine.add_rgb0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_a[0], m_combine.sub_a_a0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_b[0], m_combine.sub_b_a0, userdata);
- SetMulInputAlpha(&userdata->ColorInputs.combiner_alphamul[0], m_combine.mul_a0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphaadd[0], m_combine.add_a0, userdata);
-
- SetSubAInputRGB(&userdata->ColorInputs.combiner_rgbsub_a_r[1], &userdata->ColorInputs.combiner_rgbsub_a_g[1], &userdata->ColorInputs.combiner_rgbsub_a_b[1], m_combine.sub_a_rgb1, userdata);
- SetSubBInputRGB(&userdata->ColorInputs.combiner_rgbsub_b_r[1], &userdata->ColorInputs.combiner_rgbsub_b_g[1], &userdata->ColorInputs.combiner_rgbsub_b_b[1], m_combine.sub_b_rgb1, userdata);
- SetMulInputRGB(&userdata->ColorInputs.combiner_rgbmul_r[1], &userdata->ColorInputs.combiner_rgbmul_g[1], &userdata->ColorInputs.combiner_rgbmul_b[1], m_combine.mul_rgb1, userdata);
- SetAddInputRGB(&userdata->ColorInputs.combiner_rgbadd_r[1], &userdata->ColorInputs.combiner_rgbadd_g[1], &userdata->ColorInputs.combiner_rgbadd_b[1], m_combine.add_rgb1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_a[1], m_combine.sub_a_a1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_b[1], m_combine.sub_b_a1, userdata);
- SetMulInputAlpha(&userdata->ColorInputs.combiner_alphamul[1], m_combine.mul_a1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphaadd[1], m_combine.add_a1, userdata);
+ set_suba_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_a_r[0], &userdata->m_color_inputs.combiner_rgbsub_a_g[0], &userdata->m_color_inputs.combiner_rgbsub_a_b[0], m_combine.sub_a_rgb0, userdata);
+ set_subb_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_b_r[0], &userdata->m_color_inputs.combiner_rgbsub_b_g[0], &userdata->m_color_inputs.combiner_rgbsub_b_b[0], m_combine.sub_b_rgb0, userdata);
+ set_mul_input_rgb(&userdata->m_color_inputs.combiner_rgbmul_r[0], &userdata->m_color_inputs.combiner_rgbmul_g[0], &userdata->m_color_inputs.combiner_rgbmul_b[0], m_combine.mul_rgb0, userdata);
+ set_add_input_rgb(&userdata->m_color_inputs.combiner_rgbadd_r[0], &userdata->m_color_inputs.combiner_rgbadd_g[0], &userdata->m_color_inputs.combiner_rgbadd_b[0], m_combine.add_rgb0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_a[0], m_combine.sub_a_a0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_b[0], m_combine.sub_b_a0, userdata);
+ set_mul_input_alpha(&userdata->m_color_inputs.combiner_alphamul[0], m_combine.mul_a0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphaadd[0], m_combine.add_a0, userdata);
+
+ set_suba_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_a_r[1], &userdata->m_color_inputs.combiner_rgbsub_a_g[1], &userdata->m_color_inputs.combiner_rgbsub_a_b[1], m_combine.sub_a_rgb1, userdata);
+ set_subb_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_b_r[1], &userdata->m_color_inputs.combiner_rgbsub_b_g[1], &userdata->m_color_inputs.combiner_rgbsub_b_b[1], m_combine.sub_b_rgb1, userdata);
+ set_mul_input_rgb(&userdata->m_color_inputs.combiner_rgbmul_r[1], &userdata->m_color_inputs.combiner_rgbmul_g[1], &userdata->m_color_inputs.combiner_rgbmul_b[1], m_combine.mul_rgb1, userdata);
+ set_add_input_rgb(&userdata->m_color_inputs.combiner_rgbadd_r[1], &userdata->m_color_inputs.combiner_rgbadd_g[1], &userdata->m_color_inputs.combiner_rgbadd_b[1], m_combine.add_rgb1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_a[1], m_combine.sub_a_a1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_b[1], m_combine.sub_b_a1, userdata);
+ set_mul_input_alpha(&userdata->m_color_inputs.combiner_alphamul[1], m_combine.mul_a1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphaadd[1], m_combine.add_a1, userdata);
}
if (spix == 3)
{
- Spans[spanidx].startx = maxxmx;
- Spans[spanidx].stopx = minxhx;
- compute_cvg_flip(Spans, majorx, minorx, majorxint, minorxint, j, yh, yl, ycur >> 2);
+ spans[spanidx].startx = maxxmx;
+ spans[spanidx].stopx = minxhx;
+ compute_cvg_flip(spans, majorx, minorx, majorxint, minorxint, j, yh, yl, ycur >> 2);
}
if (spix == ldflag)
{
- ((rdp_span_aux*)Spans[spanidx].userdata)->m_unscissored_rx = xend;
+ ((rdp_span_aux*)spans[spanidx].userdata)->m_unscissored_rx = xend;
xfrac = ((xright >> 8) & 0xff);
- Spans[spanidx].param[SPAN_R].start = ((r >> 9) << 9) + drdiff - (xfrac * drdxh);
- Spans[spanidx].param[SPAN_G].start = ((g >> 9) << 9) + dgdiff - (xfrac * dgdxh);
- Spans[spanidx].param[SPAN_B].start = ((b >> 9) << 9) + dbdiff - (xfrac * dbdxh);
- Spans[spanidx].param[SPAN_A].start = ((a >> 9) << 9) + dadiff - (xfrac * dadxh);
- Spans[spanidx].param[SPAN_S].start = (((s >> 9) << 9) + dsdiff - (xfrac * dsdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_T].start = (((t >> 9) << 9) + dtdiff - (xfrac * dtdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_W].start = (((w >> 9) << 9) + dwdiff - (xfrac * dwdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_Z].start = ((z >> 9) << 9) + dzdiff - (xfrac * dzdxh);
+ spans[spanidx].param[SPAN_R].start = ((r >> 9) << 9) + drdiff - (xfrac * drdxh);
+ spans[spanidx].param[SPAN_G].start = ((g >> 9) << 9) + dgdiff - (xfrac * dgdxh);
+ spans[spanidx].param[SPAN_B].start = ((b >> 9) << 9) + dbdiff - (xfrac * dbdxh);
+ spans[spanidx].param[SPAN_A].start = ((a >> 9) << 9) + dadiff - (xfrac * dadxh);
+ spans[spanidx].param[SPAN_S].start = (((s >> 9) << 9) + dsdiff - (xfrac * dsdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_T].start = (((t >> 9) << 9) + dtdiff - (xfrac * dtdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_W].start = (((w >> 9) << 9) + dwdiff - (xfrac * dwdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_Z].start = ((z >> 9) << 9) + dzdiff - (xfrac * dzdxh);
}
}
@@ -2248,7 +2237,7 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
}
else
{
- for (int k = ycur; k <= ylfar; k++)
+ for (INT32 k = ycur; k <= ylfar; k++)
{
if (k == ym)
{
@@ -2256,12 +2245,12 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
xleft_inc = (dxldy >> 2) & ~1;
}
- int xstart = xleft >> 16;
- int xend = xright >> 16;
- int j = k >> 2;
- int spanidx = j - (ycur >> 2);
- int spix = k & 3;
- valid_y = !(k < yh || k >= yl);
+ const INT32 xstart = xleft >> 16;
+ const INT32 xend = xright >> 16;
+ const INT32 j = k >> 2;
+ const INT32 spanidx = j - (ycur >> 2);
+ const INT32 spix = k & 3;
+ bool valid_y = !(k < yh || k >= yl);
if (k >= 0 && k < 0x1000)
{
@@ -2291,109 +2280,109 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
new_object = false;
}
- Spans[spanidx].userdata = (void*)((UINT8*)AuxBuf + AuxBufPtr);
+ spans[spanidx].userdata = (void*)((UINT8*)m_aux_buf + m_aux_buf_ptr);
valid = true;
- AuxBufPtr += sizeof(rdp_span_aux);
+ m_aux_buf_ptr += sizeof(rdp_span_aux);
- if(AuxBufPtr >= EXTENT_AUX_COUNT)
+ if(m_aux_buf_ptr >= EXTENT_AUX_COUNT)
{
- fatalerror("n64_rdp::DrawTriangle: span aux buffer overflow\n");
+ fatalerror("n64_rdp::draw_triangle: span aux buffer overflow\n");
}
- rdp_span_aux *userdata = (rdp_span_aux*)Spans[spanidx].userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)spans[spanidx].userdata;
userdata->m_tmem = object->m_tmem;
- userdata->BlendColor = BlendColor;
- userdata->PrimColor = PrimColor;
- userdata->EnvColor = EnvColor;
- userdata->FogColor = FogColor;
- userdata->KeyScale = KeyScale;
- userdata->LODFraction = LODFraction;
- userdata->PrimLODFraction = PrimLODFraction;
-
- userdata->ColorInputs.combiner_rgbsub_a_r[0] = userdata->ColorInputs.combiner_rgbsub_a_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbsub_a_g[0] = userdata->ColorInputs.combiner_rgbsub_a_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbsub_a_b[0] = userdata->ColorInputs.combiner_rgbsub_a_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbsub_b_r[0] = userdata->ColorInputs.combiner_rgbsub_b_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbsub_b_g[0] = userdata->ColorInputs.combiner_rgbsub_b_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbsub_b_b[0] = userdata->ColorInputs.combiner_rgbsub_b_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbmul_r[0] = userdata->ColorInputs.combiner_rgbmul_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbmul_g[0] = userdata->ColorInputs.combiner_rgbmul_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbmul_b[0] = userdata->ColorInputs.combiner_rgbmul_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_rgbadd_r[0] = userdata->ColorInputs.combiner_rgbadd_r[1] = &OneColor.i.r;
- userdata->ColorInputs.combiner_rgbadd_g[0] = userdata->ColorInputs.combiner_rgbadd_g[1] = &OneColor.i.g;
- userdata->ColorInputs.combiner_rgbadd_b[0] = userdata->ColorInputs.combiner_rgbadd_b[1] = &OneColor.i.b;
- userdata->ColorInputs.combiner_alphasub_a[0] = userdata->ColorInputs.combiner_alphasub_a[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphasub_b[0] = userdata->ColorInputs.combiner_alphasub_b[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphamul[0] = userdata->ColorInputs.combiner_alphamul[1] = &OneColor.i.a;
- userdata->ColorInputs.combiner_alphaadd[0] = userdata->ColorInputs.combiner_alphaadd[1] = &OneColor.i.a;
-
- userdata->ColorInputs.blender1a_r[0] = userdata->ColorInputs.blender1a_r[1] = &userdata->PixelColor.i.r;
- userdata->ColorInputs.blender1a_g[0] = userdata->ColorInputs.blender1a_g[1] = &userdata->PixelColor.i.g;
- userdata->ColorInputs.blender1a_b[0] = userdata->ColorInputs.blender1a_b[1] = &userdata->PixelColor.i.b;
- userdata->ColorInputs.blender1b_a[0] = userdata->ColorInputs.blender1b_a[1] = &userdata->PixelColor.i.a;
- userdata->ColorInputs.blender2a_r[0] = userdata->ColorInputs.blender2a_r[1] = &userdata->PixelColor.i.r;
- userdata->ColorInputs.blender2a_g[0] = userdata->ColorInputs.blender2a_g[1] = &userdata->PixelColor.i.g;
- userdata->ColorInputs.blender2a_b[0] = userdata->ColorInputs.blender2a_b[1] = &userdata->PixelColor.i.b;
- userdata->ColorInputs.blender2b_a[0] = userdata->ColorInputs.blender2b_a[1] = &userdata->PixelColor.i.a;
+ userdata->m_blend_color = m_blend_color;
+ userdata->m_prim_color = m_prim_color;
+ userdata->m_env_color = m_env_color;
+ userdata->m_fog_color = m_fog_color;
+ userdata->m_key_scale = m_key_scale;
+ userdata->m_lod_fraction = m_lod_fraction;
+ userdata->m_prim_lod_fraction = m_prim_lod_fraction;
+
+ userdata->m_color_inputs.combiner_rgbsub_a_r[0] = userdata->m_color_inputs.combiner_rgbsub_a_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbsub_a_g[0] = userdata->m_color_inputs.combiner_rgbsub_a_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbsub_a_b[0] = userdata->m_color_inputs.combiner_rgbsub_a_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbsub_b_r[0] = userdata->m_color_inputs.combiner_rgbsub_b_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbsub_b_g[0] = userdata->m_color_inputs.combiner_rgbsub_b_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbsub_b_b[0] = userdata->m_color_inputs.combiner_rgbsub_b_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbmul_r[0] = userdata->m_color_inputs.combiner_rgbmul_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbmul_g[0] = userdata->m_color_inputs.combiner_rgbmul_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbmul_b[0] = userdata->m_color_inputs.combiner_rgbmul_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_rgbadd_r[0] = userdata->m_color_inputs.combiner_rgbadd_r[1] = &m_one.i.r;
+ userdata->m_color_inputs.combiner_rgbadd_g[0] = userdata->m_color_inputs.combiner_rgbadd_g[1] = &m_one.i.g;
+ userdata->m_color_inputs.combiner_rgbadd_b[0] = userdata->m_color_inputs.combiner_rgbadd_b[1] = &m_one.i.b;
+ userdata->m_color_inputs.combiner_alphasub_a[0] = userdata->m_color_inputs.combiner_alphasub_a[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphasub_b[0] = userdata->m_color_inputs.combiner_alphasub_b[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphamul[0] = userdata->m_color_inputs.combiner_alphamul[1] = &m_one.i.a;
+ userdata->m_color_inputs.combiner_alphaadd[0] = userdata->m_color_inputs.combiner_alphaadd[1] = &m_one.i.a;
+
+ userdata->m_color_inputs.blender1a_r[0] = userdata->m_color_inputs.blender1a_r[1] = &userdata->m_pixel_color.i.r;
+ userdata->m_color_inputs.blender1a_g[0] = userdata->m_color_inputs.blender1a_g[1] = &userdata->m_pixel_color.i.g;
+ userdata->m_color_inputs.blender1a_b[0] = userdata->m_color_inputs.blender1a_b[1] = &userdata->m_pixel_color.i.b;
+ userdata->m_color_inputs.blender1b_a[0] = userdata->m_color_inputs.blender1b_a[1] = &userdata->m_pixel_color.i.a;
+ userdata->m_color_inputs.blender2a_r[0] = userdata->m_color_inputs.blender2a_r[1] = &userdata->m_pixel_color.i.r;
+ userdata->m_color_inputs.blender2a_g[0] = userdata->m_color_inputs.blender2a_g[1] = &userdata->m_pixel_color.i.g;
+ userdata->m_color_inputs.blender2a_b[0] = userdata->m_color_inputs.blender2a_b[1] = &userdata->m_pixel_color.i.b;
+ userdata->m_color_inputs.blender2b_a[0] = userdata->m_color_inputs.blender2b_a[1] = &userdata->m_pixel_color.i.a;
// Setup blender data for this scanline
- SetBlenderInput(0, 0, &userdata->ColorInputs.blender1a_r[0],
- &userdata->ColorInputs.blender1a_g[0],
- &userdata->ColorInputs.blender1a_b[0],
- &userdata->ColorInputs.blender1b_a[0], OtherModes.blend_m1a_0, OtherModes.blend_m1b_0, userdata);
- SetBlenderInput(0, 1, &userdata->ColorInputs.blender2a_r[0],
- &userdata->ColorInputs.blender2a_g[0],
- &userdata->ColorInputs.blender2a_b[0],
- &userdata->ColorInputs.blender2b_a[0], OtherModes.blend_m2a_0, OtherModes.blend_m2b_0, userdata);
- SetBlenderInput(1, 0, &userdata->ColorInputs.blender1a_r[1],
- &userdata->ColorInputs.blender1a_g[1],
- &userdata->ColorInputs.blender1a_b[1],
- &userdata->ColorInputs.blender1b_a[1], OtherModes.blend_m1a_1, OtherModes.blend_m1b_1, userdata);
- SetBlenderInput(1, 1, &userdata->ColorInputs.blender2a_r[1],
- &userdata->ColorInputs.blender2a_g[1],
- &userdata->ColorInputs.blender2a_b[1],
- &userdata->ColorInputs.blender2b_a[1], OtherModes.blend_m2a_1, OtherModes.blend_m2b_1, userdata);
+ set_blender_input(0, 0, &userdata->m_color_inputs.blender1a_r[0],
+ &userdata->m_color_inputs.blender1a_g[0],
+ &userdata->m_color_inputs.blender1a_b[0],
+ &userdata->m_color_inputs.blender1b_a[0], m_other_modes.blend_m1a_0, m_other_modes.blend_m1b_0, userdata);
+ set_blender_input(0, 1, &userdata->m_color_inputs.blender2a_r[0],
+ &userdata->m_color_inputs.blender2a_g[0],
+ &userdata->m_color_inputs.blender2a_b[0],
+ &userdata->m_color_inputs.blender2b_a[0], m_other_modes.blend_m2a_0, m_other_modes.blend_m2b_0, userdata);
+ set_blender_input(1, 0, &userdata->m_color_inputs.blender1a_r[1],
+ &userdata->m_color_inputs.blender1a_g[1],
+ &userdata->m_color_inputs.blender1a_b[1],
+ &userdata->m_color_inputs.blender1b_a[1], m_other_modes.blend_m1a_1, m_other_modes.blend_m1b_1, userdata);
+ set_blender_input(1, 1, &userdata->m_color_inputs.blender2a_r[1],
+ &userdata->m_color_inputs.blender2a_g[1],
+ &userdata->m_color_inputs.blender2a_b[1],
+ &userdata->m_color_inputs.blender2b_a[1], m_other_modes.blend_m2a_1, m_other_modes.blend_m2b_1, userdata);
// Setup color combiner data for this scanline
- SetSubAInputRGB(&userdata->ColorInputs.combiner_rgbsub_a_r[0], &userdata->ColorInputs.combiner_rgbsub_a_g[0], &userdata->ColorInputs.combiner_rgbsub_a_b[0], m_combine.sub_a_rgb0, userdata);
- SetSubBInputRGB(&userdata->ColorInputs.combiner_rgbsub_b_r[0], &userdata->ColorInputs.combiner_rgbsub_b_g[0], &userdata->ColorInputs.combiner_rgbsub_b_b[0], m_combine.sub_b_rgb0, userdata);
- SetMulInputRGB(&userdata->ColorInputs.combiner_rgbmul_r[0], &userdata->ColorInputs.combiner_rgbmul_g[0], &userdata->ColorInputs.combiner_rgbmul_b[0], m_combine.mul_rgb0, userdata);
- SetAddInputRGB(&userdata->ColorInputs.combiner_rgbadd_r[0], &userdata->ColorInputs.combiner_rgbadd_g[0], &userdata->ColorInputs.combiner_rgbadd_b[0], m_combine.add_rgb0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_a[0], m_combine.sub_a_a0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_b[0], m_combine.sub_b_a0, userdata);
- SetMulInputAlpha(&userdata->ColorInputs.combiner_alphamul[0], m_combine.mul_a0, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphaadd[0], m_combine.add_a0, userdata);
-
- SetSubAInputRGB(&userdata->ColorInputs.combiner_rgbsub_a_r[1], &userdata->ColorInputs.combiner_rgbsub_a_g[1], &userdata->ColorInputs.combiner_rgbsub_a_b[1], m_combine.sub_a_rgb1, userdata);
- SetSubBInputRGB(&userdata->ColorInputs.combiner_rgbsub_b_r[1], &userdata->ColorInputs.combiner_rgbsub_b_g[1], &userdata->ColorInputs.combiner_rgbsub_b_b[1], m_combine.sub_b_rgb1, userdata);
- SetMulInputRGB(&userdata->ColorInputs.combiner_rgbmul_r[1], &userdata->ColorInputs.combiner_rgbmul_g[1], &userdata->ColorInputs.combiner_rgbmul_b[1], m_combine.mul_rgb1, userdata);
- SetAddInputRGB(&userdata->ColorInputs.combiner_rgbadd_r[1], &userdata->ColorInputs.combiner_rgbadd_g[1], &userdata->ColorInputs.combiner_rgbadd_b[1], m_combine.add_rgb1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_a[1], m_combine.sub_a_a1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphasub_b[1], m_combine.sub_b_a1, userdata);
- SetMulInputAlpha(&userdata->ColorInputs.combiner_alphamul[1], m_combine.mul_a1, userdata);
- SetSubInputAlpha(&userdata->ColorInputs.combiner_alphaadd[1], m_combine.add_a1, userdata);
+ set_suba_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_a_r[0], &userdata->m_color_inputs.combiner_rgbsub_a_g[0], &userdata->m_color_inputs.combiner_rgbsub_a_b[0], m_combine.sub_a_rgb0, userdata);
+ set_subb_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_b_r[0], &userdata->m_color_inputs.combiner_rgbsub_b_g[0], &userdata->m_color_inputs.combiner_rgbsub_b_b[0], m_combine.sub_b_rgb0, userdata);
+ set_mul_input_rgb(&userdata->m_color_inputs.combiner_rgbmul_r[0], &userdata->m_color_inputs.combiner_rgbmul_g[0], &userdata->m_color_inputs.combiner_rgbmul_b[0], m_combine.mul_rgb0, userdata);
+ set_add_input_rgb(&userdata->m_color_inputs.combiner_rgbadd_r[0], &userdata->m_color_inputs.combiner_rgbadd_g[0], &userdata->m_color_inputs.combiner_rgbadd_b[0], m_combine.add_rgb0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_a[0], m_combine.sub_a_a0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_b[0], m_combine.sub_b_a0, userdata);
+ set_mul_input_alpha(&userdata->m_color_inputs.combiner_alphamul[0], m_combine.mul_a0, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphaadd[0], m_combine.add_a0, userdata);
+
+ set_suba_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_a_r[1], &userdata->m_color_inputs.combiner_rgbsub_a_g[1], &userdata->m_color_inputs.combiner_rgbsub_a_b[1], m_combine.sub_a_rgb1, userdata);
+ set_subb_input_rgb(&userdata->m_color_inputs.combiner_rgbsub_b_r[1], &userdata->m_color_inputs.combiner_rgbsub_b_g[1], &userdata->m_color_inputs.combiner_rgbsub_b_b[1], m_combine.sub_b_rgb1, userdata);
+ set_mul_input_rgb(&userdata->m_color_inputs.combiner_rgbmul_r[1], &userdata->m_color_inputs.combiner_rgbmul_g[1], &userdata->m_color_inputs.combiner_rgbmul_b[1], m_combine.mul_rgb1, userdata);
+ set_add_input_rgb(&userdata->m_color_inputs.combiner_rgbadd_r[1], &userdata->m_color_inputs.combiner_rgbadd_g[1], &userdata->m_color_inputs.combiner_rgbadd_b[1], m_combine.add_rgb1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_a[1], m_combine.sub_a_a1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphasub_b[1], m_combine.sub_b_a1, userdata);
+ set_mul_input_alpha(&userdata->m_color_inputs.combiner_alphamul[1], m_combine.mul_a1, userdata);
+ set_sub_input_alpha(&userdata->m_color_inputs.combiner_alphaadd[1], m_combine.add_a1, userdata);
}
if (spix == 3)
{
- Spans[spanidx].startx = minxmx;
- Spans[spanidx].stopx = maxxhx;
- compute_cvg_noflip(Spans, majorx, minorx, majorxint, minorxint, j, yh, yl, ycur >> 2);
+ spans[spanidx].startx = minxmx;
+ spans[spanidx].stopx = maxxhx;
+ compute_cvg_noflip(spans, majorx, minorx, majorxint, minorxint, j, yh, yl, ycur >> 2);
}
if (spix == ldflag)
{
- ((rdp_span_aux*)Spans[spanidx].userdata)->m_unscissored_rx = xend;
+ ((rdp_span_aux*)spans[spanidx].userdata)->m_unscissored_rx = xend;
xfrac = ((xright >> 8) & 0xff);
- Spans[spanidx].param[SPAN_R].start = ((r >> 9) << 9) + drdiff - (xfrac * drdxh);
- Spans[spanidx].param[SPAN_G].start = ((g >> 9) << 9) + dgdiff - (xfrac * dgdxh);
- Spans[spanidx].param[SPAN_B].start = ((b >> 9) << 9) + dbdiff - (xfrac * dbdxh);
- Spans[spanidx].param[SPAN_A].start = ((a >> 9) << 9) + dadiff - (xfrac * dadxh);
- Spans[spanidx].param[SPAN_S].start = (((s >> 9) << 9) + dsdiff - (xfrac * dsdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_T].start = (((t >> 9) << 9) + dtdiff - (xfrac * dtdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_W].start = (((w >> 9) << 9) + dwdiff - (xfrac * dwdxh)) & ~0x1f;
- Spans[spanidx].param[SPAN_Z].start = ((z >> 9) << 9) + dzdiff - (xfrac * dzdxh);
+ spans[spanidx].param[SPAN_R].start = ((r >> 9) << 9) + drdiff - (xfrac * drdxh);
+ spans[spanidx].param[SPAN_G].start = ((g >> 9) << 9) + dgdiff - (xfrac * dgdxh);
+ spans[spanidx].param[SPAN_B].start = ((b >> 9) << 9) + dbdiff - (xfrac * dbdxh);
+ spans[spanidx].param[SPAN_A].start = ((a >> 9) << 9) + dadiff - (xfrac * dadxh);
+ spans[spanidx].param[SPAN_S].start = (((s >> 9) << 9) + dsdiff - (xfrac * dsdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_T].start = (((t >> 9) << 9) + dtdiff - (xfrac * dtdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_W].start = (((w >> 9) << 9) + dwdiff - (xfrac * dwdxh)) & ~0x1f;
+ spans[spanidx].param[SPAN_Z].start = ((z >> 9) << 9) + dzdiff - (xfrac * dzdxh);
}
}
@@ -2415,10 +2404,10 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
if(!new_object && valid)
{
- RenderSpans(yh >> 2, yl >> 2, tilenum, flip ? true : false, Spans, rect, object);
+ render_spans(yh >> 2, yl >> 2, tilenum, flip ? true : false, spans, rect, object);
}
- //wait("DrawTriangle");
+ //wait("draw_triangle");
}
/*****************************************************************************/
@@ -2426,82 +2415,78 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect)
////////////////////////
// RDP COMMANDS
////////////////////////
-void n64_rdp::Triangle(bool shade, bool texture, bool zbuffer)
+
+void n64_rdp::triangle(bool shade, bool texture, bool zbuffer)
{
- DrawTriangle(shade, texture, zbuffer, false);
+ draw_triangle(shade, texture, zbuffer, false);
m_pipe_clean = false;
- //wait();
}
-void n64_rdp::CmdTriangle(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle(UINT32 w1, UINT32 w2)
{
- Triangle(false, false, false);
+ triangle(false, false, false);
}
-void n64_rdp::CmdTriangleZ(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_z(UINT32 w1, UINT32 w2)
{
- Triangle(false, false, true);
+ triangle(false, false, true);
}
-void n64_rdp::CmdTriangleT(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_t(UINT32 w1, UINT32 w2)
{
- Triangle(false, true, false);
+ triangle(false, true, false);
}
-void n64_rdp::CmdTriangleTZ(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_tz(UINT32 w1, UINT32 w2)
{
- Triangle(false, true, true);
+ triangle(false, true, true);
}
-void n64_rdp::CmdTriangleS(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_s(UINT32 w1, UINT32 w2)
{
- Triangle(true, false, false);
+ triangle(true, false, false);
}
-void n64_rdp::CmdTriangleSZ(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_sz(UINT32 w1, UINT32 w2)
{
- Triangle(true, false, true);
+ triangle(true, false, true);
}
-void n64_rdp::CmdTriangleST(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_st(UINT32 w1, UINT32 w2)
{
- Triangle(true, true, false);
+ triangle(true, true, false);
}
-void n64_rdp::CmdTriangleSTZ(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_triangle_stz(UINT32 w1, UINT32 w2)
{
- Triangle(true, true, true);
+ triangle(true, true, true);
}
-void n64_rdp::CmdTexRect(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_tex_rect(UINT32 w1, UINT32 w2)
{
- //if(m_pending_mode_block) { wait("Block on pending mode-change"); m_pending_mode_block = false; }
+ const UINT32* data = m_cmd_data + m_cmd_cur;
- UINT32 *data = m_cmd_data + m_cmd_cur;
+ const UINT32 w3 = data[2];
+ const UINT32 w4 = data[3];
- UINT32 w3 = data[2];
- UINT32 w4 = data[3];
+ const INT32 tilenum = (w2 >> 24) & 0x7;
+ const INT32 xh = (w2 >> 12) & 0xfff;
+ const INT32 xl = (w1 >> 12) & 0xfff;
+ const INT32 yh = (w2 >> 0) & 0xfff;
+ INT32 yl = (w1 >> 0) & 0xfff;
- UINT32 tilenum = (w2 >> 24) & 0x7;
- UINT32 xl = (w1 >> 12) & 0xfff;
- UINT32 yl = (w1 >> 0) & 0xfff;
- UINT32 xh = (w2 >> 12) & 0xfff;
- UINT32 yh = (w2 >> 0) & 0xfff;
- INT32 s = (w3 >> 16) & 0xffff;
- INT32 t = (w3 >> 0) & 0xffff;
- INT32 dsdx = (w4 >> 16) & 0xffff;
- INT32 dtdy = (w4 >> 0) & 0xffff;
+ const INT32 s = (w3 >> 16) & 0xffff;
+ const INT32 t = (w3 >> 0) & 0xffff;
+ const INT32 dsdx = SIGN16((w4 >> 16) & 0xffff);
+ const INT32 dtdy = SIGN16((w4 >> 0) & 0xffff);
- dsdx = SIGN16(dsdx);
- dtdy = SIGN16(dtdy);
-
- if (OtherModes.cycle_type == CYCLE_TYPE_FILL || OtherModes.cycle_type == CYCLE_TYPE_COPY)
+ if (m_other_modes.cycle_type == CYCLE_TYPE_FILL || m_other_modes.cycle_type == CYCLE_TYPE_COPY)
{
yl |= 3;
}
- UINT32 xlint = (xl >> 2) & 0x3ff;
- UINT32 xhint = (xh >> 2) & 0x3ff;
+ const INT32 xlint = (xl >> 2) & 0x3ff;
+ const INT32 xhint = (xh >> 2) & 0x3ff;
UINT32* ewdata = m_temp_rect_data;
ewdata[0] = (0x24 << 24) | ((0x80 | tilenum) << 16) | yl; // command, flipped, tile, yl
@@ -2531,38 +2516,34 @@ void n64_rdp::CmdTexRect(UINT32 w1, UINT32 w2)
ewdata[39] = 0;//dwdy frac
memset(&ewdata[40], 0, 4 * sizeof(UINT32));//depth
- DrawTriangle(true, true, false, true);
+ draw_triangle(true, true, false, true);
}
-void n64_rdp::CmdTexRectFlip(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_tex_rect_flip(UINT32 w1, UINT32 w2)
{
- //if(m_pending_mode_block) { wait("Block on pending mode-change"); m_pending_mode_block = false; }
+ const UINT32* data = m_cmd_data + m_cmd_cur;
- UINT32 *data = m_cmd_data + m_cmd_cur;
+ const UINT32 w3 = data[2];
+ const UINT32 w4 = data[3];
- UINT32 w3 = data[2];
- UINT32 w4 = data[3];
+ const INT32 tilenum = (w2 >> 24) & 0x7;
+ const INT32 xh = (w2 >> 12) & 0xfff;
+ const INT32 xl = (w1 >> 12) & 0xfff;
+ const INT32 yh = (w2 >> 0) & 0xfff;
+ INT32 yl = (w1 >> 0) & 0xfff;
- UINT32 tilenum = (w2 >> 24) & 0x7;
- UINT32 xl = (w1 >> 12) & 0xfff;
- UINT32 yl = (w1 >> 0) & 0xfff;
- UINT32 xh = (w2 >> 12) & 0xfff;
- UINT32 yh = (w2 >> 0) & 0xfff;
- INT32 s = (w3 >> 16) & 0xffff;
- INT32 t = (w3 >> 0) & 0xffff;
- INT32 dsdx = (w4 >> 16) & 0xffff;
- INT32 dtdy = (w4 >> 0) & 0xffff;
+ const INT32 s = (w3 >> 16) & 0xffff;
+ const INT32 t = (w3 >> 0) & 0xffff;
+ const INT32 dsdx = SIGN16((w4 >> 16) & 0xffff);
+ const INT32 dtdy = SIGN16((w4 >> 0) & 0xffff);
- dsdx = SIGN16(dsdx);
- dtdy = SIGN16(dtdy);
-
- if (OtherModes.cycle_type == CYCLE_TYPE_FILL || OtherModes.cycle_type == CYCLE_TYPE_COPY)
+ if (m_other_modes.cycle_type == CYCLE_TYPE_FILL || m_other_modes.cycle_type == CYCLE_TYPE_COPY)
{
yl |= 3;
}
- UINT32 xlint = (xl >> 2) & 0x3ff;
- UINT32 xhint = (xh >> 2) & 0x3ff;
+ const INT32 xlint = (xl >> 2) & 0x3ff;
+ const INT32 xhint = (xh >> 2) & 0x3ff;
UINT32* ewdata = m_temp_rect_data;
ewdata[0] = (0x25 << 24) | ((0x80 | tilenum) << 16) | yl;//command, flipped, tile, yl
@@ -2592,48 +2573,48 @@ void n64_rdp::CmdTexRectFlip(UINT32 w1, UINT32 w2)
ewdata[39] = 0;//dwdy frac
memset(&ewdata[40], 0, 4 * sizeof(UINT32));//depth
- DrawTriangle(true, true, false, true);
+ draw_triangle(true, true, false, true);
}
-void n64_rdp::CmdSyncLoad(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_sync_load(UINT32 w1, UINT32 w2)
{
//wait("SyncLoad");
}
-void n64_rdp::CmdSyncPipe(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_sync_pipe(UINT32 w1, UINT32 w2)
{
//wait("SyncPipe");
}
-void n64_rdp::CmdSyncTile(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_sync_tile(UINT32 w1, UINT32 w2)
{
//wait("SyncTile");
}
-void n64_rdp::CmdSyncFull(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_sync_full(UINT32 w1, UINT32 w2)
{
//wait("SyncFull");
dp_full_sync(*m_machine);
}
-void n64_rdp::CmdSetKeyGB(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_key_gb(UINT32 w1, UINT32 w2)
{
- KeyScale.i.b = w2 & 0xff;
- KeyScale.i.g = (w2 >> 16) & 0xff;
+ m_key_scale.i.b = w2 & 0xff;
+ m_key_scale.i.g = (w2 >> 16) & 0xff;
}
-void n64_rdp::CmdSetKeyR(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_key_r(UINT32 w1, UINT32 w2)
{
- KeyScale.i.r = w2 & 0xff;
+ m_key_scale.i.r = w2 & 0xff;
}
-void n64_rdp::CmdSetFillColor32(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_fill_color32(UINT32 w1, UINT32 w2)
{
//wait("SetFillColor");
- FillColor = w2;
+ m_fill_color = w2;
}
-void n64_rdp::CmdSetConvert(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_convert(UINT32 w1, UINT32 w2)
{
if(!m_pipe_clean) { m_pipe_clean = true; wait("SetConvert"); }
INT32 k0 = (w1 >> 13) & 0xff;
@@ -2648,88 +2629,87 @@ void n64_rdp::CmdSetConvert(UINT32 w1, UINT32 w2)
k3 = ((w2 >> 26) & 1) ? (-(0x100 - k3)) : k3;
k4 = ((w2 >> 17) & 1) ? (-(0x100 - k4)) : k4;
k5 = ((w2 >> 8) & 1) ? (-(0x100 - k5)) : k5;
- SetYUVFactors(k0, k1, k2, k3, k4, k5);
+ set_yuv_factors(k0, k1, k2, k3, k4, k5);
}
-void n64_rdp::CmdSetScissor(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_scissor(UINT32 w1, UINT32 w2)
{
- Scissor.m_xh = ((w1 >> 12) & 0xfff) >> 2;
- Scissor.m_yh = ((w1 >> 0) & 0xfff) >> 2;
- Scissor.m_xl = ((w2 >> 12) & 0xfff) >> 2;
- Scissor.m_yl = ((w2 >> 0) & 0xfff) >> 2;
+ m_scissor.m_xh = ((w1 >> 12) & 0xfff) >> 2;
+ m_scissor.m_yh = ((w1 >> 0) & 0xfff) >> 2;
+ m_scissor.m_xl = ((w2 >> 12) & 0xfff) >> 2;
+ m_scissor.m_yl = ((w2 >> 0) & 0xfff) >> 2;
// TODO: handle f & o?
}
-void n64_rdp::CmdSetPrimDepth(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_prim_depth(UINT32 w1, UINT32 w2)
{
- MiscState.PrimitiveZ = (UINT16)(w2 >> 16) & 0x7fff;
- MiscState.PrimitiveDZ = (UINT16)(w1);
+ m_misc_state.m_primitive_z = w2 & 0x7fff0000;
+ m_misc_state.m_primitive_dz = (UINT16)(w1);
}
-void n64_rdp::CmdSetOtherModes(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_other_modes(UINT32 w1, UINT32 w2)
{
//wait("SetOtherModes");
- OtherModes.cycle_type = (w1 >> 20) & 0x3; // 01
- OtherModes.persp_tex_en = (w1 & 0x80000) ? 1 : 0; // 1
- OtherModes.detail_tex_en = (w1 & 0x40000) ? 1 : 0; // 0
- OtherModes.sharpen_tex_en = (w1 & 0x20000) ? 1 : 0; // 0
- OtherModes.tex_lod_en = (w1 & 0x10000) ? 1 : 0; // 0
- OtherModes.en_tlut = (w1 & 0x08000) ? 1 : 0; // 0
- OtherModes.tlut_type = (w1 & 0x04000) ? 1 : 0; // 0
- OtherModes.sample_type = (w1 & 0x02000) ? 1 : 0; // 1
- OtherModes.mid_texel = (w1 & 0x01000) ? 1 : 0; // 0
- OtherModes.bi_lerp0 = (w1 & 0x00800) ? 1 : 0; // 1
- OtherModes.bi_lerp1 = (w1 & 0x00400) ? 1 : 0; // 1
- OtherModes.convert_one = (w1 & 0x00200) ? 1 : 0; // 0
- OtherModes.key_en = (w1 & 0x00100) ? 1 : 0; // 0
- OtherModes.rgb_dither_sel = (w1 >> 6) & 0x3; // 00
- OtherModes.alpha_dither_sel = (w1 >> 4) & 0x3; // 01
- OtherModes.blend_m1a_0 = (w2 >> 30) & 0x3; // 11
- OtherModes.blend_m1a_1 = (w2 >> 28) & 0x3; // 00
- OtherModes.blend_m1b_0 = (w2 >> 26) & 0x3; // 10
- OtherModes.blend_m1b_1 = (w2 >> 24) & 0x3; // 00
- OtherModes.blend_m2a_0 = (w2 >> 22) & 0x3; // 00
- OtherModes.blend_m2a_1 = (w2 >> 20) & 0x3; // 01
- OtherModes.blend_m2b_0 = (w2 >> 18) & 0x3; // 00
- OtherModes.blend_m2b_1 = (w2 >> 16) & 0x3; // 01
- OtherModes.force_blend = (w2 >> 14) & 1; // 0
- OtherModes.blend_shift = OtherModes.force_blend ? 5 : 2;
- OtherModes.alpha_cvg_select = (w2 >> 13) & 1; // 1
- OtherModes.cvg_times_alpha = (w2 >> 12) & 1; // 0
- OtherModes.z_mode = (w2 >> 10) & 0x3; // 00
- OtherModes.cvg_dest = (w2 >> 8) & 0x3; // 00
- OtherModes.color_on_cvg = (w2 >> 7) & 1; // 0
- OtherModes.image_read_en = (w2 >> 6) & 1; // 1
- OtherModes.z_update_en = (w2 >> 5) & 1; // 1
- OtherModes.z_compare_en = (w2 >> 4) & 1; // 1
- OtherModes.antialias_en = (w2 >> 3) & 1; // 1
- OtherModes.z_source_sel = (w2 >> 2) & 1; // 0
- OtherModes.dither_alpha_en = (w2 >> 1) & 1; // 0
- OtherModes.alpha_compare_en = (w2) & 1; // 0
- OtherModes.alpha_dither_mode = (OtherModes.alpha_compare_en << 1) | OtherModes.dither_alpha_en;
-}
-
-void n64_rdp::CmdLoadTLUT(UINT32 w1, UINT32 w2)
+ m_other_modes.cycle_type = (w1 >> 20) & 0x3; // 01
+ m_other_modes.persp_tex_en = (w1 & 0x80000) ? 1 : 0; // 1
+ m_other_modes.detail_tex_en = (w1 & 0x40000) ? 1 : 0; // 0
+ m_other_modes.sharpen_tex_en = (w1 & 0x20000) ? 1 : 0; // 0
+ m_other_modes.tex_lod_en = (w1 & 0x10000) ? 1 : 0; // 0
+ m_other_modes.en_tlut = (w1 & 0x08000) ? 1 : 0; // 0
+ m_other_modes.tlut_type = (w1 & 0x04000) ? 1 : 0; // 0
+ m_other_modes.sample_type = (w1 & 0x02000) ? 1 : 0; // 1
+ m_other_modes.mid_texel = (w1 & 0x01000) ? 1 : 0; // 0
+ m_other_modes.bi_lerp0 = (w1 & 0x00800) ? 1 : 0; // 1
+ m_other_modes.bi_lerp1 = (w1 & 0x00400) ? 1 : 0; // 1
+ m_other_modes.convert_one = (w1 & 0x00200) ? 1 : 0; // 0
+ m_other_modes.key_en = (w1 & 0x00100) ? 1 : 0; // 0
+ m_other_modes.rgb_dither_sel = (w1 >> 6) & 0x3; // 00
+ m_other_modes.alpha_dither_sel = (w1 >> 4) & 0x3; // 01
+ m_other_modes.blend_m1a_0 = (w2 >> 30) & 0x3; // 11
+ m_other_modes.blend_m1a_1 = (w2 >> 28) & 0x3; // 00
+ m_other_modes.blend_m1b_0 = (w2 >> 26) & 0x3; // 10
+ m_other_modes.blend_m1b_1 = (w2 >> 24) & 0x3; // 00
+ m_other_modes.blend_m2a_0 = (w2 >> 22) & 0x3; // 00
+ m_other_modes.blend_m2a_1 = (w2 >> 20) & 0x3; // 01
+ m_other_modes.blend_m2b_0 = (w2 >> 18) & 0x3; // 00
+ m_other_modes.blend_m2b_1 = (w2 >> 16) & 0x3; // 01
+ m_other_modes.force_blend = (w2 >> 14) & 1; // 0
+ m_other_modes.blend_shift = m_other_modes.force_blend ? 5 : 2;
+ m_other_modes.alpha_cvg_select = (w2 >> 13) & 1; // 1
+ m_other_modes.cvg_times_alpha = (w2 >> 12) & 1; // 0
+ m_other_modes.z_mode = (w2 >> 10) & 0x3; // 00
+ m_other_modes.cvg_dest = (w2 >> 8) & 0x3; // 00
+ m_other_modes.color_on_cvg = (w2 >> 7) & 1; // 0
+ m_other_modes.image_read_en = (w2 >> 6) & 1; // 1
+ m_other_modes.z_update_en = (w2 >> 5) & 1; // 1
+ m_other_modes.z_compare_en = (w2 >> 4) & 1; // 1
+ m_other_modes.antialias_en = (w2 >> 3) & 1; // 1
+ m_other_modes.z_source_sel = (w2 >> 2) & 1; // 0
+ m_other_modes.dither_alpha_en = (w2 >> 1) & 1; // 0
+ m_other_modes.alpha_compare_en = (w2) & 1; // 0
+ m_other_modes.alpha_dither_mode = (m_other_modes.alpha_compare_en << 1) | m_other_modes.dither_alpha_en;
+}
+
+void n64_rdp::cmd_load_tlut(UINT32 w1, UINT32 w2)
{
//wait("LoadTLUT");
- N64Tile* tile = m_tiles;
+ n64_tile_t* tile = m_tiles;
- int tilenum = (w2 >> 24) & 0x7;
- int sl = tile[tilenum].sl = ((w1 >> 12) & 0xfff);
- int tl = tile[tilenum].tl = w1 & 0xfff;
- int sh = tile[tilenum].sh = ((w2 >> 12) & 0xfff);
- int th = tile[tilenum].th = w2 & 0xfff;
+ const INT32 tilenum = (w2 >> 24) & 0x7;
+ const INT32 sl = tile[tilenum].sl = ((w1 >> 12) & 0xfff);
+ const INT32 tl = tile[tilenum].tl = w1 & 0xfff;
+ const INT32 sh = tile[tilenum].sh = ((w2 >> 12) & 0xfff);
+ const INT32 th = tile[tilenum].th = w2 & 0xfff;
if (tl != th)
{
fatalerror("Load tlut: tl=%d, th=%d\n",tl,th);
}
- int count = (sh >> 2) - (sl >> 2) + 1;
- count <<= 2;
+ const INT32 count = ((sh >> 2) - (sl >> 2) + 1) << 2;
- switch (MiscState.TISize)
+ switch (m_misc_state.m_ti_size)
{
case PIXEL_SIZE_16BIT:
{
@@ -2737,11 +2717,11 @@ void n64_rdp::CmdLoadTLUT(UINT32 w1, UINT32 w2)
{
fatalerror("rdp_load_tlut: loading tlut into low half at %d qwords\n",tile[tilenum].tmem);
}
- UINT32 srcstart = (MiscState.TIAddress + (tl >> 2) * (MiscState.TIWidth << 1) + (sl >> 1)) >> 1;
- UINT16 *dst = GetTMEM16();
- UINT32 dststart = tile[tilenum].tmem << 2;
+ INT32 srcstart = (m_misc_state.m_ti_address + (tl >> 2) * (m_misc_state.m_ti_width << 1) + (sl >> 1)) >> 1;
+ INT32 dststart = tile[tilenum].tmem << 2;
+ UINT16* dst = get_tmem16();
- for (int i = 0; i < count; i += 4)
+ for (INT32 i = 0; i < count; i += 4)
{
if (dststart < 2048)
{
@@ -2755,15 +2735,15 @@ void n64_rdp::CmdLoadTLUT(UINT32 w1, UINT32 w2)
}
break;
}
- default: fatalerror("RDP: load_tlut: size = %d\n", MiscState.TISize);
+ default: fatalerror("RDP: load_tlut: size = %d\n", m_misc_state.m_ti_size);
}
}
-void n64_rdp::CmdSetTileSize(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_tile_size(UINT32 w1, UINT32 w2)
{
//wait("SetTileSize");
- const int tilenum = (w2 >> 24) & 0x7;
+ const INT32 tilenum = (w2 >> 24) & 0x7;
m_tiles[tilenum].sl = (w1 >> 12) & 0xfff;
m_tiles[tilenum].tl = (w1 >> 0) & 0xfff;
@@ -2771,19 +2751,18 @@ void n64_rdp::CmdSetTileSize(UINT32 w1, UINT32 w2)
m_tiles[tilenum].th = (w2 >> 0) & 0xfff;
}
-void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_load_block(UINT32 w1, UINT32 w2)
{
//wait("LoadBlock");
- N64Tile* tile = m_tiles;
+ n64_tile_t* tile = m_tiles;
- int tilenum = (w2 >> 24) & 0x7;
- UINT16* tc = GetTMEM16();
+ const INT32 tilenum = (w2 >> 24) & 0x7;
+ UINT16* tc = get_tmem16();
- UINT16 sl, sh, tl;
- tile[tilenum].sl = sl = ((w1 >> 12) & 0xfff);
- tile[tilenum].tl = tl = ((w1 >> 0) & 0xfff);
- tile[tilenum].sh = sh = ((w2 >> 12) & 0xfff);
- UINT16 dxt = ((w2 >> 0) & 0xfff);
+ INT32 sl = tile[tilenum].sl = ((w1 >> 12) & 0xfff);
+ INT32 tl = tile[tilenum].tl = ((w1 >> 0) & 0xfff);
+ INT32 sh = tile[tilenum].sh = ((w2 >> 12) & 0xfff);
+ const INT32 dxt = ((w2 >> 0) & 0xfff);
if (sh < sl)
{
@@ -2792,34 +2771,29 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
INT32 width = (sh - sl) + 1;
- width = (width << MiscState.TISize) >> 1;
+ width = (width << m_misc_state.m_ti_size) >> 1;
if (width & 7)
{
width = (width & ~7) + 8;
}
width >>= 3;
- UINT32 tb = tile[tilenum].tmem << 2;
-
- int tiwinwords = MiscState.TIWidth;
- UINT32 slinwords = sl;
+ const INT32 tb = tile[tilenum].tmem << 2;
- tiwinwords = (tiwinwords << MiscState.TISize) >> 2;
- slinwords = (slinwords << MiscState.TISize) >> 2;
+ const INT32 tiwinwords = (m_misc_state.m_ti_width << m_misc_state.m_ti_size) >> 2;
+ const INT32 slinwords = (sl << m_misc_state.m_ti_size) >> 2;
- int ptr = 0, srcptr = 0;
- UINT16 first, sec;
- UINT32 src = (MiscState.TIAddress >> 1) + (tl * tiwinwords) + slinwords;
+ const UINT32 src = (m_misc_state.m_ti_address >> 1) + (tl * tiwinwords) + slinwords;
if (dxt != 0)
{
- int j = 0;
- int t = 0;
- int oldt = 0;
+ INT32 j = 0;
+ INT32 t = 0;
+ INT32 oldt = 0;
if (tile[tilenum].size != PIXEL_SIZE_32BIT && tile[tilenum].format != FORMAT_YUV)
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
oldt = t;
t = ((j >> 11) & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
@@ -2828,8 +2802,8 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
i += tile[tilenum].line;
}
- ptr = tb + (i << 2);
- srcptr = src + (i << 2);
+ INT32 ptr = tb + (i << 2);
+ INT32 srcptr = src + (i << 2);
tc[(ptr ^ t) & 0x7ff] = U_RREADIDX16(srcptr);
tc[((ptr + 1) ^ t) & 0x7ff] = U_RREADIDX16(srcptr + 1);
@@ -2840,7 +2814,7 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
}
else if (tile[tilenum].format == FORMAT_YUV)
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
oldt = t;
t = ((j >> 11) & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
@@ -2849,11 +2823,11 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
i += tile[tilenum].line;
}
- ptr = ((tb + (i << 1)) ^ t) & 0x3ff;
- srcptr = src + (i << 2);
+ INT32 ptr = ((tb + (i << 1)) ^ t) & 0x3ff;
+ INT32 srcptr = src + (i << 2);
- first = U_RREADIDX16(srcptr);
- sec = U_RREADIDX16(srcptr + 1);
+ INT32 first = U_RREADIDX16(srcptr);
+ INT32 sec = U_RREADIDX16(srcptr + 1);
tc[ptr] = ((first >> 8) << 8) | (sec >> 8);
tc[ptr | 0x400] = ((first & 0xff) << 8) | (sec & 0xff);
@@ -2868,15 +2842,15 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
}
else
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
oldt = t;
t = ((j >> 11) & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
if (t != oldt)
i += tile[tilenum].line;
- ptr = ((tb + (i << 1)) ^ t) & 0x3ff;
- srcptr = src + (i << 2);
+ INT32 ptr = ((tb + (i << 1)) ^ t) & 0x3ff;
+ INT32 srcptr = src + (i << 2);
tc[ptr] = U_RREADIDX16(srcptr);
tc[ptr | 0x400] = U_RREADIDX16(srcptr + 1);
@@ -2893,10 +2867,10 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
{
if (tile[tilenum].size != PIXEL_SIZE_32BIT && tile[tilenum].format != FORMAT_YUV)
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
- ptr = tb + (i << 2);
- srcptr = src + (i << 2);
+ INT32 ptr = tb + (i << 2);
+ INT32 srcptr = src + (i << 2);
tc[(ptr ^ WORD_ADDR_XOR) & 0x7ff] = U_RREADIDX16(srcptr);
tc[((ptr + 1) ^ WORD_ADDR_XOR) & 0x7ff] = U_RREADIDX16(srcptr + 1);
tc[((ptr + 2) ^ WORD_ADDR_XOR) & 0x7ff] = U_RREADIDX16(srcptr + 2);
@@ -2905,12 +2879,12 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
}
else if (tile[tilenum].format == FORMAT_YUV)
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
- ptr = ((tb + (i << 1)) ^ WORD_ADDR_XOR) & 0x3ff;
- srcptr = src + (i << 2);
- first = U_RREADIDX16(srcptr);
- sec = U_RREADIDX16(srcptr + 1);
+ INT32 ptr = ((tb + (i << 1)) ^ WORD_ADDR_XOR) & 0x3ff;
+ INT32 srcptr = src + (i << 2);
+ INT32 first = U_RREADIDX16(srcptr);
+ INT32 sec = U_RREADIDX16(srcptr + 1);
tc[ptr] = ((first >> 8) << 8) | (sec >> 8);//UV pair
tc[ptr | 0x400] = ((first & 0xff) << 8) | (sec & 0xff);
@@ -2923,10 +2897,10 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
}
else
{
- for (int i = 0; i < width; i ++)
+ for (INT32 i = 0; i < width; i ++)
{
- ptr = ((tb + (i << 1)) ^ WORD_ADDR_XOR) & 0x3ff;
- srcptr = src + (i << 2);
+ INT32 ptr = ((tb + (i << 1)) ^ WORD_ADDR_XOR) & 0x3ff;
+ INT32 srcptr = src + (i << 2);
tc[ptr] = U_RREADIDX16(srcptr);
tc[ptr | 0x400] = U_RREADIDX16(srcptr + 1);
@@ -2939,29 +2913,29 @@ void n64_rdp::CmdLoadBlock(UINT32 w1, UINT32 w2)
}
}
-void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_load_tile(UINT32 w1, UINT32 w2)
{
//wait("LoadTile");
- N64Tile* tile = m_tiles;
- int tilenum = (w2 >> 24) & 0x7;
+ n64_tile_t* tile = m_tiles;
+ const INT32 tilenum = (w2 >> 24) & 0x7;
tile[tilenum].sl = ((w1 >> 12) & 0xfff);
tile[tilenum].tl = ((w1 >> 0) & 0xfff);
tile[tilenum].sh = ((w2 >> 12) & 0xfff);
tile[tilenum].th = ((w2 >> 0) & 0xfff);
- UINT16 sl = tile[tilenum].sl >> 2;
- UINT16 tl = tile[tilenum].tl >> 2;
- UINT16 sh = tile[tilenum].sh >> 2;
- UINT16 th = tile[tilenum].th >> 2;
+ const INT32 sl = tile[tilenum].sl >> 2;
+ const INT32 tl = tile[tilenum].tl >> 2;
+ const INT32 sh = tile[tilenum].sh >> 2;
+ const INT32 th = tile[tilenum].th >> 2;
- INT32 width = (sh - sl) + 1;
- INT32 height = (th - tl) + 1;
+ const INT32 width = (sh - sl) + 1;
+ const INT32 height = (th - tl) + 1;
/*
- int topad;
- if (MiscState.TISize < 3)
+ INT32 topad;
+ if (m_misc_state.m_ti_size < 3)
{
- topad = (width * MiscState.TISize) & 0x7;
+ topad = (width * m_misc_state.m_ti_size) & 0x7;
}
else
{
@@ -2969,21 +2943,21 @@ void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
}
topad = 0; // ????
*/
- switch (MiscState.TISize)
+ switch (m_misc_state.m_ti_size)
{
case PIXEL_SIZE_8BIT:
{
- UINT32 src = MiscState.TIAddress;
- UINT8 *tc = GetTMEM();
- int tb = tile[tilenum].tmem << 3;
+ const UINT32 src = m_misc_state.m_ti_address;
+ const INT32 tb = tile[tilenum].tmem << 3;
+ UINT8* tc = get_tmem8();
- for (int j = 0; j < height; j++)
+ for (INT32 j = 0; j < height; j++)
{
- int tline = tb + ((tile[tilenum].line << 3) * j);
- int s = ((j + tl) * MiscState.TIWidth) + sl;
+ const INT32 tline = tb + ((tile[tilenum].line << 3) * j);
+ const INT32 s = ((j + tl) * m_misc_state.m_ti_width) + sl;
+ const INT32 xorval8 = ((j & 1) ? BYTE_XOR_DWORD_SWAP : BYTE_ADDR_XOR);
- int xorval8 = ((j & 1) ? BYTE_XOR_DWORD_SWAP : BYTE_ADDR_XOR);
- for (int i = 0; i < width; i++)
+ for (INT32 i = 0; i < width; i++)
{
tc[((tline + i) ^ xorval8) & 0xfff] = U_RREADADDR8(src + s + i);
}
@@ -2992,20 +2966,19 @@ void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
}
case PIXEL_SIZE_16BIT:
{
- UINT32 src = MiscState.TIAddress >> 1;
- UINT16 *tc = GetTMEM16();
- UINT16 yuvword;
+ const UINT32 src = m_misc_state.m_ti_address >> 1;
+ UINT16* tc = get_tmem16();
if (tile[tilenum].format != FORMAT_YUV)
{
- for (int j = 0; j < height; j++)
+ for (INT32 j = 0; j < height; j++)
{
- int tb = tile[tilenum].tmem << 2;
- int tline = tb + ((tile[tilenum].line << 2) * j);
- int s = ((j + tl) * MiscState.TIWidth) + sl;
- int xorval16 = (j & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
+ const INT32 tb = tile[tilenum].tmem << 2;
+ const INT32 tline = tb + ((tile[tilenum].line << 2) * j);
+ const INT32 s = ((j + tl) * m_misc_state.m_ti_width) + sl;
+ const INT32 xorval16 = (j & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
- for (int i = 0; i < width; i++)
+ for (INT32 i = 0; i < width; i++)
{
UINT32 taddr = (tline + i) ^ xorval16;
tc[taddr & 0x7ff] = U_RREADIDX16(src + s + i);
@@ -3014,19 +2987,19 @@ void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
}
else
{
- for (int j = 0; j < height; j++)
+ for (INT32 j = 0; j < height; j++)
{
- int tb = tile[tilenum].tmem << 3;
- int tline = tb + ((tile[tilenum].line << 3) * j);
- int s = ((j + tl) * MiscState.TIWidth) + sl;
- int xorval8 = (j & 1) ? BYTE_XOR_DWORD_SWAP : BYTE_ADDR_XOR;
+ const INT32 tb = tile[tilenum].tmem << 3;
+ const INT32 tline = tb + ((tile[tilenum].line << 3) * j);
+ const INT32 s = ((j + tl) * m_misc_state.m_ti_width) + sl;
+ const INT32 xorval8 = (j & 1) ? BYTE_XOR_DWORD_SWAP : BYTE_ADDR_XOR;
- for (int i = 0; i < width; i++)
+ for (INT32 i = 0; i < width; i++)
{
UINT32 taddr = ((tline + i) ^ xorval8) & 0x7ff;
- yuvword = U_RREADIDX16(src + s + i);
- GetTMEM()[taddr] = yuvword >> 8;
- GetTMEM()[taddr | 0x800] = yuvword & 0xff;
+ UINT16 yuvword = U_RREADIDX16(src + s + i);
+ get_tmem8()[taddr] = yuvword >> 8;
+ get_tmem8()[taddr | 0x800] = yuvword & 0xff;
}
}
}
@@ -3034,17 +3007,17 @@ void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
}
case PIXEL_SIZE_32BIT:
{
- UINT32 src = MiscState.TIAddress >> 2;
- UINT16 *tc16 = GetTMEM16();
- int tb = (tile[tilenum].tmem << 2);
+ const UINT32 src = m_misc_state.m_ti_address >> 2;
+ const INT32 tb = (tile[tilenum].tmem << 2);
+ UINT16* tc16 = get_tmem16();
- for (int j = 0; j < height; j++)
+ for (INT32 j = 0; j < height; j++)
{
- int tline = tb + ((tile[tilenum].line << 2) * j);
+ const INT32 tline = tb + ((tile[tilenum].line << 2) * j);
- int s = ((j + tl) * MiscState.TIWidth) + sl;
- int xorval32cur = (j & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
- for (int i = 0; i < width; i++)
+ const INT32 s = ((j + tl) * m_misc_state.m_ti_width) + sl;
+ const INT32 xorval32cur = (j & 1) ? WORD_XOR_DWORD_SWAP : WORD_ADDR_XOR;
+ for (INT32 i = 0; i < width; i++)
{
UINT32 c = U_RREADIDX32(src + s + i);
UINT32 ptr = ((tline + i) ^ xorval32cur) & 0x3ff;
@@ -3055,16 +3028,16 @@ void n64_rdp::CmdLoadTile(UINT32 w1, UINT32 w2)
break;
}
- default: fatalerror("RDP: load_tile: size = %d\n", MiscState.TISize);
+ default: fatalerror("RDP: load_tile: size = %d\n", m_misc_state.m_ti_size);
}
}
-void n64_rdp::CmdSetTile(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_tile(UINT32 w1, UINT32 w2)
{
//wait("SetTile");
- int tilenum = (w2 >> 24) & 0x7;
- N64Tile* tex_tile = &m_tiles[tilenum];
+ const INT32 tilenum = (w2 >> 24) & 0x7;
+ n64_tile_t* tex_tile = &m_tiles[tilenum];
tex_tile->format = (w1 >> 21) & 0x7;
tex_tile->size = (w1 >> 19) & 0x3;
@@ -3097,22 +3070,22 @@ void n64_rdp::CmdSetTile(UINT32 w1, UINT32 w2)
//m_pending_mode_block = true;
}
-void n64_rdp::CmdFillRect(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_fill_rect(UINT32 w1, UINT32 w2)
{
//if(m_pending_mode_block) { wait("Block on pending mode-change"); m_pending_mode_block = false; }
- UINT32 xl = (w1 >> 12) & 0xfff;
+ const UINT32 xh = (w2 >> 12) & 0xfff;
+ const UINT32 xl = (w1 >> 12) & 0xfff;
+ const UINT32 yh = (w2 >> 0) & 0xfff;
UINT32 yl = (w1 >> 0) & 0xfff;
- UINT32 xh = (w2 >> 12) & 0xfff;
- UINT32 yh = (w2 >> 0) & 0xfff;
- if (OtherModes.cycle_type == CYCLE_TYPE_FILL || OtherModes.cycle_type == CYCLE_TYPE_COPY)
+ if (m_other_modes.cycle_type == CYCLE_TYPE_FILL || m_other_modes.cycle_type == CYCLE_TYPE_COPY)
{
yl |= 3;
}
- UINT32 xlint = (xl >> 2) & 0x3ff;
- UINT32 xhint = (xh >> 2) & 0x3ff;
+ const UINT32 xlint = (xl >> 2) & 0x3ff;
+ const UINT32 xhint = (xh >> 2) & 0x3ff;
UINT32* ewdata = m_temp_rect_data;
ewdata[0] = (0x3680 << 16) | yl;//command, flipped, tile, yl
@@ -3125,32 +3098,32 @@ void n64_rdp::CmdFillRect(UINT32 w1, UINT32 w2)
ewdata[7] = 0;//dxmdy, dxmdy frac
memset(&ewdata[8], 0, 36 * sizeof(UINT32));//shade, texture, depth
- DrawTriangle(false, false, false, true);
+ draw_triangle(false, false, false, true);
}
-void n64_rdp::CmdSetFogColor(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_fog_color(UINT32 w1, UINT32 w2)
{
- FogColor.c = w2;
+ m_fog_color.c = w2;
}
-void n64_rdp::CmdSetBlendColor(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_blend_color(UINT32 w1, UINT32 w2)
{
- BlendColor.c = w2;
+ m_blend_color.c = w2;
}
-void n64_rdp::CmdSetPrimColor(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_prim_color(UINT32 w1, UINT32 w2)
{
- MiscState.MinLevel = (w1 >> 8) & 0x1f;
- PrimLODFraction = w1 & 0xff;
- PrimColor.c = w2;
+ m_misc_state.m_min_level = (w1 >> 8) & 0x1f;
+ m_prim_lod_fraction = w1 & 0xff;
+ m_prim_color.c = w2;
}
-void n64_rdp::CmdSetEnvColor(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_env_color(UINT32 w1, UINT32 w2)
{
- EnvColor.c = w2;
+ m_env_color.c = w2;
}
-void n64_rdp::CmdSetCombine(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_combine(UINT32 w1, UINT32 w2)
{
m_combine.sub_a_rgb0 = (w1 >> 20) & 0xf;
m_combine.mul_rgb0 = (w1 >> 15) & 0x1f;
@@ -3171,136 +3144,50 @@ void n64_rdp::CmdSetCombine(UINT32 w1, UINT32 w2)
m_combine.add_a1 = (w2 >> 0) & 0x7;
}
-void n64_rdp::CmdSetTextureImage(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_texture_image(UINT32 w1, UINT32 w2)
{
- MiscState.TIFormat = (w1 >> 21) & 0x7;
- MiscState.TISize = (w1 >> 19) & 0x3;
- MiscState.TIWidth = (w1 & 0x3ff) + 1;
- MiscState.TIAddress = w2 & 0x01ffffff;
+ m_misc_state.m_ti_format = (w1 >> 21) & 0x7;
+ m_misc_state.m_ti_size = (w1 >> 19) & 0x3;
+ m_misc_state.m_ti_width = (w1 & 0x3ff) + 1;
+ m_misc_state.m_ti_address = w2 & 0x01ffffff;
}
-void n64_rdp::CmdSetMaskImage(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_mask_image(UINT32 w1, UINT32 w2)
{
//wait("SetMaskImage");
- MiscState.ZBAddress = w2 & 0x01ffffff;
+ m_misc_state.m_zb_address = w2 & 0x01ffffff;
}
-void n64_rdp::CmdSetColorImage(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_set_color_image(UINT32 w1, UINT32 w2)
{
//wait("SetColorImage");
- MiscState.FBFormat = (w1 >> 21) & 0x7;
- MiscState.FBSize = (w1 >> 19) & 0x3;
- MiscState.FBWidth = (w1 & 0x3ff) + 1;
- MiscState.FBAddress = w2 & 0x01ffffff;
-
- if (MiscState.FBFormat < 2 || MiscState.FBFormat > 32) // Jet Force Gemini sets the format to 4, Intensity. Protection?
- {
- MiscState.FBFormat = 2;
- }
-}
+ m_misc_state.m_fb_format = (w1 >> 21) & 0x7;
+ m_misc_state.m_fb_size = (w1 >> 19) & 0x3;
+ m_misc_state.m_fb_width = (w1 & 0x3ff) + 1;
+ m_misc_state.m_fb_address = w2 & 0x01ffffff;
-UINT32 n64_rdp::AddRightCvg(UINT32 x, UINT32 k)
-{
-//#undef FULL_SUBPIXELS
-#define FULL_SUBPIXELS
- UINT32 coveredsubpixels=((x >> 14) & 3);
- if (!(x & 0xffff))
- {
- return 0;
- }
-#ifdef FULL_SUBPIXELS
- if (!coveredsubpixels)
- {
- return 0;
- }
- if (!(k & 1))
- {
- return (coveredsubpixels<3) ? 1 : 2;
- }
- else
- {
- return (coveredsubpixels<2) ? 0 : 1;
- }
-#endif
- if (!(k & 1))
+ if (m_misc_state.m_fb_format < 2 || m_misc_state.m_fb_format > 32) // Jet Force Gemini sets the format to 4, Intensity. Protection?
{
- return (coveredsubpixels<2) ? 1 : 2;
- }
- else
- {
- if (coveredsubpixels<1)
- {
- return 0;
- }
- else if (coveredsubpixels<3)
- {
- return 1;
- }
- else
- {
- return 2;
- }
- }
-}
-
-UINT32 n64_rdp::AddLeftCvg(UINT32 x, UINT32 k)
-{
- UINT32 coveredsubpixels = 3 - ((x >> 14) & 3);
- if (!(x & 0xffff))
- {
- return 2;
- }
-#ifdef FULL_SUBPIXELS
- if (!coveredsubpixels)
- {
- return 0;
- }
- if (!(k & 1))
- {
- return (coveredsubpixels<2) ? 0 : 1;
- }
- else
- {
- return (coveredsubpixels<3) ? 1 : 2;
- }
-#endif
- if (k & 1)
- {
- return (coveredsubpixels<2) ? 1 : 2;
- }
- else
- {
- if (coveredsubpixels < 1)
- {
- return 0;
- }
- else if (coveredsubpixels < 3)
- {
- return 1;
- }
- else
- {
- return 2;
- }
+ m_misc_state.m_fb_format = 2;
}
}
/*****************************************************************************/
-void n64_rdp::CmdInvalid(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_invalid(UINT32 w1, UINT32 w2)
{
fatalerror("n64_rdp::Invalid: %d, %08x %08x\n", (w1 >> 24) & 0x3f, w1, w2);
}
-void n64_rdp::CmdNoOp(UINT32 w1, UINT32 w2)
+void n64_rdp::cmd_noop(UINT32 w1, UINT32 w2)
{
// Do nothing
}
-void n64_rdp::ProcessList()
+void n64_rdp::process_command_list()
{
INT32 length = m_end - m_current;
@@ -3311,9 +3198,9 @@ void n64_rdp::ProcessList()
}
// load command data
- for(int i = 0; i < length; i += 4)
+ for(INT32 i = 0; i < length; i += 4)
{
- m_cmd_data[m_cmd_ptr++] = ReadData((m_current & 0x1fffffff) + i);
+ m_cmd_data[m_cmd_ptr++] = read_data((m_current & 0x1fffffff) + i);
}
m_current = m_end;
@@ -3321,10 +3208,10 @@ void n64_rdp::ProcessList()
UINT32 cmd = (m_cmd_data[0] >> 24) & 0x3f;
UINT32 cmd_length = (m_cmd_ptr + 1) * 4;
- SetStatusReg(GetStatusReg() &~ DP_STATUS_FREEZE);
+ set_status(get_status() &~ DP_STATUS_FREEZE);
// check if more data is needed
- if (cmd_length < rdp_command_length[cmd])
+ if (cmd_length < s_rdp_command_length[cmd])
{
return;
}
@@ -3333,16 +3220,16 @@ void n64_rdp::ProcessList()
{
cmd = (m_cmd_data[m_cmd_cur] >> 24) & 0x3f;
- if (((m_cmd_ptr - m_cmd_cur) * 4) < rdp_command_length[cmd])
+ if (((m_cmd_ptr - m_cmd_cur) * 4) < s_rdp_command_length[cmd])
{
return;
- //fatalerror("rdp_process_list: not enough rdp command data: cur = %d, ptr = %d, expected = %d\n", m_cmd_cur, m_cmd_ptr, rdp_command_length[cmd]);
+ //fatalerror("rdp_process_list: not enough rdp command data: cur = %d, ptr = %d, expected = %d\n", m_cmd_cur, m_cmd_ptr, s_rdp_command_length[cmd]);
}
if (LOG_RDP_EXECUTION)
{
char string[4000];
- Dasm(string);
+ disassemble(string);
fprintf(rdp_exec, "%08X: %08X %08X %s\n", m_start+(m_cmd_cur * 4), m_cmd_data[m_cmd_cur+0], m_cmd_data[m_cmd_cur+1], string);
fflush(rdp_exec);
@@ -3354,55 +3241,55 @@ void n64_rdp::ProcessList()
switch(cmd)
{
- case 0x00: CmdNoOp(w1, w2); break;
-
- case 0x08: CmdTriangle(w1, w2); break;
- case 0x09: CmdTriangleZ(w1, w2); break;
- case 0x0a: CmdTriangleT(w1, w2); break;
- case 0x0b: CmdTriangleTZ(w1, w2); break;
- case 0x0c: CmdTriangleS(w1, w2); break;
- case 0x0d: CmdTriangleSZ(w1, w2); break;
- case 0x0e: CmdTriangleST(w1, w2); break;
- case 0x0f: CmdTriangleSTZ(w1, w2); break;
-
- case 0x24: CmdTexRect(w1, w2); break;
- case 0x25: CmdTexRectFlip(w1, w2); break;
-
- case 0x26: CmdSyncLoad(w1, w2); break;
- case 0x27: CmdSyncPipe(w1, w2); break;
- case 0x28: CmdSyncTile(w1, w2); break;
- case 0x29: CmdSyncFull(w1, w2); break;
-
- case 0x2a: CmdSetKeyGB(w1, w2); break;
- case 0x2b: CmdSetKeyR(w1, w2); break;
-
- case 0x2c: CmdSetConvert(w1, w2); break;
- case 0x3c: CmdSetCombine(w1, w2); break;
- case 0x2d: CmdSetScissor(w1, w2); break;
- case 0x2e: CmdSetPrimDepth(w1, w2); break;
- case 0x2f: CmdSetOtherModes(w1, w2); break;
-
- case 0x30: CmdLoadTLUT(w1, w2); break;
- case 0x33: CmdLoadBlock(w1, w2); break;
- case 0x34: CmdLoadTile(w1, w2); break;
-
- case 0x32: CmdSetTileSize(w1, w2); break;
- case 0x35: CmdSetTile(w1, w2); break;
-
- case 0x36: CmdFillRect(w1, w2); break;
-
- case 0x37: CmdSetFillColor32(w1, w2); break;
- case 0x38: CmdSetFogColor(w1, w2); break;
- case 0x39: CmdSetBlendColor(w1, w2); break;
- case 0x3a: CmdSetPrimColor(w1, w2); break;
- case 0x3b: CmdSetEnvColor(w1, w2); break;
-
- case 0x3d: CmdSetTextureImage(w1, w2); break;
- case 0x3e: CmdSetMaskImage(w1, w2); break;
- case 0x3f: CmdSetColorImage(w1, w2); break;
+ case 0x00: cmd_noop(w1, w2); break;
+
+ case 0x08: cmd_triangle(w1, w2); break;
+ case 0x09: cmd_triangle_z(w1, w2); break;
+ case 0x0a: cmd_triangle_t(w1, w2); break;
+ case 0x0b: cmd_triangle_tz(w1, w2); break;
+ case 0x0c: cmd_triangle_s(w1, w2); break;
+ case 0x0d: cmd_triangle_sz(w1, w2); break;
+ case 0x0e: cmd_triangle_st(w1, w2); break;
+ case 0x0f: cmd_triangle_stz(w1, w2); break;
+
+ case 0x24: cmd_tex_rect(w1, w2); break;
+ case 0x25: cmd_tex_rect_flip(w1, w2); break;
+
+ case 0x26: cmd_sync_load(w1, w2); break;
+ case 0x27: cmd_sync_pipe(w1, w2); break;
+ case 0x28: cmd_sync_tile(w1, w2); break;
+ case 0x29: cmd_sync_full(w1, w2); break;
+
+ case 0x2a: cmd_set_key_gb(w1, w2); break;
+ case 0x2b: cmd_set_key_r(w1, w2); break;
+
+ case 0x2c: cmd_set_convert(w1, w2); break;
+ case 0x3c: cmd_set_combine(w1, w2); break;
+ case 0x2d: cmd_set_scissor(w1, w2); break;
+ case 0x2e: cmd_set_prim_depth(w1, w2); break;
+ case 0x2f: cmd_set_other_modes(w1, w2); break;
+
+ case 0x30: cmd_load_tlut(w1, w2); break;
+ case 0x33: cmd_load_block(w1, w2); break;
+ case 0x34: cmd_load_tile(w1, w2); break;
+
+ case 0x32: cmd_set_tile_size(w1, w2); break;
+ case 0x35: cmd_set_tile(w1, w2); break;
+
+ case 0x36: cmd_fill_rect(w1, w2); break;
+
+ case 0x37: cmd_set_fill_color32(w1, w2); break;
+ case 0x38: cmd_set_fog_color(w1, w2); break;
+ case 0x39: cmd_set_blend_color(w1, w2); break;
+ case 0x3a: cmd_set_prim_color(w1, w2); break;
+ case 0x3b: cmd_set_env_color(w1, w2); break;
+
+ case 0x3d: cmd_set_texture_image(w1, w2); break;
+ case 0x3e: cmd_set_mask_image(w1, w2); break;
+ case 0x3f: cmd_set_color_image(w1, w2); break;
}
- m_cmd_cur += rdp_command_length[cmd] / 4;
+ m_cmd_cur += s_rdp_command_length[cmd] / 4;
};
m_cmd_ptr = 0;
m_cmd_cur = 0;
@@ -3414,8 +3301,8 @@ void n64_rdp::ProcessList()
n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 32000>(state.machine())
{
- AuxBufPtr = 0;
- AuxBuf = NULL;
+ m_aux_buf_ptr = 0;
+ m_aux_buf = NULL;
m_pipe_clean = true;
m_pending_mode_block = false;
@@ -3428,13 +3315,13 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
m_current = 0;
m_status = 0x88;
- for (int i = 0; i < 8; i++)
+ for (INT32 i = 0; i < 8; i++)
{
m_tiles[i].num = i;
}
- OneColor.c = 0xffffffff;
- ZeroColor.c = 0x00000000;
+ m_one.c = 0xffffffff;
+ m_zero.c = 0x00000000;
m_tmem = NULL;
@@ -3442,15 +3329,15 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
//memset(m_hidden_bits, 3, 8388608);
- PrimLODFraction = 0;
+ m_prim_lod_fraction = 0;
- for (int i = 0; i < 256; i++)
+ for (INT32 i = 0; i < 256; i++)
{
m_gamma_table[i] = sqrt((float)(i << 6));
m_gamma_table[i] <<= 1;
}
- for (int i = 0; i < 0x4000; i++)
+ for (INT32 i = 0; i < 0x4000; i++)
{
m_gamma_dither_table[i] = sqrt((float)i);
m_gamma_dither_table[i] <<= 1;
@@ -3458,16 +3345,16 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
z_build_com_table();
- for (int i = 0; i < 0x4000; i++)
+ for (INT32 i = 0; i < 0x4000; i++)
{
UINT32 exponent = (i >> 11) & 7;
UINT32 mantissa = i & 0x7ff;
- z_complete_dec_table[i] = ((mantissa << z_dec_table[exponent].shift) + z_dec_table[exponent].add) & 0x3fffff;
+ m_z_complete_dec_table[i] = ((mantissa << m_z_dec_table[exponent].shift) + m_z_dec_table[exponent].add) & 0x3fffff;
}
precalc_cvmask_derivatives();
- for(int i = 0; i < 0x200; i++)
+ for(INT32 i = 0; i < 0x200; i++)
{
switch((i >> 7) & 3)
{
@@ -3484,14 +3371,14 @@ n64_rdp::n64_rdp(n64_state &state) : poly_manager<UINT32, rdp_poly_state, 8, 320
}
}
- for(int i = 0; i < 32; i++)
+ for(INT32 i = 0; i < 32; i++)
{
- ReplicatedRGBA[i] = (i << 3) | ((i >> 2) & 7);
+ m_replicated_rgba[i] = (i << 3) | ((i >> 2) & 7);
}
- for(int i = 0; i < 0x10000; i++)
+ for(INT32 i = 0; i < 0x10000; i++)
{
- m_dzpix_normalize[i] = (UINT16)NormalizeDZPix(i & 0xffff);
+ m_dzpix_normalize[i] = (UINT16)normalize_dzpix(i & 0xffff);
}
}
@@ -3499,15 +3386,15 @@ void n64_state::video_start()
{
m_rdp = auto_alloc(machine(), n64_rdp(*this));
- m_rdp->SetMachine(machine());
- m_rdp->InitInternalState();
+ m_rdp->set_machine(machine());
+ m_rdp->init_internal_state();
- m_rdp->Blender.SetMachine(machine());
- m_rdp->Blender.SetProcessor(m_rdp);
+ m_rdp->m_blender.set_machine(machine());
+ m_rdp->m_blender.set_processor(m_rdp);
- m_rdp->TexPipe.SetMachine(machine());
+ m_rdp->m_tex_pipe.set_machine(machine());
- m_rdp->AuxBuf = auto_alloc_array_clear(machine(), UINT8, EXTENT_AUX_COUNT);
+ m_rdp->m_aux_buf = auto_alloc_array_clear(machine(), UINT8, EXTENT_AUX_COUNT);
if (LOG_RDP_EXECUTION)
{
@@ -3517,12 +3404,12 @@ void n64_state::video_start()
UINT32 n64_state::screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- n64_periphs *n64 = machine().device<n64_periphs>("rcp");
- m_rdp->visarea = screen.visible_area();
+ n64_periphs* n64 = machine().device<n64_periphs>("rcp");
+ m_rdp->m_visarea = screen.visible_area();
- //UINT16 *frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
- //UINT8 *cvg_buffer = &m_rdp.HiddenBits[((n64->vi_origin & 0xffffff) >> 2) >> 1];
- //int vibuffering = ((n64->vi_control & 2) && fsaa && divot);
+ //UINT16* frame_buffer = (UINT16*)&rdram[(n64->vi_origin & 0xffffff) >> 2];
+ //UINT8* cvg_buffer = &m_rdp.m_hidden_bits[((n64->vi_origin & 0xffffff) >> 2) >> 1];
+ //INT32 vibuffering = ((n64->vi_control & 2) && fsaa && divot);
//vibuffering = 0; // Disabled for now
@@ -3559,15 +3446,15 @@ UINT32 n64_state::screen_update_n64(screen_device &screen, bitmap_rgb32 &bitmap,
*/
m_rdp->wait();
- m_rdp->AuxBufPtr = 0;
+ m_rdp->m_aux_buf_ptr = 0;
if (n64->vi_blank)
{
- bitmap.fill(0, m_rdp->visarea);
+ bitmap.fill(0, m_rdp->m_visarea);
return 0;
}
- m_rdp->VideoUpdate(n64, bitmap);
+ m_rdp->video_update(n64, bitmap);
return 0;
}
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h
index e36b330073f..09ce993d249 100644
--- a/src/mame/video/n64.h
+++ b/src/mame/video/n64.h
@@ -50,9 +50,9 @@
#endif
#define DWORD_XOR_DWORD_SWAP 1
-#define GET_LOW_RGBA16_TMEM(x) (m_rdp->ReplicatedRGBA[((x) >> 1) & 0x1f])
-#define GET_MED_RGBA16_TMEM(x) (m_rdp->ReplicatedRGBA[((x) >> 6) & 0x1f])
-#define GET_HI_RGBA16_TMEM(x) (m_rdp->ReplicatedRGBA[((x) >> 11) & 0x1f])
+#define GET_LOW_RGBA16_TMEM(x) (m_rdp->m_replicated_rgba[((x) >> 1) & 0x1f])
+#define GET_MED_RGBA16_TMEM(x) (m_rdp->m_replicated_rgba[((x) >> 6) & 0x1f])
+#define GET_HI_RGBA16_TMEM(x) (m_rdp->m_replicated_rgba[((x) >> 11) & 0x1f])
#define MEM8_LIMIT 0x7fffff
#define MEM16_LIMIT 0x3fffff
@@ -76,7 +76,7 @@
#define RREADIDX32(in) ((rdp_range_check((in) << 2)) ? 0 : rdram[(in)])
#define RWRITEADDR8(in, val) if(rdp_range_check((in))) { printf("Write8: Address %08x out of range!\n", (in)); fflush(stdout); fatalerror("Address %08x out of range!\n", (in)); } else { ((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR] = val;}
-#define RWRITEIDX16(in, val) if(rdp_range_check((in) << 1)) { printf("Write16: Address %08x out of range!\n", ((object.MiscState.FBAddress >> 1) + curpixel) << 1); fflush(stdout); fatalerror("Address out of range\n"); } else { ((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR] = val;}
+#define RWRITEIDX16(in, val) if(rdp_range_check((in) << 1)) { printf("Write16: Address %08x out of range!\n", ((object.m_misc_state.m_fb_address >> 1) + curpixel) << 1); fflush(stdout); fatalerror("Address out of range\n"); } else { ((UINT16*)rdram)[(in) ^ WORD_ADDR_XOR] = val;}
#define RWRITEIDX32(in, val) if(rdp_range_check((in) << 2)) { printf("Write32: Address %08x out of range!\n", (in) << 2); fflush(stdout); fatalerror("Address %08x out of range!\n", (in) << 2); } else { rdram[(in)] = val;}
#else
#define RREADADDR8(in) (((UINT8*)rdram)[(in) ^ BYTE_ADDR_XOR])
@@ -96,8 +96,8 @@
#define GETMEDCOL(x) (((x) & 0x7c0) >> 3)
#define GETHICOL(x) (((x) & 0xf800) >> 8)
-#define HREADADDR8(in) /*(((in) <= MEM8_LIMIT) ? */(HiddenBits[(in) ^ BYTE_ADDR_XOR])/* : 0)*/
-#define HWRITEADDR8(in, val) /*{if ((in) <= MEM8_LIMIT) */HiddenBits[(in) ^ BYTE_ADDR_XOR] = val;/*}*/
+#define HREADADDR8(in) /*(((in) <= MEM8_LIMIT) ? */(m_hidden_bits[(in) ^ BYTE_ADDR_XOR])/* : 0)*/
+#define HWRITEADDR8(in, val) /*{if ((in) <= MEM8_LIMIT) */m_hidden_bits[(in) ^ BYTE_ADDR_XOR] = val;/*}*/
//sign-extension macros
#define SIGN22(x) (((x) & 0x200000) ? ((x) | ~0x3fffff) : ((x) & 0x3fffff))
@@ -128,17 +128,17 @@
class n64_periphs;
class n64_rdp;
-struct MiscStateT;
-struct OtherModesT;
-struct CombineModesT;
-struct ColorInputsT;
-struct SpanBaseT;
-struct Rectangle;
+struct misc_state_t;
+struct other_modes_t;
+struct combine_mdoes_t;
+struct color_inputs_t;
+struct span_base_t;
+struct rectangle_t;
-class Color
+class color_t
{
public:
- Color()
+ color_t()
{
c = 0;
}
@@ -176,95 +176,92 @@ class SpanParam
};
};
-struct N64Tile
+struct n64_tile_t
{
- int format; // Image data format: RGBA, YUV, CI, IA, I
- int size; // Size of texel element: 4b, 8b, 16b, 32b
- int line; // Size of tile line in bytes
- int tmem; // Starting tmem address for this tile in bytes
- int palette; // Palette number for 4b CI texels
- int ct, mt, cs, ms; // Clamp / mirror enable bits for S / T direction
- int mask_t, shift_t, mask_s, shift_s; // Mask values / LOD shifts
+ INT32 format; // Image data format: RGBA, YUV, CI, IA, I
+ INT32 size; // Size of texel element: 4b, 8b, 16b, 32b
+ INT32 line; // Size of tile line in bytes
+ INT32 tmem; // Starting tmem address for this tile in bytes
+ INT32 palette; // Palette number for 4b CI texels
+ INT32 ct, mt, cs, ms; // Clamp / mirror enable bits for S / T direction
+ INT32 mask_t, shift_t, mask_s, shift_s; // Mask values / LOD shifts
UINT16 sl, tl, sh, th; // 10.2 fixed-point, starting and ending texel row / column
- int num;
+ INT32 num;
};
-struct SpanBaseT
+struct span_base_t
{
- int m_span_dr;
- int m_span_dg;
- int m_span_db;
- int m_span_da;
- int m_span_ds;
- int m_span_dt;
- int m_span_dw;
- int m_span_dz;
- int m_span_dymax;
- int m_span_dzpix;
- int m_span_drdy;
- int m_span_dgdy;
- int m_span_dbdy;
- int m_span_dady;
- int m_span_dzdy;
+ INT32 m_span_dr;
+ INT32 m_span_dg;
+ INT32 m_span_db;
+ INT32 m_span_da;
+ INT32 m_span_ds;
+ INT32 m_span_dt;
+ INT32 m_span_dw;
+ INT32 m_span_dz;
+ INT32 m_span_dymax;
+ INT32 m_span_dzpix;
+ INT32 m_span_drdy;
+ INT32 m_span_dgdy;
+ INT32 m_span_dbdy;
+ INT32 m_span_dady;
+ INT32 m_span_dzdy;
};
-struct MiscStateT
+struct misc_state_t
{
- MiscStateT()
+ misc_state_t()
{
- MaxLevel = 0;
- MinLevel = 0;
+ m_max_level = 0;
+ m_min_level = 0;
}
- int FBFormat; // Framebuffer pixel format index (0 - I, 1 - IA, 2 - CI, 3 - RGBA)
- int FBSize; // Framebuffer pixel size index (0 - 4bpp, 1 - 8bpp, 2 - 16bpp, 3 - 32bpp)
- int FBWidth; // Framebuffer width, in pixels
- int FBHeight; // Framebuffer height, in scanlines
- UINT32 FBAddress; // Framebuffer source address offset (in bytes) from start of RDRAM
+ INT32 m_fb_format; // Framebuffer pixel format index (0 - I, 1 - IA, 2 - CI, 3 - RGBA)
+ INT32 m_fb_size; // Framebuffer pixel size index (0 - 4bpp, 1 - 8bpp, 2 - 16bpp, 3 - 32bpp)
+ INT32 m_fb_width; // Framebuffer width, in pixels
+ INT32 m_fb_height; // Framebuffer height, in pixels
+ UINT32 m_fb_address; // Framebuffer source address offset (in bytes) from start of RDRAM
- UINT32 ZBAddress; // Z-buffer source address offset (in bytes) from start of RDRAM
+ UINT32 m_zb_address; // Z-buffer source address offset (in bytes) from start of RDRAM
- int TIFormat; // Format for Texture Interface (TI) transfers
- int TISize; // Size (in bytes) of TI transfers
- int TIWidth; // Width (in pixels) of TI transfers
- UINT32 TIAddress; // Destination address for TI transfers
+ INT32 m_ti_format; // Format for Texture Interface (TI) transfers
+ INT32 m_ti_size; // Size (in bytes) of TI transfers
+ INT32 m_ti_width; // Width (in pixels) of TI transfers
+ UINT32 m_ti_address; // Destination address for TI transfers
- UINT8 RandomSeed; // %HACK%, adds 19 each time it's read and is more or less random
+ UINT8 m_random_seed; // %HACK%, adds 19 each time it's read and is more or less random
- int SpecialBlendSelect0; // Special blend-mode select for cycle 0
- int SpecialBlendSelect1; // Special blend-mode select for cycle 1
+ UINT32 m_max_level; // Maximum LOD level for texture filtering
+ UINT32 m_min_level; // Minimum LOD level for texture filtering
- UINT32 MaxLevel; // Maximum LOD level for texture filtering
- UINT32 MinLevel; // Minimum LOD level for texture filtering
-
- UINT16 PrimitiveZ; // Forced Z value for current primitive, if applicable
- UINT16 PrimitiveDZ; // Forced Delta-Z value for current primitive, if applicable
+ UINT16 m_primitive_z; // Forced Z value for current primitive, if applicable
+ UINT16 m_primitive_dz; // Forced Delta-Z value for current primitive, if applicable
};
-struct CombineModesT
+struct combine_modes_t
{
- int sub_a_rgb0;
- int sub_b_rgb0;
- int mul_rgb0;
- int add_rgb0;
- int sub_a_a0;
- int sub_b_a0;
- int mul_a0;
- int add_a0;
-
- int sub_a_rgb1;
- int sub_b_rgb1;
- int mul_rgb1;
- int add_rgb1;
- int sub_a_a1;
- int sub_b_a1;
- int mul_a1;
- int add_a1;
+ INT32 sub_a_rgb0;
+ INT32 sub_b_rgb0;
+ INT32 mul_rgb0;
+ INT32 add_rgb0;
+ INT32 sub_a_a0;
+ INT32 sub_b_a0;
+ INT32 mul_a0;
+ INT32 add_a0;
+
+ INT32 sub_a_rgb1;
+ INT32 sub_b_rgb1;
+ INT32 mul_rgb1;
+ INT32 add_rgb1;
+ INT32 sub_a_a1;
+ INT32 sub_b_a1;
+ INT32 mul_a1;
+ INT32 add_a1;
};
-struct OtherModesT
+struct other_modes_t
{
- int cycle_type;
+ INT32 cycle_type;
bool persp_tex_en;
bool detail_tex_en;
bool sharpen_tex_en;
@@ -277,64 +274,64 @@ struct OtherModesT
bool bi_lerp1;
bool convert_one;
bool key_en;
- int rgb_dither_sel;
- int alpha_dither_sel;
- int blend_m1a_0;
- int blend_m1a_1;
- int blend_m1b_0;
- int blend_m1b_1;
- int blend_m2a_0;
- int blend_m2a_1;
- int blend_m2b_0;
- int blend_m2b_1;
- int tex_edge;
- int force_blend;
- int blend_shift;
+ INT32 rgb_dither_sel;
+ INT32 alpha_dither_sel;
+ INT32 blend_m1a_0;
+ INT32 blend_m1a_1;
+ INT32 blend_m1b_0;
+ INT32 blend_m1b_1;
+ INT32 blend_m2a_0;
+ INT32 blend_m2a_1;
+ INT32 blend_m2b_0;
+ INT32 blend_m2b_1;
+ INT32 tex_edge;
+ INT32 force_blend;
+ INT32 blend_shift;
bool alpha_cvg_select;
bool cvg_times_alpha;
- int z_mode;
- int cvg_dest;
+ INT32 z_mode;
+ INT32 cvg_dest;
bool color_on_cvg;
UINT8 image_read_en;
bool z_update_en;
bool z_compare_en;
bool antialias_en;
bool z_source_sel;
- int dither_alpha_en;
- int alpha_compare_en;
- int alpha_dither_mode;
+ INT32 dither_alpha_en;
+ INT32 alpha_compare_en;
+ INT32 alpha_dither_mode;
};
-struct ColorInputsT
+struct color_inputs_t
{
// combiner inputs
- UINT8 *combiner_rgbsub_a_r[2];
- UINT8 *combiner_rgbsub_a_g[2];
- UINT8 *combiner_rgbsub_a_b[2];
- UINT8 *combiner_rgbsub_b_r[2];
- UINT8 *combiner_rgbsub_b_g[2];
- UINT8 *combiner_rgbsub_b_b[2];
- UINT8 *combiner_rgbmul_r[2];
- UINT8 *combiner_rgbmul_g[2];
- UINT8 *combiner_rgbmul_b[2];
- UINT8 *combiner_rgbadd_r[2];
- UINT8 *combiner_rgbadd_g[2];
- UINT8 *combiner_rgbadd_b[2];
-
- UINT8 *combiner_alphasub_a[2];
- UINT8 *combiner_alphasub_b[2];
- UINT8 *combiner_alphamul[2];
- UINT8 *combiner_alphaadd[2];
+ UINT8* combiner_rgbsub_a_r[2];
+ UINT8* combiner_rgbsub_a_g[2];
+ UINT8* combiner_rgbsub_a_b[2];
+ UINT8* combiner_rgbsub_b_r[2];
+ UINT8* combiner_rgbsub_b_g[2];
+ UINT8* combiner_rgbsub_b_b[2];
+ UINT8* combiner_rgbmul_r[2];
+ UINT8* combiner_rgbmul_g[2];
+ UINT8* combiner_rgbmul_b[2];
+ UINT8* combiner_rgbadd_r[2];
+ UINT8* combiner_rgbadd_g[2];
+ UINT8* combiner_rgbadd_b[2];
+
+ UINT8* combiner_alphasub_a[2];
+ UINT8* combiner_alphasub_b[2];
+ UINT8* combiner_alphamul[2];
+ UINT8* combiner_alphaadd[2];
// blender input
- UINT8 *blender1a_r[2];
- UINT8 *blender1a_g[2];
- UINT8 *blender1a_b[2];
- UINT8 *blender1b_a[2];
- UINT8 *blender2a_r[2];
- UINT8 *blender2a_g[2];
- UINT8 *blender2a_b[2];
- UINT8 *blender2b_a[2];
+ UINT8* blender1a_r[2];
+ UINT8* blender1a_g[2];
+ UINT8* blender1a_b[2];
+ UINT8* blender1b_a[2];
+ UINT8* blender2a_r[2];
+ UINT8* blender2a_g[2];
+ UINT8* blender2a_b[2];
+ UINT8* blender2b_a[2];
};
// This is enormous and horrible
@@ -342,40 +339,39 @@ struct rdp_span_aux
{
UINT32 m_unscissored_rx;
UINT16 m_cvg[RDP_CVG_SPAN_MAX];
- Color MemoryColor;
- Color PixelColor;
- Color InvPixelColor;
- Color BlendedPixelColor;
- Color CombinedColor;
- Color Texel0Color;
- Color Texel1Color;
- Color NextTexelColor;
- Color BlendColor; /* constant blend color */
- Color PrimColor; /* flat primitive color */
- Color EnvColor; /* generic color constant ('environment') */
- Color FogColor; /* generic color constant ('fog') */
- Color ShadeColor; /* gouraud-shaded color */
- Color KeyScale; /* color-keying constant */
- Color NoiseColor; /* noise */
- UINT8 LODFraction; /* Z-based LOD fraction for this poly */
- UINT8 PrimLODFraction; /* fixed LOD fraction for this poly */
- ColorInputsT ColorInputs;
- UINT32 CurrentPixCvg;
- UINT32 CurrentMemCvg;
- UINT32 CurrentCvgBit;
- UINT32 CurrentPixOverlap;
- INT32 ShiftA;
- INT32 ShiftB;
+ color_t m_memory_color;
+ color_t m_pixel_color;
+ color_t m_inv_pixel_color;
+ color_t m_blended_pixel_color;
+ color_t m_combined_color;
+ color_t m_texel0_color;
+ color_t m_texel1_color;
+ color_t m_next_texel_color;
+ color_t m_blend_color; /* constant blend color */
+ color_t m_prim_color; /* flat primitive color */
+ color_t m_env_color; /* generic color constant ('environment') */
+ color_t m_fog_color; /* generic color constant ('fog') */
+ color_t m_shade_color; /* gouraud-shaded color */
+ color_t m_key_scale; /* color-keying constant */
+ color_t m_noise_color; /* noise */
+ UINT8 m_lod_fraction; /* Z-based LOD fraction for this poly */
+ UINT8 m_prim_lod_fraction; /* fixed LOD fraction for this poly */
+ color_inputs_t m_color_inputs;
+ UINT32 m_current_pix_cvg;
+ UINT32 m_current_mem_cvg;
+ UINT32 m_current_cvg_bit;
+ INT32 m_shift_a;
+ INT32 m_shift_b;
INT32 m_precomp_s;
INT32 m_precomp_t;
- UINT8 BlendEnable;
- bool PreWrap;
+ INT32 m_blend_enable;
+ bool m_pre_wrap;
INT32 m_dzpix_enc;
- UINT8 *m_tmem; /* pointer to texture cache for this polygon */
+ UINT8* m_tmem; /* pointer to texture cache for this polygon */
bool m_start_span;
};
-struct Rectangle
+struct rectangle_t
{
UINT16 m_xl; // 10.2 fixed-point
UINT16 m_yl; // 10.2 fixed-point
@@ -383,318 +379,289 @@ struct Rectangle
UINT16 m_yh; // 10.2 fixed-point
};
+struct z_decompress_entry_t
+{
+ UINT32 shift;
+ UINT32 add;
+};
+
+struct cv_mask_derivative_t
+{
+ UINT8 cvg;
+ UINT8 cvbit;
+ UINT8 xoff;
+ UINT8 yoff;
+};
+
struct rdp_poly_state
{
- n64_rdp * m_rdp; /* pointer back to the RDP state */
-
- MiscStateT MiscState; /* miscellaneous rasterizer bits */
- OtherModesT OtherModes; /* miscellaneous rasterizer bits (2) */
- SpanBaseT SpanBase; /* span initial values for triangle rasterization */
- Rectangle Scissor; /* screen-space scissor bounds */
- UINT32 FillColor; /* poly fill color */
- N64Tile m_tiles[8]; /* texture tile state */
+ n64_rdp* m_rdp; /* pointer back to the RDP state */
+
+ misc_state_t m_misc_state; /* miscellaneous rasterizer bits */
+ other_modes_t m_other_modes; /* miscellaneous rasterizer bits (2) */
+ span_base_t m_span_base; /* span initial values for triangle rasterization */
+ rectangle_t m_scissor; /* screen-space scissor bounds */
+ UINT32 m_fill_color; /* poly fill color */
+ n64_tile_t m_tiles[8]; /* texture tile state */
UINT8 m_tmem[0x1000]; /* texture cache */
- int tilenum; /* texture tile index */
+ INT32 tilenum; /* texture tile index */
bool flip; /* left-major / right-major flip */
bool rect; /* primitive is rectangle (vs. triangle) */
};
-//class n64_state;
+typedef void (*rdp_command_t)(UINT32 w1, UINT32 w2);
class n64_rdp : public poly_manager<UINT32, rdp_poly_state, 8, 32000>
{
- public:
- typedef void (n64_rdp::*Writer) (UINT32 curpixel, UINT32 r, UINT32 g, UINT32 b, rdp_span_aux *userdata, const rdp_poly_state &object);
- typedef void (n64_rdp::*Reader) (UINT32 curpixel, rdp_span_aux *userdata, const rdp_poly_state &object);
- typedef void (n64_rdp::*Copier) (UINT32 curpixel, UINT32 r, UINT32 g, UINT32 b, int CurrentPixCvg, const rdp_poly_state &object);
- typedef void (n64_rdp::*Filler) (UINT32 curpixel, const rdp_poly_state &object);
+public:
+ n64_rdp(n64_state &state);
- n64_rdp(n64_state &state);
-
- running_machine &machine() const { assert(m_machine != NULL); return *m_machine; }
-
- void InitInternalState()
- {
- m_tmem = auto_alloc_array(machine(), UINT8, 0x1000);
- memset(m_tmem, 0, 0x1000);
-
- UINT8 *normpoint = machine().root_device().memregion("normpoint")->base();
- UINT8 *normslope = machine().root_device().memregion("normslope")->base();
-
- for(INT32 i = 0; i < 64; i++)
- {
- m_norm_point_rom[i] = (normpoint[(i << 1) + 1] << 8) | normpoint[i << 1];
- m_norm_slope_rom[i] = (normslope[(i << 1) + 1] << 8) | normslope[i << 1];
- }
-
- memset(m_tiles, 0, 8 * sizeof(N64Tile));
- memset(m_cmd_data, 0, sizeof(m_cmd_data));
- }
+ running_machine &machine() const { assert(m_machine != NULL); return *m_machine; }
- void ProcessList();
- UINT32 ReadData(UINT32 address);
- void Dasm(char *buffer);
-
- void SetMachine(running_machine& machine) { m_machine = &machine; }
+ void init_internal_state()
+ {
+ m_tmem = auto_alloc_array(machine(), UINT8, 0x1000);
+ memset(m_tmem, 0, 0x1000);
- // CPU-visible registers
- void SetStartReg(UINT32 val)
- {
- m_start = val;
- }
- UINT32 GetStartReg() const { return m_start; }
+ UINT8* normpoint = machine().root_device().memregion("normpoint")->base();
+ UINT8* normslope = machine().root_device().memregion("normslope")->base();
- void SetEndReg(UINT32 val)
+ for(INT32 i = 0; i < 64; i++)
{
- m_end = val;
+ m_norm_point_rom[i] = (normpoint[(i << 1) + 1] << 8) | normpoint[i << 1];
+ m_norm_slope_rom[i] = (normslope[(i << 1) + 1] << 8) | normslope[i << 1];
}
- UINT32 GetEndReg() const { return m_end; }
-
- void SetCurrentReg(UINT32 val) { m_current = val; }
- UINT32 GetCurrentReg() const { return m_current; }
-
- void SetStatusReg(UINT32 val) { m_status = val; }
- UINT32 GetStatusReg() const { return m_status; }
-
- // Internal state
- CombineModesT* GetCombine() { return &m_combine; }
-
- // Color Combiner
- INT32 ColorCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d);
- INT32 AlphaCombinerEquation(INT32 a, INT32 b, INT32 c, INT32 d);
- void SetSubAInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata);
- void SetSubBInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata);
- void SetMulInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata);
- void SetAddInputRGB(UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, int code, rdp_span_aux *userdata);
- void SetSubInputAlpha(UINT8 **input, int code, rdp_span_aux *userdata);
- void SetMulInputAlpha(UINT8 **input, int code, rdp_span_aux *userdata);
-
- // Texture memory
- UINT8* GetTMEM() { return m_tmem; }
- UINT16* GetTMEM16() { return (UINT16*)m_tmem; }
- UINT32* GetTMEM32() { return (UINT32*)m_tmem; }
- UINT16* GetTLUT() { return (UINT16*)(m_tmem + 0x800); }
-
- // Emulation Accelerators
- UINT8 GetRandom() { return MiscState.RandomSeed += 0x13; }
-
- // YUV Factors
- void SetYUVFactors(INT32 k0, INT32 k1, INT32 k2, INT32 k3, INT32 k4, INT32 k5) { m_k0 = k0; m_k1 = k1; m_k2 = k2; m_k3 = k3; m_k4 = k4; m_k5 = k5; }
- INT32 GetK0() const { return m_k0; }
- INT32 GetK1() const { return m_k1; }
- INT32 GetK2() const { return m_k2; }
- INT32 GetK3() const { return m_k3; }
- INT32* GetK4() { return &m_k4; }
- INT32* GetK5() { return &m_k5; }
-
- // Blender-related (move into RDP::Blender)
- void SetBlenderInput(int cycle, int which, UINT8 **input_r, UINT8 **input_g, UINT8 **input_b, UINT8 **input_a, int a, int b, rdp_span_aux *userdata);
-
- // Span rasterization
- void SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid);
- void SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid);
- void SpanDrawCopy(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid);
- void SpanDrawFill(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid);
-
- // Render-related (move into eventual drawing-related classes?)
- void TCDiv(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst);
- void TCDivNoPersp(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst);
- UINT32 GetLog2(UINT32 lod_clamp);
- void RenderSpans(int start, int end, int tilenum, bool flip, extent_t *Spans, bool rect, rdp_poly_state *object);
- void GetAlphaCvg(UINT8 *comb_alpha, rdp_span_aux *userdata, const rdp_poly_state &object);
- const UINT8* GetBayerMatrix() const { return s_bayer_matrix; }
- const UINT8* GetMagicMatrix() const { return s_magic_matrix; }
- int GetCurrFIFOIndex() const { return m_cmd_cur; }
-
- void ZStore(const rdp_poly_state &object, UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 z, UINT32 enc);
- UINT32 ZDecompress(UINT32 zcurpixel);
- UINT32 DZDecompress(UINT32 zcurpixel, UINT32 dzcurpixel);
- UINT32 DZCompress(UINT32 value);
- INT32 NormalizeDZPix(INT32 sum);
- bool ZCompare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix, rdp_span_aux *userdata, const rdp_poly_state &object);
-
- // Fullscreen update-related
- void VideoUpdate(n64_periphs *n64, bitmap_rgb32 &bitmap);
-
- // Commands
- void CmdInvalid(UINT32 w1, UINT32 w2);
- void CmdNoOp(UINT32 w1, UINT32 w2);
- void CmdTriangle(UINT32 w1, UINT32 w2);
- void CmdTriangleZ(UINT32 w1, UINT32 w2);
- void CmdTriangleT(UINT32 w1, UINT32 w2);
- void CmdTriangleTZ(UINT32 w1, UINT32 w2);
- void CmdTriangleS(UINT32 w1, UINT32 w2);
- void CmdTriangleSZ(UINT32 w1, UINT32 w2);
- void CmdTriangleST(UINT32 w1, UINT32 w2);
- void CmdTriangleSTZ(UINT32 w1, UINT32 w2);
- void CmdTexRect(UINT32 w1, UINT32 w2);
- void CmdTexRectFlip(UINT32 w1, UINT32 w2);
- void CmdSyncLoad(UINT32 w1, UINT32 w2);
- void CmdSyncPipe(UINT32 w1, UINT32 w2);
- void CmdSyncTile(UINT32 w1, UINT32 w2);
- void CmdSyncFull(UINT32 w1, UINT32 w2);
- void CmdSetKeyGB(UINT32 w1, UINT32 w2);
- void CmdSetKeyR(UINT32 w1, UINT32 w2);
- void CmdSetFillColor32(UINT32 w1, UINT32 w2);
- void CmdSetConvert(UINT32 w1, UINT32 w2);
- void CmdSetScissor(UINT32 w1, UINT32 w2);
- void CmdSetPrimDepth(UINT32 w1, UINT32 w2);
- void CmdSetOtherModes(UINT32 w1, UINT32 w2);
- void CmdLoadTLUT(UINT32 w1, UINT32 w2);
- void CmdSetTileSize(UINT32 w1, UINT32 w2);
- void CmdLoadBlock(UINT32 w1, UINT32 w2);
- void CmdLoadTile(UINT32 w1, UINT32 w2);
- void CmdFillRect(UINT32 w1, UINT32 w2);
- void CmdSetTile(UINT32 w1, UINT32 w2);
- void CmdSetFogColor(UINT32 w1, UINT32 w2);
- void CmdSetBlendColor(UINT32 w1, UINT32 w2);
- void CmdSetPrimColor(UINT32 w1, UINT32 w2);
- void CmdSetEnvColor(UINT32 w1, UINT32 w2);
- void CmdSetCombine(UINT32 w1, UINT32 w2);
- void CmdSetTextureImage(UINT32 w1, UINT32 w2);
- void CmdSetMaskImage(UINT32 w1, UINT32 w2);
- void CmdSetColorImage(UINT32 w1, UINT32 w2);
-
- void RGBAZClip(int sr, int sg, int sb, int sa, int *sz, rdp_span_aux *userdata);
- void RGBAZCorrectTriangle(INT32 offx, INT32 offy, INT32* r, INT32* g, INT32* b, INT32* a, INT32* z, rdp_span_aux *userdata, const rdp_poly_state &object);
-
- void Triangle(bool shade, bool texture, bool zbuffer);
- UINT32 AddRightCvg(UINT32 x, UINT32 k);
- UINT32 AddLeftCvg(UINT32 x, UINT32 k);
-
- void GetDitherValues(int x, int y, int* cdith, int* adith, const rdp_poly_state &object);
-
- UINT16 decompress_cvmask_frombyte(UINT8 x);
- void lookup_cvmask_derivatives(UINT32 mask, UINT8* offx, UINT8* offy, rdp_span_aux *userdata);
-
- MiscStateT MiscState;
-
- // Color constants
- Color BlendColor; /* constant blend color */
- Color PrimColor; /* flat primitive color */
- Color EnvColor; /* generic color constant ('environment') */
- Color FogColor; /* generic color constant ('fog') */
- Color KeyScale; /* color-keying constant */
- UINT8 LODFraction; /* Z-based LOD fraction for this poly */
- UINT8 PrimLODFraction; /* fixed LOD fraction for this poly */
-
- Color OneColor;
- Color ZeroColor;
-
- UINT32 FillColor;
-
- OtherModesT OtherModes;
-
- N64BlenderT Blender;
-
- N64TexturePipeT TexPipe;
-
- UINT8 HiddenBits[0x800000];
-
- UINT8 ReplicatedRGBA[32];
-
- UINT16 m_dzpix_normalize[0x10000];
-
- Rectangle Scissor;
- SpanBaseT SpanBase;
-
- rectangle visarea;
-
- void DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect);
- void compute_cvg_noflip(extent_t *Spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base);
- void compute_cvg_flip(extent_t *Spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base);
-
- void* AuxBuf;
- UINT32 AuxBufPtr;
- UINT32 AuxBufIndex;
-
- void* ExtentBuf[2];
- UINT32 ExtentBufPtr[2];
- UINT32 ExtentBufIndex;
-
- bool rdp_range_check(UINT32 addr);
-
- N64Tile m_tiles[8];
-
- protected:
- CombineModesT m_combine;
- bool m_pending_mode_block;
- bool m_pipe_clean;
-
- struct CVMASKDERIVATIVE
- {
- UINT8 cvg;
- UINT8 cvbit;
- UINT8 xoff;
- UINT8 yoff;
- };
- CVMASKDERIVATIVE cvarray[(1 << 8)];
-
- UINT16 z_com_table[0x40000]; //precalced table of compressed z values, 18b: 512 KB array!
- UINT32 z_complete_dec_table[0x4000]; //the same for decompressed z values, 14b
- UINT8 compressed_cvmasks[0x10000]; //16bit cvmask -> to byte
- UINT32 m_cmd_data[0x1000];
- UINT32 m_temp_rect_data[0x1000];
-
- int m_cmd_ptr;
- int m_cmd_cur;
-
- UINT32 m_start;
- UINT32 m_end;
- UINT32 m_current;
- UINT32 m_status;
-
- UINT8* m_tmem;
-
- running_machine* m_machine;
+ memset(m_tiles, 0, 8 * sizeof(n64_tile_t));
+ memset(m_cmd_data, 0, sizeof(m_cmd_data));
+ }
- // YUV factors
- INT32 m_k0;
- INT32 m_k1;
- INT32 m_k2;
- INT32 m_k3;
- INT32 m_k4;
- INT32 m_k5;
+ void process_command_list();
+ UINT32 read_data(UINT32 address);
+ void disassemble(char* buffer);
+
+ void set_machine(running_machine& machine) { m_machine = &machine; }
+
+ // CPU-visible registers
+ void set_start(UINT32 val) { m_start = val; }
+ UINT32 get_start() const { return m_start; }
+
+ void set_end(UINT32 val) { m_end = val; }
+ UINT32 get_end() const { return m_end; }
+
+ void set_current(UINT32 val) { m_current = val; }
+ UINT32 get_current() const { return m_current; }
+
+ void set_status(UINT32 val) { m_status = val; }
+ UINT32 get_status() const { return m_status; }
+
+ // Color Combiner
+ INT32 color_combiner_equation(INT32 a, INT32 b, INT32 c, INT32 d);
+ INT32 alpha_combiner_equation(INT32 a, INT32 b, INT32 c, INT32 d);
+ void set_suba_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata);
+ void set_subb_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata);
+ void set_mul_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata);
+ void set_add_input_rgb(UINT8** input_r, UINT8** input_g, UINT8** input_b, INT32 code, rdp_span_aux* userdata);
+ void set_sub_input_alpha(UINT8** input, INT32 code, rdp_span_aux* userdata);
+ void set_mul_input_alpha(UINT8** input, INT32 code, rdp_span_aux* userdata);
+
+ // Texture memory
+ UINT8* get_tmem8() { return m_tmem; }
+ UINT16* get_tmem16() { return (UINT16*)m_tmem; }
+
+ // Emulation Accelerators
+ UINT8 get_random() { return m_misc_state.m_random_seed += 0x13; }
+
+ // YUV Factors
+ void set_yuv_factors(INT32 k0, INT32 k1, INT32 k2, INT32 k3, INT32 k4, INT32 k5) { m_k0 = k0; m_k1 = k1; m_k2 = k2; m_k3 = k3; m_k4 = k4; m_k5 = k5; }
+ INT32 get_k0() const { return m_k0; }
+ INT32 get_k1() const { return m_k1; }
+ INT32 get_k2() const { return m_k2; }
+ INT32 get_k3() const { return m_k3; }
+ INT32* get_k4() { return &m_k4; }
+ INT32* get_k5() { return &m_k5; }
+
+ // Blender-related (move into RDP::Blender)
+ void set_blender_input(INT32 cycle, INT32 which, UINT8** input_r, UINT8** input_g, UINT8** input_b, UINT8** input_a, INT32 a, INT32 b, rdp_span_aux* userdata);
+
+ // Span rasterization
+ void span_draw_1cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid);
+ void span_draw_2cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid);
+ void span_draw_copy(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid);
+ void span_draw_fill(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid);
+
+ // Render-related (move into eventual drawing-related classes?)
+ void tc_div(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst);
+ void tc_div_no_perspective(INT32 ss, INT32 st, INT32 sw, INT32* sss, INT32* sst);
+ UINT32 get_log2(UINT32 lod_clamp);
+ void render_spans(INT32 start, INT32 end, INT32 tilenum, bool flip, extent_t* spans, bool rect, rdp_poly_state* object);
+ void get_alpha_cvg(UINT8* comb_alpha, rdp_span_aux* userdata, const rdp_poly_state &object);
+
+ void z_store(const rdp_poly_state &object, UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 z, UINT32 enc);
+ UINT32 z_decompress(UINT32 zcurpixel);
+ UINT32 dz_decompress(UINT32 zcurpixel, UINT32 dzcurpixel);
+ UINT32 dz_compress(UINT32 value);
+ INT32 normalize_dzpix(INT32 sum);
+ bool z_compare(UINT32 zcurpixel, UINT32 dzcurpixel, UINT32 sz, UINT16 dzpix, rdp_span_aux* userdata, const rdp_poly_state &object);
+
+ // Fullscreen update-related
+ void video_update(n64_periphs* n64, bitmap_rgb32 &bitmap);
+
+ // Commands
+ void cmd_invalid(UINT32 w1, UINT32 w2);
+ void cmd_noop(UINT32 w1, UINT32 w2);
+ void cmd_triangle(UINT32 w1, UINT32 w2);
+ void cmd_triangle_z(UINT32 w1, UINT32 w2);
+ void cmd_triangle_t(UINT32 w1, UINT32 w2);
+ void cmd_triangle_tz(UINT32 w1, UINT32 w2);
+ void cmd_triangle_s(UINT32 w1, UINT32 w2);
+ void cmd_triangle_sz(UINT32 w1, UINT32 w2);
+ void cmd_triangle_st(UINT32 w1, UINT32 w2);
+ void cmd_triangle_stz(UINT32 w1, UINT32 w2);
+ void cmd_tex_rect(UINT32 w1, UINT32 w2);
+ void cmd_tex_rect_flip(UINT32 w1, UINT32 w2);
+ void cmd_sync_load(UINT32 w1, UINT32 w2);
+ void cmd_sync_pipe(UINT32 w1, UINT32 w2);
+ void cmd_sync_tile(UINT32 w1, UINT32 w2);
+ void cmd_sync_full(UINT32 w1, UINT32 w2);
+ void cmd_set_key_gb(UINT32 w1, UINT32 w2);
+ void cmd_set_key_r(UINT32 w1, UINT32 w2);
+ void cmd_set_fill_color32(UINT32 w1, UINT32 w2);
+ void cmd_set_convert(UINT32 w1, UINT32 w2);
+ void cmd_set_scissor(UINT32 w1, UINT32 w2);
+ void cmd_set_prim_depth(UINT32 w1, UINT32 w2);
+ void cmd_set_other_modes(UINT32 w1, UINT32 w2);
+ void cmd_load_tlut(UINT32 w1, UINT32 w2);
+ void cmd_set_tile_size(UINT32 w1, UINT32 w2);
+ void cmd_load_block(UINT32 w1, UINT32 w2);
+ void cmd_load_tile(UINT32 w1, UINT32 w2);
+ void cmd_fill_rect(UINT32 w1, UINT32 w2);
+ void cmd_set_tile(UINT32 w1, UINT32 w2);
+ void cmd_set_fog_color(UINT32 w1, UINT32 w2);
+ void cmd_set_blend_color(UINT32 w1, UINT32 w2);
+ void cmd_set_prim_color(UINT32 w1, UINT32 w2);
+ void cmd_set_env_color(UINT32 w1, UINT32 w2);
+ void cmd_set_combine(UINT32 w1, UINT32 w2);
+ void cmd_set_texture_image(UINT32 w1, UINT32 w2);
+ void cmd_set_mask_image(UINT32 w1, UINT32 w2);
+ void cmd_set_color_image(UINT32 w1, UINT32 w2);
+
+ void rgbaz_clip(INT32 sr, INT32 sg, INT32 sb, INT32 sa, INT32* sz, rdp_span_aux* userdata);
+ void rgbaz_correct_triangle(INT32 offx, INT32 offy, INT32* r, INT32* g, INT32* b, INT32* a, INT32* z, rdp_span_aux* userdata, const rdp_poly_state &object);
+
+ void triangle(bool shade, bool texture, bool zbuffer);
+
+ void get_dither_values(INT32 x, INT32 y, INT32* cdith, INT32* adith, const rdp_poly_state &object);
+
+ UINT16 decompress_cvmask_frombyte(UINT8 x);
+ void lookup_cvmask_derivatives(UINT32 mask, UINT8* offx, UINT8* offy, rdp_span_aux* userdata);
+
+ misc_state_t m_misc_state;
+
+ // Color constants
+ color_t m_blend_color; /* constant blend color */
+ color_t m_prim_color; /* flat primitive color */
+ color_t m_env_color; /* generic color constant ('environment') */
+ color_t m_fog_color; /* generic color constant ('fog') */
+ color_t m_key_scale; /* color-keying constant */
+ UINT8 m_lod_fraction; /* Z-based LOD fraction for this poly */
+ UINT8 m_prim_lod_fraction; /* fixed LOD fraction for this poly */
+
+ color_t m_one;
+ color_t m_zero;
+
+ UINT32 m_fill_color;
+
+ other_modes_t m_other_modes;
+
+ n64_blender_t m_blender;
+
+ n64_texture_pipe_t m_tex_pipe;
+
+ UINT8 m_hidden_bits[0x800000];
+
+ UINT8 m_replicated_rgba[32];
+
+ UINT16 m_dzpix_normalize[0x10000];
+
+ rectangle_t m_scissor;
+ span_base_t m_span_base;
+
+ rectangle m_visarea;
+
+ void draw_triangle(bool shade, bool texture, bool zbuffer, bool rect);
+ void compute_cvg_noflip(extent_t* spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base);
+ void compute_cvg_flip(extent_t* spans, INT32* majorx, INT32* minorx, INT32* majorxint, INT32* minorxint, INT32 scanline, INT32 yh, INT32 yl, INT32 base);
+
+ void* m_aux_buf;
+ UINT32 m_aux_buf_ptr;
+ UINT32 m_aux_buf_index;
+
+ bool rdp_range_check(UINT32 addr);
+
+ n64_tile_t m_tiles[8];
+
+private:
+ void write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp_span_aux* userdata, const rdp_poly_state &object);
+ void read_pixel(UINT32 curpixel, rdp_span_aux* userdata, const rdp_poly_state &object);
+ void copy_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, INT32 m_current_pix_cvg, const rdp_poly_state &object);
+ void fill_pixel(UINT32 curpixel, const rdp_poly_state &object);
+
+ void precalc_cvmask_derivatives(void);
+ void z_build_com_table(void);
+
+ void video_update16(n64_periphs* n64, bitmap_rgb32 &bitmap);
+ void video_update32(n64_periphs* n64, bitmap_rgb32 &bitmap);
+
+ running_machine* m_machine;
+
+ combine_modes_t m_combine;
+ bool m_pending_mode_block;
+ bool m_pipe_clean;
- // Texture perspective division
- INT32 m_norm_point_rom[64];
- INT32 m_norm_slope_rom[64];
+ cv_mask_derivative_t cvarray[(1 << 8)];
- static const UINT8 s_bayer_matrix[16];
- static const UINT8 s_magic_matrix[16];
+ UINT16 m_z_com_table[0x40000]; //precalced table of compressed z values, 18b: 512 KB array!
+ UINT32 m_z_complete_dec_table[0x4000]; //the same for decompressed z values, 14b
+ UINT8 m_compressed_cvmasks[0x10000]; //16bit cvmask -> to byte
- INT32 m_gamma_table[256];
- INT32 m_gamma_dither_table[0x4000];
+ UINT32 m_cmd_data[0x1000];
+ UINT32 m_temp_rect_data[0x1000];
- static UINT32 s_special_9bit_clamptable[512];
+ INT32 m_cmd_ptr;
+ INT32 m_cmd_cur;
- Copier _Copy[2];
- Filler _Fill[2];
+ UINT32 m_start;
+ UINT32 m_end;
+ UINT32 m_current;
+ UINT32 m_status;
- void write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp_span_aux *userdata, const rdp_poly_state &object);
- void read_pixel(UINT32 curpixel, rdp_span_aux *userdata, const rdp_poly_state &object);
- void copy_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, int CurrentPixCvg, const rdp_poly_state &object);
- void fill_pixel(UINT32 curpixel, const rdp_poly_state &object);
+ UINT8* m_tmem;
- class ZDecompressEntry
- {
- public:
- UINT32 shift;
- UINT32 add;
- };
+ // YUV factors
+ INT32 m_k0;
+ INT32 m_k1;
+ INT32 m_k2;
+ INT32 m_k3;
+ INT32 m_k4;
+ INT32 m_k5;
- void precalc_cvmask_derivatives(void);
- void z_build_com_table(void);
- static const ZDecompressEntry z_dec_table[8];
+ // Texture perspective division
+ INT32 m_norm_point_rom[64];
+ INT32 m_norm_slope_rom[64];
- // Internal screen-update functions
- void VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap);
- void VideoUpdate32(n64_periphs *n64, bitmap_rgb32 &bitmap);
+ INT32 m_gamma_table[256];
+ INT32 m_gamma_dither_table[0x4000];
- typedef void (*Command)(UINT32 w1, UINT32 w2);
+ static UINT32 s_special_9bit_clamptable[512];
+ static const z_decompress_entry_t m_z_dec_table[8];
- static const Command m_commands[0x40];
+ static const UINT8 s_bayer_matrix[16];
+ static const UINT8 s_magic_matrix[16];
+ static const rdp_command_t m_commands[0x40];
+ static const INT32 s_rdp_command_length[];
+ static const char* s_image_format[];
+ static const char* s_image_size[];
};
#endif // _VIDEO_N64_H_
diff --git a/src/mame/video/rdpbhelp.h b/src/mame/video/rdpbhelp.h
index 277c6535aa6..1725d01398a 100644
--- a/src/mame/video/rdpbhelp.h
+++ b/src/mame/video/rdpbhelp.h
@@ -11,161 +11,3 @@
******************************************************************************/
-
-#ifndef _VIDEO_RDPBHELP_H_
-#define _VIDEO_RDPBHELP_H_
-
-#include "emu.h"
-#include "includes/n64.h"
-#include "video/n64.h"
-
-#define DITHER_A(val, dith) \
- if ((val + dith) >= 0x100) \
- { \
- val = 0xff; \
- } \
- else \
- { \
- val += dith; \
- }
-
-#define DITHER_CHAN(chan, dith) \
- if ((chan & 7) > dith) \
- { \
- chan = (chan & 0xf8) + 8; \
- if (chan > 247) \
- { \
- chan = 255; \
- } \
- }
-
-#define DITHER_RGB(dith) \
- DITHER_CHAN(r, dith) \
- DITHER_CHAN(g, dith) \
- DITHER_CHAN(b, dith)
-
-#define ALPHA_COMPARE() \
- if (((this)->*(compare[acmode]))(userdata->PixelColor.i.a, userdata, object)) \
- { \
- return false; \
- }
-
-#define CVG_COMPARE() \
- if (object.OtherModes.antialias_en ? (!userdata->CurrentPixCvg) : (!userdata->CurrentCvgBit)) \
- { \
- return false; \
- }
-
-#define TEST_REJECT() \
- ALPHA_COMPARE(); \
- CVG_COMPARE();
-
-#define WRITE_OUT_NB_ND(cycle) \
- *fr = *userdata->ColorInputs.blender1a_r[cycle]; \
- *fg = *userdata->ColorInputs.blender1a_g[cycle]; \
- *fb = *userdata->ColorInputs.blender1a_b[cycle];
-
-#define WRITE_OUT() \
- *fr = r; \
- *fg = g; \
- *fb = b;
-
-#define WRITE_BLENDED_COLOR() \
- userdata->BlendedPixelColor.i.r = r; \
- userdata->BlendedPixelColor.i.g = g; \
- userdata->BlendedPixelColor.i.b = b; \
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
-
-#define BLEND_CYCLE0(cyc) \
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[cyc]; \
- ((this)->*(cycle##cyc[sel##cyc]))(&r, &g, &b, userdata, object);
-#define BLEND_CYCLE1(cyc) \
- if (partialreject && userdata->PixelColor.i.a >= 0xff) \
- { \
- ASSIGN_OUT(cyc); \
- } \
- else \
- { \
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[cyc]; \
- ((this)->*(cycle##cyc[sel##cyc]))(&r, &g, &b, userdata, object); \
- }
-
-#define BLEND_CYCLE(cyc, check_reject) \
- BLEND_CYCLE##check_reject(cyc)
-
-#define BLEND_FACTORS0(cycle) \
- UINT8 blend1a = *userdata->ColorInputs.blender1b_a[cycle] >> 3; \
- UINT8 blend2a = *userdata->ColorInputs.blender2b_a[cycle] >> 3;
-
-#define BLEND_FACTORS1(cycle) \
- UINT8 blend1a = (*userdata->ColorInputs.blender1b_a[cycle] >> (3 + userdata->ShiftA)) & 0x1c; \
- UINT8 blend2a = (*userdata->ColorInputs.blender2b_a[cycle] >> (3 + userdata->ShiftB)) & 0x1c;
-
-#define BLEND_SUM0() ;
-
-#define BLEND_SUM1() \
- UINT32 sum = ((blend1a >> 2) + (blend2a >> 2) + 1) & 0xf;
-
-#define BLEND_FACTORS(cycle, special, sum) \
- BLEND_FACTORS##special(cycle); \
- BLEND_SUM##sum();
-
-#define BLEND_MUL(cycle) \
- *r = (((int)(*userdata->ColorInputs.blender1a_r[cycle]) * (int)(blend1a))) + \
- (((int)(*userdata->ColorInputs.blender2a_r[cycle]) * (int)(blend2a))); \
- *g = (((int)(*userdata->ColorInputs.blender1a_g[cycle]) * (int)(blend1a))) + \
- (((int)(*userdata->ColorInputs.blender2a_g[cycle]) * (int)(blend2a))); \
- *b = (((int)(*userdata->ColorInputs.blender1a_b[cycle]) * (int)(blend1a))) + \
- (((int)(*userdata->ColorInputs.blender2a_b[cycle]) * (int)(blend2a)));
-
-#define BLEND_ADD1(cycle) \
- *r += (((int)*userdata->ColorInputs.blender2a_r[cycle]) << 2); \
- *g += (((int)*userdata->ColorInputs.blender2a_g[cycle]) << 2); \
- *b += (((int)*userdata->ColorInputs.blender2a_b[cycle]) << 2);
-
-#define BLEND_ADD0(cycle) \
- *r += (int)*userdata->ColorInputs.blender2a_r[cycle]; \
- *g += (int)*userdata->ColorInputs.blender2a_g[cycle]; \
- *b += (int)*userdata->ColorInputs.blender2a_b[cycle];
-
-#define BLEND_ADD(cycle, special) \
- BLEND_ADD##special(cycle);
-
-#define BLEND_SHIFT(shift) \
- *r >>= shift; \
- *g >>= shift; \
- *b >>= shift;
-
-#define BLEND_CLAMP() \
- if (*r > 255) *r = 255; \
- if (*g > 255) *g = 255; \
- if (*b > 255) *b = 255;
-
-#define BLEND_SCALE() \
- if (sum) \
- { \
- *r /= sum; \
- *g /= sum; \
- *b /= sum; \
- } \
- else \
- { \
- *r = *g = *b = 0xff; \
- }
-
-#define BLEND_SCALE_CLAMP0() \
- BLEND_CLAMP();
-
-#define BLEND_SCALE_CLAMP1() \
- BLEND_SCALE(); \
- BLEND_CLAMP();
-
-#define BLEND_SCALE_CLAMP(sum) \
- BLEND_SCALE_CLAMP##sum();
-
-#define ASSIGN_OUT(cycle) \
- r = *userdata->ColorInputs.blender1a_r[cycle]; \
- g = *userdata->ColorInputs.blender1a_g[cycle]; \
- b = *userdata->ColorInputs.blender1a_b[cycle];
-
-#endif // _VIDEO_RDPBHELP_H_
diff --git a/src/mame/video/rdpblend.c b/src/mame/video/rdpblend.c
index 326eee2dd41..98030ee11fb 100644
--- a/src/mame/video/rdpblend.c
+++ b/src/mame/video/rdpblend.c
@@ -18,25 +18,25 @@
#include "video/n64.h"
#include "video/rdpbhelp.h"
-N64BlenderT::N64BlenderT()
+n64_blender_t::n64_blender_t()
{
- blend1[0] = &N64BlenderT::Blend1CycleNoBlendNoACVGNoDither;
- blend1[1] = &N64BlenderT::Blend1CycleNoBlendNoACVGDither;
- blend1[2] = &N64BlenderT::Blend1CycleNoBlendACVGNoDither;
- blend1[3] = &N64BlenderT::Blend1CycleNoBlendACVGDither;
- blend1[4] = &N64BlenderT::Blend1CycleBlendNoACVGNoDither;
- blend1[5] = &N64BlenderT::Blend1CycleBlendNoACVGDither;
- blend1[6] = &N64BlenderT::Blend1CycleBlendACVGNoDither;
- blend1[7] = &N64BlenderT::Blend1CycleBlendACVGDither;
-
- blend2[0] = &N64BlenderT::Blend2CycleNoBlendNoACVGNoDither;
- blend2[1] = &N64BlenderT::Blend2CycleNoBlendNoACVGDither;
- blend2[2] = &N64BlenderT::Blend2CycleNoBlendACVGNoDither;
- blend2[3] = &N64BlenderT::Blend2CycleNoBlendACVGDither;
- blend2[4] = &N64BlenderT::Blend2CycleBlendNoACVGNoDither;
- blend2[5] = &N64BlenderT::Blend2CycleBlendNoACVGDither;
- blend2[6] = &N64BlenderT::Blend2CycleBlendACVGNoDither;
- blend2[7] = &N64BlenderT::Blend2CycleBlendACVGDither;
+ blend1[0] = &n64_blender_t::cycle1_noblend_noacvg_nodither;
+ blend1[1] = &n64_blender_t::cycle1_noblend_noacvg_dither;
+ blend1[2] = &n64_blender_t::cycle1_noblend_acvg_nodither;
+ blend1[3] = &n64_blender_t::cycle1_noblend_acvg_dither;
+ blend1[4] = &n64_blender_t::cycle1_blend_noacvg_nodither;
+ blend1[5] = &n64_blender_t::cycle1_blend_noacvg_dither;
+ blend1[6] = &n64_blender_t::cycle1_blend_acvg_nodither;
+ blend1[7] = &n64_blender_t::cycle1_blend_acvg_dither;
+
+ blend2[0] = &n64_blender_t::cycle2_noblend_noacvg_nodither;
+ blend2[1] = &n64_blender_t::cycle2_noblend_noacvg_dither;
+ blend2[2] = &n64_blender_t::cycle2_noblend_acvg_nodither;
+ blend2[3] = &n64_blender_t::cycle2_noblend_acvg_dither;
+ blend2[4] = &n64_blender_t::cycle2_blend_noacvg_nodither;
+ blend2[5] = &n64_blender_t::cycle2_blend_noacvg_dither;
+ blend2[6] = &n64_blender_t::cycle2_blend_acvg_nodither;
+ blend2[7] = &n64_blender_t::cycle2_blend_acvg_dither;
for (int value = 0; value < 256; value++)
{
@@ -48,12 +48,12 @@ N64BlenderT::N64BlenderT()
}
}
-INT32 N64BlenderT::dither_alpha(INT32 alpha, INT32 dither)
+INT32 n64_blender_t::dither_alpha(INT32 alpha, INT32 dither)
{
return min(alpha + dither, 0xff);
}
-INT32 N64BlenderT::dither_color(INT32 color, INT32 dither)
+INT32 n64_blender_t::dither_color(INT32 color, INT32 dither)
{
if ((color & 7) > dither)
{
@@ -66,104 +66,104 @@ INT32 N64BlenderT::dither_color(INT32 color, INT32 dither)
return color;
}
-bool N64BlenderT::test_for_reject(rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::test_for_reject(rdp_span_aux* userdata, const rdp_poly_state& object)
{
if (alpha_reject(userdata, object))
{
return true;
}
- if (object.OtherModes.antialias_en ? !userdata->CurrentPixCvg : !userdata->CurrentCvgBit)
+ if (object.m_other_modes.antialias_en ? !userdata->m_current_pix_cvg : !userdata->m_current_cvg_bit)
{
return true;
}
return false;
}
-bool N64BlenderT::alpha_reject(rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::alpha_reject(rdp_span_aux* userdata, const rdp_poly_state& object)
{
- switch (object.OtherModes.alpha_dither_mode)
+ switch (object.m_other_modes.alpha_dither_mode)
{
case 0:
case 1:
return false;
case 2:
- return userdata->PixelColor.i.a < userdata->BlendColor.i.a;
+ return userdata->m_pixel_color.i.a < userdata->m_blend_color.i.a;
case 3:
- return userdata->PixelColor.i.a < (rand() & 0xff);
+ return userdata->m_pixel_color.i.a < (rand() & 0xff);
default:
return false;
}
}
-bool N64BlenderT::Blend1CycleNoBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_noblend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- *fr = *userdata->ColorInputs.blender1a_r[0];
- *fg = *userdata->ColorInputs.blender1a_g[0];
- *fb = *userdata->ColorInputs.blender1a_b[0];
+ *fr = *userdata->m_color_inputs.blender1a_r[0];
+ *fg = *userdata->m_color_inputs.blender1a_g[0];
+ *fb = *userdata->m_color_inputs.blender1a_b[0];
return true;
}
-bool N64BlenderT::Blend1CycleNoBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_noblend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- *fr = m_color_dither[((*userdata->ColorInputs.blender1a_r[0] & 0xff) << 3) | dith];
- *fg = m_color_dither[((*userdata->ColorInputs.blender1a_g[0] & 0xff) << 3) | dith];
- *fb = m_color_dither[((*userdata->ColorInputs.blender1a_b[0] & 0xff) << 3) | dith];
+ *fr = m_color_dither[((*userdata->m_color_inputs.blender1a_r[0] & 0xff) << 3) | dith];
+ *fg = m_color_dither[((*userdata->m_color_inputs.blender1a_g[0] & 0xff) << 3) | dith];
+ *fb = m_color_dither[((*userdata->m_color_inputs.blender1a_b[0] & 0xff) << 3) | dith];
return true;
}
-bool N64BlenderT::Blend1CycleNoBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_noblend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- *fr = *userdata->ColorInputs.blender1a_r[0];
- *fg = *userdata->ColorInputs.blender1a_g[0];
- *fb = *userdata->ColorInputs.blender1a_b[0];
+ *fr = *userdata->m_color_inputs.blender1a_r[0];
+ *fg = *userdata->m_color_inputs.blender1a_g[0];
+ *fb = *userdata->m_color_inputs.blender1a_b[0];
return true;
}
-bool N64BlenderT::Blend1CycleNoBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_noblend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- *fr = m_color_dither[((*userdata->ColorInputs.blender1a_r[0] & 0xff) << 3) | dith];
- *fg = m_color_dither[((*userdata->ColorInputs.blender1a_g[0] & 0xff) << 3) | dith];
- *fb = m_color_dither[((*userdata->ColorInputs.blender1a_b[0] & 0xff) << 3) | dith];
+ *fr = m_color_dither[((*userdata->m_color_inputs.blender1a_r[0] & 0xff) << 3) | dith];
+ *fg = m_color_dither[((*userdata->m_color_inputs.blender1a_g[0] & 0xff) << 3) | dith];
+ *fb = m_color_dither[((*userdata->m_color_inputs.blender1a_b[0] & 0xff) << 3) | dith];
return true;
}
-bool N64BlenderT::Blend1CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_blend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
@@ -179,12 +179,12 @@ bool N64BlenderT::Blend1CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb
return true;
}
-bool N64BlenderT::Blend1CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_blend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
@@ -200,11 +200,11 @@ bool N64BlenderT::Blend1CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb,
return true;
}
-bool N64BlenderT::Blend1CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_blend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
@@ -220,11 +220,11 @@ bool N64BlenderT::Blend1CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb,
return true;
}
-bool N64BlenderT::Blend1CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle1_blend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
@@ -240,127 +240,127 @@ bool N64BlenderT::Blend1CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, in
return true;
}
-bool N64BlenderT::Blend2CycleNoBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_noblend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
- *fr = *userdata->ColorInputs.blender1a_r[1];
- *fg = *userdata->ColorInputs.blender1a_g[1];
- *fb = *userdata->ColorInputs.blender1a_b[1];
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
+ *fr = *userdata->m_color_inputs.blender1a_r[1];
+ *fg = *userdata->m_color_inputs.blender1a_g[1];
+ *fb = *userdata->m_color_inputs.blender1a_b[1];
return true;
}
-bool N64BlenderT::Blend2CycleNoBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_noblend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
- *fr = m_color_dither[((*userdata->ColorInputs.blender1a_r[1] & 0xff) << 3) | dith];
- *fg = m_color_dither[((*userdata->ColorInputs.blender1a_g[1] & 0xff) << 3) | dith];
- *fb = m_color_dither[((*userdata->ColorInputs.blender1a_b[1] & 0xff) << 3) | dith];
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
+ *fr = m_color_dither[((*userdata->m_color_inputs.blender1a_r[1] & 0xff) << 3) | dith];
+ *fg = m_color_dither[((*userdata->m_color_inputs.blender1a_g[1] & 0xff) << 3) | dith];
+ *fb = m_color_dither[((*userdata->m_color_inputs.blender1a_b[1] & 0xff) << 3) | dith];
return true;
}
-bool N64BlenderT::Blend2CycleNoBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_noblend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
- *fr = *userdata->ColorInputs.blender1a_r[1];
- *fg = *userdata->ColorInputs.blender1a_g[1];
- *fb = *userdata->ColorInputs.blender1a_b[1];
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
+ *fr = *userdata->m_color_inputs.blender1a_r[1];
+ *fg = *userdata->m_color_inputs.blender1a_g[1];
+ *fb = *userdata->m_color_inputs.blender1a_b[1];
return true;
}
-bool N64BlenderT::Blend2CycleNoBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_noblend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
- *fr = m_color_dither[((*userdata->ColorInputs.blender1a_r[1] & 0xff) << 3) | dith];
- *fg = m_color_dither[((*userdata->ColorInputs.blender1a_g[1] & 0xff) << 3) | dith];
- *fb = m_color_dither[((*userdata->ColorInputs.blender1a_b[1] & 0xff) << 3) | dith];
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
+ *fr = m_color_dither[((*userdata->m_color_inputs.blender1a_r[1] & 0xff) << 3) | dith];
+ *fg = m_color_dither[((*userdata->m_color_inputs.blender1a_g[1] & 0xff) << 3) | dith];
+ *fb = m_color_dither[((*userdata->m_color_inputs.blender1a_b[1] & 0xff) << 3) | dith];
return true;
}
-bool N64BlenderT::Blend2CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_blend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
blend_with_partial_reject(&r, &g, &b, 1, partialreject, sel1, userdata, object);
@@ -371,25 +371,25 @@ bool N64BlenderT::Blend2CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb
return true;
}
-bool N64BlenderT::Blend2CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_blend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->PixelColor.i.a = m_alpha_dither[(userdata->PixelColor.i.a << 3) | adseed];
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_pixel_color.i.a = m_alpha_dither[(userdata->m_pixel_color.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
blend_with_partial_reject(&r, &g, &b, 1, partialreject, sel1, userdata, object);
@@ -400,24 +400,24 @@ bool N64BlenderT::Blend2CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb,
return true;
}
-bool N64BlenderT::Blend2CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_blend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
blend_with_partial_reject(&r, &g, &b, 1, partialreject, sel1, userdata, object);
@@ -428,24 +428,24 @@ bool N64BlenderT::Blend2CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb,
return true;
}
-bool N64BlenderT::Blend2CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object)
+bool n64_blender_t::cycle2_blend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object)
{
INT32 r, g, b;
- userdata->ShadeColor.i.a = m_alpha_dither[(userdata->ShadeColor.i.a << 3) | adseed];
+ userdata->m_shade_color.i.a = m_alpha_dither[(userdata->m_shade_color.i.a << 3) | adseed];
if (test_for_reject(userdata, object))
{
return false;
}
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[0];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[0];
blend_pipe(0, sel0, &r, &g, &b, userdata, object);
- userdata->BlendedPixelColor.i.r = r;
- userdata->BlendedPixelColor.i.g = g;
- userdata->BlendedPixelColor.i.b = b;
- userdata->BlendedPixelColor.i.a = userdata->PixelColor.i.a;
+ userdata->m_blended_pixel_color.i.r = r;
+ userdata->m_blended_pixel_color.i.g = g;
+ userdata->m_blended_pixel_color.i.b = b;
+ userdata->m_blended_pixel_color.i.a = userdata->m_pixel_color.i.a;
blend_with_partial_reject(&r, &g, &b, 1, partialreject, sel1, userdata, object);
@@ -456,43 +456,43 @@ bool N64BlenderT::Blend2CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, in
return true;
}
-void N64BlenderT::blend_with_partial_reject(INT32* r, INT32* g, INT32* b, INT32 cycle, INT32 partialreject, INT32 select, rdp_span_aux *userdata, const rdp_poly_state& object)
+void n64_blender_t::blend_with_partial_reject(INT32* r, INT32* g, INT32* b, INT32 cycle, INT32 partialreject, INT32 select, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- if (partialreject && userdata->PixelColor.i.a >= 0xff)
+ if (partialreject && userdata->m_pixel_color.i.a >= 0xff)
{
- *r = *userdata->ColorInputs.blender1a_r[cycle];
- *g = *userdata->ColorInputs.blender1a_g[cycle];
- *b = *userdata->ColorInputs.blender1a_b[cycle];
+ *r = *userdata->m_color_inputs.blender1a_r[cycle];
+ *g = *userdata->m_color_inputs.blender1a_g[cycle];
+ *b = *userdata->m_color_inputs.blender1a_b[cycle];
}
else
{
- userdata->InvPixelColor.i.a = 0xff - *userdata->ColorInputs.blender1b_a[cycle];
+ userdata->m_inv_pixel_color.i.a = 0xff - *userdata->m_color_inputs.blender1b_a[cycle];
blend_pipe(cycle, select, r, g, b, userdata, object);
}
}
-void N64BlenderT::blend_pipe(const int cycle, const int special, int* r_out, int* g_out, int* b_out, rdp_span_aux *userdata, const rdp_poly_state& object)
+void n64_blender_t::blend_pipe(const int cycle, const int special, int* r_out, int* g_out, int* b_out, rdp_span_aux* userdata, const rdp_poly_state& object)
{
const INT32 mask = 0xff &~ (0x73 * special);
- const INT32 shift_a = 3 + userdata->ShiftA * special;
- const INT32 shift_b = 3 + userdata->ShiftB * special;
- const INT32 blend1a = (*userdata->ColorInputs.blender1b_a[cycle] >> shift_a) & mask;
- const INT32 blend2a = (*userdata->ColorInputs.blender2b_a[cycle] >> shift_b) & mask;
+ const INT32 shift_a = 3 + userdata->m_shift_a * special;
+ const INT32 shift_b = 3 + userdata->m_shift_b * special;
+ const INT32 blend1a = (*userdata->m_color_inputs.blender1b_a[cycle] >> shift_a) & mask;
+ const INT32 blend2a = (*userdata->m_color_inputs.blender2b_a[cycle] >> shift_b) & mask;
const INT32 special_shift = special << 1;
- INT32 r = (((int)(*userdata->ColorInputs.blender1a_r[cycle]) * (int)(blend1a))) + (((int)(*userdata->ColorInputs.blender2a_r[cycle]) * (int)(blend2a)));
- INT32 g = (((int)(*userdata->ColorInputs.blender1a_g[cycle]) * (int)(blend1a))) + (((int)(*userdata->ColorInputs.blender2a_g[cycle]) * (int)(blend2a)));
- INT32 b = (((int)(*userdata->ColorInputs.blender1a_b[cycle]) * (int)(blend1a))) + (((int)(*userdata->ColorInputs.blender2a_b[cycle]) * (int)(blend2a)));
+ INT32 r = (((int)(*userdata->m_color_inputs.blender1a_r[cycle]) * (int)(blend1a))) + (((int)(*userdata->m_color_inputs.blender2a_r[cycle]) * (int)(blend2a)));
+ INT32 g = (((int)(*userdata->m_color_inputs.blender1a_g[cycle]) * (int)(blend1a))) + (((int)(*userdata->m_color_inputs.blender2a_g[cycle]) * (int)(blend2a)));
+ INT32 b = (((int)(*userdata->m_color_inputs.blender1a_b[cycle]) * (int)(blend1a))) + (((int)(*userdata->m_color_inputs.blender2a_b[cycle]) * (int)(blend2a)));
- r += ((int)*userdata->ColorInputs.blender2a_r[cycle]) << special_shift;
- g += ((int)*userdata->ColorInputs.blender2a_g[cycle]) << special_shift;
- b += ((int)*userdata->ColorInputs.blender2a_b[cycle]) << special_shift;
+ r += ((int)*userdata->m_color_inputs.blender2a_r[cycle]) << special_shift;
+ g += ((int)*userdata->m_color_inputs.blender2a_g[cycle]) << special_shift;
+ b += ((int)*userdata->m_color_inputs.blender2a_b[cycle]) << special_shift;
- r >>= object.OtherModes.blend_shift;
- g >>= object.OtherModes.blend_shift;
- b >>= object.OtherModes.blend_shift;
+ r >>= object.m_other_modes.blend_shift;
+ g >>= object.m_other_modes.blend_shift;
+ b >>= object.m_other_modes.blend_shift;
- if (!object.OtherModes.force_blend)
+ if (!object.m_other_modes.force_blend)
{
INT32 factor_sum = ((blend1a >> 2) + (blend2a >> 2) + 1) & 0xf;
if (factor_sum)
@@ -512,7 +512,7 @@ void N64BlenderT::blend_pipe(const int cycle, const int special, int* r_out, int
*b_out = min(b, 255);
}
-inline INT32 N64BlenderT::min(const INT32 x, const INT32 min)
+inline INT32 n64_blender_t::min(const INT32 x, const INT32 min)
{
if (x < min)
{
diff --git a/src/mame/video/rdpblend.h b/src/mame/video/rdpblend.h
index e1e2206b965..4e6ab25e2b4 100644
--- a/src/mame/video/rdpblend.h
+++ b/src/mame/video/rdpblend.h
@@ -18,57 +18,56 @@
#include "emu.h"
-struct OtherModesT;
-struct MiscStateT;
+struct other_modes_t;
+struct misc_state_t;
class n64_rdp;
struct rdp_span_aux;
-class Color;
+class color_t;
struct rdp_poly_state;
-class N64BlenderT
+class n64_blender_t
{
public:
- typedef bool (N64BlenderT::*Blender1)(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- typedef bool (N64BlenderT::*Blender2)(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
+ typedef bool (n64_blender_t::*blender1)(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ typedef bool (n64_blender_t::*blender2)(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
- N64BlenderT();
+ n64_blender_t();
- Blender1 blend1[8];
- Blender2 blend2[8];
+ blender1 blend1[8];
+ blender2 blend2[8];
- void SetMachine(running_machine& machine) { m_machine = &machine; }
- void SetProcessor(n64_rdp* rdp) { m_rdp = rdp; }
+ void set_machine(running_machine& machine) { m_machine = &machine; }
+ void set_processor(n64_rdp* rdp) { m_rdp = rdp; }
running_machine &machine() const { assert(m_machine != NULL); return *m_machine; }
- INT32 min(const INT32 x, const INT32 min);
-
private:
running_machine* m_machine;
n64_rdp* m_rdp;
- bool alpha_reject(rdp_span_aux *userdata, const rdp_poly_state& object);
- bool test_for_reject(rdp_span_aux *userdata, const rdp_poly_state& object);
- void blend_pipe(const int cycle, const int special, int* r_out, int* g_out, int* b_out, rdp_span_aux *userdata, const rdp_poly_state& object);
- void blend_with_partial_reject(INT32* r, INT32* g, INT32* b, INT32 cycle, INT32 partialreject, INT32 select, rdp_span_aux *userdata, const rdp_poly_state& object);
-
- bool Blend1CycleNoBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleNoBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleNoBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleNoBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend1CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux *userdata, const rdp_poly_state& object);
-
- bool Blend2CycleNoBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleNoBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleNoBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleNoBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleBlendNoACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleBlendNoACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleBlendACVGNoDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
- bool Blend2CycleBlendACVGDither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux *userdata, const rdp_poly_state& object);
+ INT32 min(const INT32 x, const INT32 min);
+ bool alpha_reject(rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool test_for_reject(rdp_span_aux* userdata, const rdp_poly_state& object);
+ void blend_pipe(const int cycle, const int special, int* r_out, int* g_out, int* b_out, rdp_span_aux* userdata, const rdp_poly_state& object);
+ void blend_with_partial_reject(INT32* r, INT32* g, INT32* b, INT32 cycle, INT32 partialreject, INT32 select, rdp_span_aux* userdata, const rdp_poly_state& object);
+
+ bool cycle1_noblend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_noblend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_noblend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_noblend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_blend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_blend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_blend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle1_blend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, rdp_span_aux* userdata, const rdp_poly_state& object);
+
+ bool cycle2_noblend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_noblend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_noblend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_noblend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_blend_noacvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_blend_noacvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_blend_acvg_nodither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
+ bool cycle2_blend_acvg_dither(INT32* fr, INT32* fg, INT32* fb, int dith, int adseed, int partialreject, int sel0, int sel1, rdp_span_aux* userdata, const rdp_poly_state& object);
INT32 dither_alpha(INT32 alpha, INT32 dither);
INT32 dither_color(INT32 color, INT32 dither);
diff --git a/src/mame/video/rdpfiltr.inc b/src/mame/video/rdpfiltr.inc
index 5b9cdddab2d..aed5a730ad0 100644
--- a/src/mame/video/rdpfiltr.inc
+++ b/src/mame/video/rdpfiltr.inc
@@ -3,15 +3,15 @@
INLINE void video_filter16(int *out_r, int *out_g, int *out_b, UINT16* vbuff, UINT8* hbuff, const UINT32 hres);
INLINE void divot_filter16(UINT8* r, UINT8* g, UINT8* b, UINT16* fbuff, UINT32 fbuff_index);
INLINE void restore_filter16(INT32* r, INT32* g, INT32* b, UINT16* fbuff, UINT32 fbuff_index, UINT32 hres);
-INLINE void divot_filter16_buffer(INT32* r, INT32* g, INT32* b, Color* vibuffer);
-INLINE void restore_filter16_buffer(INT32* r, INT32* g, INT32* b, Color* vibuff, UINT32 hres);
-INLINE void restore_two(Color* filtered, Color* neighbour);
+INLINE void divot_filter16_buffer(INT32* r, INT32* g, INT32* b, color_t* vibuffer);
+INLINE void restore_filter16_buffer(INT32* r, INT32* g, INT32* b, color_t* vibuff, UINT32 hres);
+INLINE void restore_two(color_t* filtered, color_t* neighbour);
INLINE void video_max(UINT32* Pixels, UINT8* max, UINT32* enb);
INLINE UINT32 ge_two(UINT32 enb);
INLINE void video_filter16(int *out_r, int *out_g, int *out_b, UINT16* vbuff, UINT8* hbuff, const UINT32 hres)
{
- Color penumax, penumin, max, min;
+ color_t penumax, penumin, max, min;
UINT16 pix = *vbuff;
const UINT8 centercvg = (*hbuff & 3) + ((pix & 1) << 2) + 1;
UINT32 numoffull = 1;
@@ -255,11 +255,11 @@ INLINE void divot_filter16(UINT8* r, UINT8* g, UINT8* b, UINT16* fbuff, UINT32 f
}
}
-INLINE void divot_filter16_buffer(int* r, int* g, int* b, Color* vibuffer)
+INLINE void divot_filter16_buffer(int* r, int* g, int* b, color_t* vibuffer)
{
- Color leftpix = vibuffer[-1];
- Color rightpix = vibuffer[1];
- Color filtered = *vibuffer;
+ color_t leftpix = vibuffer[-1];
+ color_t rightpix = vibuffer[1];
+ color_t filtered = *vibuffer;
*r = filtered.i.r;
*g = filtered.i.g;
@@ -429,12 +429,12 @@ INLINE void restore_filter16(int* r, int* g, int* b, UINT16* fbuff, UINT32 fbuff
}
}
-INLINE void restore_filter16_buffer(INT32* r, INT32* g, INT32* b, Color* vibuff, UINT32 hres)
+INLINE void restore_filter16_buffer(INT32* r, INT32* g, INT32* b, color_t* vibuff, UINT32 hres)
{
- Color filtered;
- Color leftuppix, leftdownpix, leftpix;
- Color rightuppix, rightdownpix, rightpix;
- Color uppix, downpix;
+ color_t filtered;
+ color_t leftuppix, leftdownpix, leftpix;
+ color_t rightuppix, rightdownpix, rightpix;
+ color_t uppix, downpix;
INT32 ihres = (INT32)hres; //can't apply unary minus to unsigned
leftuppix = vibuff[-ihres - 1];
@@ -473,7 +473,7 @@ INLINE void restore_filter16_buffer(INT32* r, INT32* g, INT32* b, Color* vibuff,
}
// This is wrong, only the 5 upper bits are compared.
-INLINE void restore_two(Color* filtered, Color* neighbour)
+INLINE void restore_two(color_t* filtered, color_t* neighbour)
{
if (neighbour->i.r > filtered->i.r)
{
diff --git a/src/mame/video/rdpspn16.c b/src/mame/video/rdpspn16.c
index cc76391e5e4..8625f9b860b 100644
--- a/src/mame/video/rdpspn16.c
+++ b/src/mame/video/rdpspn16.c
@@ -17,13 +17,11 @@
#include "includes/n64.h"
#include "video/n64.h"
-#define LookUpCC(A, B, C, D) GetCCLUT2()[(GetCCLUT1()[(A << 16) | (B << 8) | C] << 8) | D]
-
-void n64_rdp::RenderSpans(int start, int end, int tilenum, bool flip, extent_t *Spans, bool rect, rdp_poly_state *object)
+void n64_rdp::render_spans(INT32 start, INT32 end, INT32 tilenum, bool flip, extent_t* spans, bool rect, rdp_poly_state* object)
{
- int clipy1 = Scissor.m_yh;
- int clipy2 = Scissor.m_yl;
- int offset = 0;
+ const INT32 clipy1 = m_scissor.m_yh;
+ const INT32 clipy2 = m_scissor.m_yl;
+ INT32 offset = 0;
if (clipy2 <= 0)
{
@@ -50,43 +48,43 @@ void n64_rdp::RenderSpans(int start, int end, int tilenum, bool flip, extent_t *
}
object->m_rdp = this;
- memcpy(&object->MiscState, &MiscState, sizeof(MiscStateT));
- memcpy(&object->OtherModes, &OtherModes, sizeof(OtherModesT));
- memcpy(&object->SpanBase, &SpanBase, sizeof(SpanBaseT));
- memcpy(&object->Scissor, &Scissor, sizeof(Rectangle));
- memcpy(&object->m_tiles, &m_tiles, 8 * sizeof(N64Tile));
+ memcpy(&object->m_misc_state, &m_misc_state, sizeof(misc_state_t));
+ memcpy(&object->m_other_modes, &m_other_modes, sizeof(other_modes_t));
+ memcpy(&object->m_span_base, &m_span_base, sizeof(span_base_t));
+ memcpy(&object->m_scissor, &m_scissor, sizeof(rectangle_t));
+ memcpy(&object->m_tiles, &m_tiles, 8 * sizeof(n64_tile_t));
object->tilenum = tilenum;
object->flip = flip;
- object->FillColor = FillColor;
+ object->m_fill_color = m_fill_color;
object->rect = rect;
- switch(OtherModes.cycle_type)
+ switch(m_other_modes.cycle_type)
{
case CYCLE_TYPE_1:
- render_triangle_custom(visarea, render_delegate(FUNC(n64_rdp::SpanDraw1Cycle), this), start, (end - start) + 1, Spans + offset);
+ render_triangle_custom(m_visarea, render_delegate(FUNC(n64_rdp::span_draw_1cycle), this), start, (end - start) + 1, spans + offset);
break;
case CYCLE_TYPE_2:
- render_triangle_custom(visarea, render_delegate(FUNC(n64_rdp::SpanDraw2Cycle), this), start, (end - start) + 1, Spans + offset);
+ render_triangle_custom(m_visarea, render_delegate(FUNC(n64_rdp::span_draw_2cycle), this), start, (end - start) + 1, spans + offset);
break;
case CYCLE_TYPE_COPY:
- render_triangle_custom(visarea, render_delegate(FUNC(n64_rdp::SpanDrawCopy), this), start, (end - start) + 1, Spans + offset);
+ render_triangle_custom(m_visarea, render_delegate(FUNC(n64_rdp::span_draw_copy), this), start, (end - start) + 1, spans + offset);
break;
case CYCLE_TYPE_FILL:
- render_triangle_custom(visarea, render_delegate(FUNC(n64_rdp::SpanDrawFill), this), start, (end - start) + 1, Spans + offset);
+ render_triangle_custom(m_visarea, render_delegate(FUNC(n64_rdp::span_draw_fill), this), start, (end - start) + 1, spans + offset);
break;
}
wait();
}
-void n64_rdp::RGBAZClip(int sr, int sg, int sb, int sa, int *sz, rdp_span_aux *userdata)
+void n64_rdp::rgbaz_clip(INT32 sr, INT32 sg, INT32 sb, INT32 sa, INT32* sz, rdp_span_aux* userdata)
{
- userdata->ShadeColor.i.r = s_special_9bit_clamptable[sr & 0x1ff];
- userdata->ShadeColor.i.g = s_special_9bit_clamptable[sg & 0x1ff];
- userdata->ShadeColor.i.b = s_special_9bit_clamptable[sb & 0x1ff];
- userdata->ShadeColor.i.a = s_special_9bit_clamptable[sa & 0x1ff];
+ userdata->m_shade_color.i.r = s_special_9bit_clamptable[sr & 0x1ff];
+ userdata->m_shade_color.i.g = s_special_9bit_clamptable[sg & 0x1ff];
+ userdata->m_shade_color.i.b = s_special_9bit_clamptable[sb & 0x1ff];
+ userdata->m_shade_color.i.a = s_special_9bit_clamptable[sa & 0x1ff];
INT32 zanded = (*sz) & 0x60000;
@@ -100,9 +98,9 @@ void n64_rdp::RGBAZClip(int sr, int sg, int sb, int sa, int *sz, rdp_span_aux *u
}
}
-void n64_rdp::RGBAZCorrectTriangle(INT32 offx, INT32 offy, INT32* r, INT32* g, INT32* b, INT32* a, INT32* z, rdp_span_aux *userdata, const rdp_poly_state &object)
+void n64_rdp::rgbaz_correct_triangle(INT32 offx, INT32 offy, INT32* r, INT32* g, INT32* b, INT32* a, INT32* z, rdp_span_aux* userdata, const rdp_poly_state &object)
{
- if (userdata->CurrentPixCvg == 8)
+ if (userdata->m_current_pix_cvg == 8)
{
*r >>= 2;
*g >>= 2;
@@ -112,17 +110,17 @@ void n64_rdp::RGBAZCorrectTriangle(INT32 offx, INT32 offy, INT32* r, INT32* g, I
}
else
{
- INT32 summand_xr = offx * SIGN13(object.SpanBase.m_span_dr >> 14);
- INT32 summand_yr = offy * SIGN13(object.SpanBase.m_span_drdy >> 14);
- INT32 summand_xb = offx * SIGN13(object.SpanBase.m_span_db >> 14);
- INT32 summand_yb = offy * SIGN13(object.SpanBase.m_span_dbdy >> 14);
- INT32 summand_xg = offx * SIGN13(object.SpanBase.m_span_dg >> 14);
- INT32 summand_yg = offy * SIGN13(object.SpanBase.m_span_dgdy >> 14);
- INT32 summand_xa = offx * SIGN13(object.SpanBase.m_span_da >> 14);
- INT32 summand_ya = offy * SIGN13(object.SpanBase.m_span_dady >> 14);
+ INT32 summand_xr = offx * SIGN13(object.m_span_base.m_span_dr >> 14);
+ INT32 summand_yr = offy * SIGN13(object.m_span_base.m_span_drdy >> 14);
+ INT32 summand_xb = offx * SIGN13(object.m_span_base.m_span_db >> 14);
+ INT32 summand_yb = offy * SIGN13(object.m_span_base.m_span_dbdy >> 14);
+ INT32 summand_xg = offx * SIGN13(object.m_span_base.m_span_dg >> 14);
+ INT32 summand_yg = offy * SIGN13(object.m_span_base.m_span_dgdy >> 14);
+ INT32 summand_xa = offx * SIGN13(object.m_span_base.m_span_da >> 14);
+ INT32 summand_ya = offy * SIGN13(object.m_span_base.m_span_dady >> 14);
- INT32 summand_xz = offx * SIGN22(object.SpanBase.m_span_dz >> 10);
- INT32 summand_yz = offy * SIGN22(object.SpanBase.m_span_dzdy >> 10);
+ INT32 summand_xz = offx * SIGN22(object.m_span_base.m_span_dz >> 10);
+ INT32 summand_yz = offy * SIGN22(object.m_span_base.m_span_dzdy >> 10);
*r = ((*r << 2) + summand_xr + summand_yr) >> 4;
*g = ((*g << 2) + summand_xg + summand_yg) >> 4;
@@ -132,14 +130,14 @@ void n64_rdp::RGBAZCorrectTriangle(INT32 offx, INT32 offy, INT32* r, INT32* g, I
}
}
-inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp_span_aux *userdata, const rdp_poly_state &object)
+inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp_span_aux* userdata, const rdp_poly_state &object)
{
- if (object.MiscState.FBSize == 2) // 16-bit framebuffer
+ if (object.m_misc_state.m_fb_size == 2) // 16-bit framebuffer
{
- const UINT32 fb = (object.MiscState.FBAddress >> 1) + curpixel;
+ const UINT32 fb = (object.m_misc_state.m_fb_address >> 1) + curpixel;
UINT16 finalcolor;
- if (object.OtherModes.color_on_cvg && !userdata->PreWrap)
+ if (object.m_other_modes.color_on_cvg && !userdata->m_pre_wrap)
{
finalcolor = RREADIDX16(fb) & 0xfffe;
}
@@ -148,12 +146,12 @@ inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp
finalcolor = ((r >> 3) << 11) | ((g >> 3) << 6) | ((b >> 3) << 1);
}
- switch (object.OtherModes.cvg_dest)
+ switch (object.m_other_modes.cvg_dest)
{
case 0:
- if (userdata->BlendEnable)
+ if (userdata->m_blend_enable)
{
- UINT32 finalcvg = userdata->CurrentPixCvg + userdata->CurrentMemCvg;
+ UINT32 finalcvg = userdata->m_current_pix_cvg + userdata->m_current_mem_cvg;
if (finalcvg & 8)
{
finalcvg = 7;
@@ -163,14 +161,14 @@ inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp
}
else
{
- const UINT32 finalcvg = (userdata->CurrentPixCvg - 1) & 7;
+ const UINT32 finalcvg = (userdata->m_current_pix_cvg - 1) & 7;
RWRITEIDX16(fb, finalcolor | (finalcvg >> 2));
HWRITEADDR8(fb, finalcvg & 3);
}
break;
case 1:
{
- const UINT32 finalcvg = (userdata->CurrentPixCvg + userdata->CurrentMemCvg) & 7;
+ const UINT32 finalcvg = (userdata->m_current_pix_cvg + userdata->m_current_mem_cvg) & 7;
RWRITEIDX16(fb, finalcolor | (finalcvg >> 2));
HWRITEADDR8(fb, finalcvg & 3);
break;
@@ -180,17 +178,17 @@ inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp
HWRITEADDR8(fb, 3);
break;
case 3:
- RWRITEIDX16(fb, finalcolor | (userdata->CurrentMemCvg >> 2));
- HWRITEADDR8(fb, userdata->CurrentMemCvg & 3);
+ RWRITEIDX16(fb, finalcolor | (userdata->m_current_mem_cvg >> 2));
+ HWRITEADDR8(fb, userdata->m_current_mem_cvg & 3);
break;
}
}
else // 32-bit framebuffer
{
- const UINT32 fb = (object.MiscState.FBAddress >> 2) + curpixel;
+ const UINT32 fb = (object.m_misc_state.m_fb_address >> 2) + curpixel;
UINT32 finalcolor;
- if (object.OtherModes.color_on_cvg && !userdata->PreWrap)
+ if (object.m_other_modes.color_on_cvg && !userdata->m_pre_wrap)
{
finalcolor = RREADIDX32(fb) & 0xffffff00;
}
@@ -199,12 +197,12 @@ inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp
finalcolor = (r << 24) | (g << 16) | (b << 8);
}
- switch (object.OtherModes.cvg_dest)
+ switch (object.m_other_modes.cvg_dest)
{
case 0:
- if (userdata->BlendEnable)
+ if (userdata->m_blend_enable)
{
- UINT32 finalcvg = userdata->CurrentPixCvg + userdata->CurrentMemCvg;
+ UINT32 finalcvg = userdata->m_current_pix_cvg + userdata->m_current_mem_cvg;
if (finalcvg & 8)
{
finalcvg = 7;
@@ -214,113 +212,113 @@ inline void n64_rdp::write_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, rdp
}
else
{
- RWRITEIDX32(fb, finalcolor | (((userdata->CurrentPixCvg - 1) & 7) << 5));
+ RWRITEIDX32(fb, finalcolor | (((userdata->m_current_pix_cvg - 1) & 7) << 5));
}
break;
case 1:
- RWRITEIDX32(fb, finalcolor | (((userdata->CurrentPixCvg + userdata->CurrentMemCvg) & 7) << 5));
+ RWRITEIDX32(fb, finalcolor | (((userdata->m_current_pix_cvg + userdata->m_current_mem_cvg) & 7) << 5));
break;
case 2:
RWRITEIDX32(fb, finalcolor | 0xE0);
break;
case 3:
- RWRITEIDX32(fb, finalcolor | (userdata->CurrentMemCvg << 5));
+ RWRITEIDX32(fb, finalcolor | (userdata->m_current_mem_cvg << 5));
break;
}
}
}
-inline void n64_rdp::read_pixel(UINT32 curpixel, rdp_span_aux *userdata, const rdp_poly_state &object)
+inline void n64_rdp::read_pixel(UINT32 curpixel, rdp_span_aux* userdata, const rdp_poly_state &object)
{
- if (object.MiscState.FBSize == 2) // 16-bit framebuffer
+ if (object.m_misc_state.m_fb_size == 2) // 16-bit framebuffer
{
UINT16 fword;
- if (object.OtherModes.image_read_en)
+ if (object.m_other_modes.image_read_en)
{
- fword = RREADIDX16((object.MiscState.FBAddress >> 1) + curpixel);
- UINT8 hbyte = HREADADDR8((object.MiscState.FBAddress >> 1) + curpixel);
- userdata->MemoryColor.i.a = userdata->CurrentMemCvg << 5;
- userdata->CurrentMemCvg = ((fword & 1) << 2) | (hbyte & 3);
+ fword = RREADIDX16((object.m_misc_state.m_fb_address >> 1) + curpixel);
+ UINT8 hbyte = HREADADDR8((object.m_misc_state.m_fb_address >> 1) + curpixel);
+ userdata->m_memory_color.i.a = userdata->m_current_mem_cvg << 5;
+ userdata->m_current_mem_cvg = ((fword & 1) << 2) | (hbyte & 3);
}
else
{
- fword = RREADIDX16((object.MiscState.FBAddress >> 1) + curpixel);
- userdata->MemoryColor.i.a = 0xff;
- userdata->CurrentMemCvg = 7;
+ fword = RREADIDX16((object.m_misc_state.m_fb_address >> 1) + curpixel);
+ userdata->m_memory_color.i.a = 0xff;
+ userdata->m_current_mem_cvg = 7;
}
- userdata->MemoryColor.i.r = GETHICOL(fword);
- userdata->MemoryColor.i.g = GETMEDCOL(fword);
- userdata->MemoryColor.i.b = GETLOWCOL(fword);
+ userdata->m_memory_color.i.r = GETHICOL(fword);
+ userdata->m_memory_color.i.g = GETMEDCOL(fword);
+ userdata->m_memory_color.i.b = GETLOWCOL(fword);
}
else // 32-bit framebuffer
{
UINT32 mem;
- if (object.OtherModes.image_read_en)
+ if (object.m_other_modes.image_read_en)
{
- mem = RREADIDX32((object.MiscState.FBAddress >> 2) + curpixel);
- userdata->MemoryColor.i.a = (mem) & 0xff;
- userdata->CurrentMemCvg = (mem >> 5) & 7;
+ mem = RREADIDX32((object.m_misc_state.m_fb_address >> 2) + curpixel);
+ userdata->m_memory_color.i.a = (mem) & 0xff;
+ userdata->m_current_mem_cvg = (mem >> 5) & 7;
}
else
{
- mem = RREADIDX32((object.MiscState.FBAddress >> 2) + curpixel);
- userdata->MemoryColor.i.a = 0xff;
- userdata->CurrentMemCvg = 7;
+ mem = RREADIDX32((object.m_misc_state.m_fb_address >> 2) + curpixel);
+ userdata->m_memory_color.i.a = 0xff;
+ userdata->m_current_mem_cvg = 7;
}
- userdata->MemoryColor.i.r = (mem >> 24) & 0xff;
- userdata->MemoryColor.i.g = (mem >> 16) & 0xff;
- userdata->MemoryColor.i.b = (mem >> 8) & 0xff;
+ userdata->m_memory_color.i.r = (mem >> 24) & 0xff;
+ userdata->m_memory_color.i.g = (mem >> 16) & 0xff;
+ userdata->m_memory_color.i.b = (mem >> 8) & 0xff;
}
}
-inline void n64_rdp::copy_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, int CurrentPixCvg, const rdp_poly_state &object)
+inline void n64_rdp::copy_pixel(UINT32 curpixel, INT32 r, INT32 g, INT32 b, INT32 m_current_pix_cvg, const rdp_poly_state &object)
{
- if (object.MiscState.FBSize == 2) // 16-bit framebuffer
+ if (object.m_misc_state.m_fb_size == 2) // 16-bit framebuffer
{
- RWRITEIDX16((object.MiscState.FBAddress >> 1) + curpixel, ((r >> 3) << 11) | ((g >> 3) << 6) | ((b >> 3) << 1) | ((CurrentPixCvg >> 2) & 1));
- HWRITEADDR8((object.MiscState.FBAddress >> 1) + curpixel, CurrentPixCvg & 3);
+ RWRITEIDX16((object.m_misc_state.m_fb_address >> 1) + curpixel, ((r >> 3) << 11) | ((g >> 3) << 6) | ((b >> 3) << 1) | ((m_current_pix_cvg >> 2) & 1));
+ HWRITEADDR8((object.m_misc_state.m_fb_address >> 1) + curpixel, m_current_pix_cvg & 3);
}
else // 32-bit framebuffer
{
- RWRITEIDX32((object.MiscState.FBAddress >> 2) + curpixel, (r << 24) | (g << 16) | (b << 8) | (CurrentPixCvg << 5));
+ RWRITEIDX32((object.m_misc_state.m_fb_address >> 2) + curpixel, (r << 24) | (g << 16) | (b << 8) | (m_current_pix_cvg << 5));
}
}
inline void n64_rdp::fill_pixel(UINT32 curpixel, const rdp_poly_state &object)
{
- if (object.MiscState.FBSize == 2) // 16-bit framebuffer
+ if (object.m_misc_state.m_fb_size == 2) // 16-bit framebuffer
{
UINT16 val;
if (curpixel & 1)
{
- val = object.FillColor & 0xffff;
+ val = object.m_fill_color & 0xffff;
}
else
{
- val = (object.FillColor >> 16) & 0xffff;
+ val = (object.m_fill_color >> 16) & 0xffff;
}
- RWRITEIDX16((object.MiscState.FBAddress >> 1) + curpixel, val);
- HWRITEADDR8((object.MiscState.FBAddress >> 1) + curpixel, ((val & 1) << 1) | (val & 1));
+ RWRITEIDX16((object.m_misc_state.m_fb_address >> 1) + curpixel, val);
+ HWRITEADDR8((object.m_misc_state.m_fb_address >> 1) + curpixel, ((val & 1) << 1) | (val & 1));
}
else // 32-bit framebuffer
{
- RWRITEIDX32((object.MiscState.FBAddress >> 2) + curpixel, object.FillColor);
- HWRITEADDR8((object.MiscState.FBAddress >> 1) + (curpixel << 1), (object.FillColor & 0x10000) ? 3 : 0);
- HWRITEADDR8((object.MiscState.FBAddress >> 1) + (curpixel << 1) + 1, (object.FillColor & 0x1) ? 3 : 0);
+ RWRITEIDX32((object.m_misc_state.m_fb_address >> 2) + curpixel, object.m_fill_color);
+ HWRITEADDR8((object.m_misc_state.m_fb_address >> 1) + (curpixel << 1), (object.m_fill_color & 0x10000) ? 3 : 0);
+ HWRITEADDR8((object.m_misc_state.m_fb_address >> 1) + (curpixel << 1) + 1, (object.m_fill_color & 0x1) ? 3 : 0);
}
}
-void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid)
+void n64_rdp::span_draw_1cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid)
{
- assert(object.MiscState.FBSize >= 2 && object.MiscState.FBSize < 4);
+ assert(object.m_misc_state.m_fb_size >= 2 && object.m_misc_state.m_fb_size < 4);
- const int clipx1 = object.Scissor.m_xh;
- const int clipx2 = object.Scissor.m_xl;
- const int tilenum = object.tilenum;
+ const INT32 clipx1 = object.m_scissor.m_xh;
+ const INT32 clipx2 = object.m_scissor.m_xl;
+ const INT32 tilenum = object.tilenum;
const bool flip = object.flip;
SpanParam r; r.w = extent.param[SPAN_R].start;
@@ -332,125 +330,125 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p
SpanParam t; t.w = extent.param[SPAN_T].start;
SpanParam w; w.w = extent.param[SPAN_W].start;
- const UINT32 zb = object.MiscState.ZBAddress >> 1;
- const UINT32 zhb = object.MiscState.ZBAddress;
- UINT8 offx = 0, offy = 0;
+ const UINT32 zb = object.m_misc_state.m_zb_address >> 1;
+ const UINT32 zhb = object.m_misc_state.m_zb_address;
#ifdef PTR64
assert(extent.userdata != (const void *)0xcccccccccccccccc);
#else
assert(extent.userdata != (const void *)0xcccccccc);
#endif
- rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)extent.userdata;
- INT32 m_clamp_s_diff[8];
- INT32 m_clamp_t_diff[8];
- TexPipe.CalculateClampDiffs(tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
+ INT32 clamp_s_diff[8];
+ INT32 clamp_t_diff[8];
+ m_tex_pipe.calculate_clamp_diffs(tilenum, userdata, object, clamp_s_diff, clamp_t_diff);
- const bool partialreject = (userdata->ColorInputs.blender2b_a[0] == &userdata->InvPixelColor.i.a && userdata->ColorInputs.blender1b_a[0] == &userdata->PixelColor.i.a);
- const int sel0 = (userdata->ColorInputs.blender2b_a[0] == &userdata->MemoryColor.i.a) ? 1 : 0;
+ const bool partialreject = (userdata->m_color_inputs.blender2b_a[0] == &userdata->m_inv_pixel_color.i.a && userdata->m_color_inputs.blender1b_a[0] == &userdata->m_pixel_color.i.a);
+ const INT32 sel0 = (userdata->m_color_inputs.blender2b_a[0] == &userdata->m_memory_color.i.a) ? 1 : 0;
- int drinc, dginc, dbinc, dainc;
- int dzinc, dzpix;
- int dsinc, dtinc, dwinc;
- int xinc;
+ INT32 drinc, dginc, dbinc, dainc;
+ INT32 dzinc, dzpix;
+ INT32 dsinc, dtinc, dwinc;
+ INT32 xinc;
if (!flip)
{
- drinc = -object.SpanBase.m_span_dr;
- dginc = -object.SpanBase.m_span_dg;
- dbinc = -object.SpanBase.m_span_db;
- dainc = -object.SpanBase.m_span_da;
- dzinc = -object.SpanBase.m_span_dz;
- dsinc = -object.SpanBase.m_span_ds;
- dtinc = -object.SpanBase.m_span_dt;
- dwinc = -object.SpanBase.m_span_dw;
+ drinc = -object.m_span_base.m_span_dr;
+ dginc = -object.m_span_base.m_span_dg;
+ dbinc = -object.m_span_base.m_span_db;
+ dainc = -object.m_span_base.m_span_da;
+ dzinc = -object.m_span_base.m_span_dz;
+ dsinc = -object.m_span_base.m_span_ds;
+ dtinc = -object.m_span_base.m_span_dt;
+ dwinc = -object.m_span_base.m_span_dw;
xinc = -1;
}
else
{
- drinc = object.SpanBase.m_span_dr;
- dginc = object.SpanBase.m_span_dg;
- dbinc = object.SpanBase.m_span_db;
- dainc = object.SpanBase.m_span_da;
- dzinc = object.SpanBase.m_span_dz;
- dsinc = object.SpanBase.m_span_ds;
- dtinc = object.SpanBase.m_span_dt;
- dwinc = object.SpanBase.m_span_dw;
+ drinc = object.m_span_base.m_span_dr;
+ dginc = object.m_span_base.m_span_dg;
+ dbinc = object.m_span_base.m_span_db;
+ dainc = object.m_span_base.m_span_da;
+ dzinc = object.m_span_base.m_span_dz;
+ dsinc = object.m_span_base.m_span_ds;
+ dtinc = object.m_span_base.m_span_dt;
+ dwinc = object.m_span_base.m_span_dw;
xinc = 1;
}
- const int fb_index = object.MiscState.FBWidth * scanline;
+ const INT32 fb_index = object.m_misc_state.m_fb_width * scanline;
- const int xstart = extent.startx;
- const int xend = userdata->m_unscissored_rx;
- const int xend_scissored = extent.stopx;
+ const INT32 xstart = extent.startx;
+ const INT32 xend = userdata->m_unscissored_rx;
+ const INT32 xend_scissored = extent.stopx;
- int x = xend;
+ INT32 x = xend;
- const int length = flip ? (xstart - xend) : (xend - xstart);
+ const INT32 length = flip ? (xstart - xend) : (xend - xstart);
INT32 fir, fig, fib;
- if(object.OtherModes.z_source_sel)
+ if(object.m_other_modes.z_source_sel)
{
- z.w = ((UINT32)object.MiscState.PrimitiveZ) << 16;
- dzpix = object.MiscState.PrimitiveDZ;
+ z.w = object.m_misc_state.m_primitive_z;
+ dzpix = object.m_misc_state.m_primitive_dz;
dzinc = 0;
}
else
{
- dzpix = object.SpanBase.m_span_dzpix;
+ dzpix = object.m_span_base.m_span_dzpix;
}
- if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4)
- fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize);
+ if (object.m_misc_state.m_fb_size < 2 || object.m_misc_state.m_fb_size > 4)
+ fatalerror("unsupported m_fb_size %d\n", object.m_misc_state.m_fb_size);
- const int blend_index = (object.OtherModes.alpha_cvg_select ? 2 : 0) | ((object.OtherModes.rgb_dither_sel < 3) ? 1 : 0);
- const int cycle0 = ((object.OtherModes.sample_type & 1) << 1) | (object.OtherModes.bi_lerp0 & 1);
+ const INT32 blend_index = (object.m_other_modes.alpha_cvg_select ? 2 : 0) | ((object.m_other_modes.rgb_dither_sel < 3) ? 1 : 0);
+ const INT32 cycle0 = ((object.m_other_modes.sample_type & 1) << 1) | (object.m_other_modes.bi_lerp0 & 1);
INT32 sss = 0;
INT32 sst = 0;
- if (object.OtherModes.persp_tex_en)
+ if (object.m_other_modes.persp_tex_en)
{
- TCDiv(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
+ tc_div(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
}
else
{
- TCDivNoPersp(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
+ tc_div_no_perspective(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
}
userdata->m_start_span = true;
- for (int j = 0; j <= length; j++)
+ for (INT32 j = 0; j <= length; j++)
{
- int sr = r.w >> 14;
- int sg = g.w >> 14;
- int sb = b.w >> 14;
- int sa = a.w >> 14;
- int sz = (z.w >> 10) & 0x3fffff;
+ INT32 sr = r.w >> 14;
+ INT32 sg = g.w >> 14;
+ INT32 sb = b.w >> 14;
+ INT32 sa = a.w >> 14;
+ INT32 sz = (z.w >> 10) & 0x3fffff;
const bool valid_x = (flip) ? (x >= xend_scissored) : (x <= xend_scissored);
if (x >= clipx1 && x < clipx2 && valid_x)
{
+ UINT8 offx, offy;
lookup_cvmask_derivatives(userdata->m_cvg[x], &offx, &offy, userdata);
- TexPipe.LOD1Cycle(&sss, &sst, s.w, t.w, w.w, dsinc, dtinc, dwinc, userdata, object);
+ m_tex_pipe.lod_1cycle(&sss, &sst, s.w, t.w, w.w, dsinc, dtinc, dwinc, userdata, object);
- RGBAZCorrectTriangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object);
- RGBAZClip(sr, sg, sb, sa, &sz, userdata);
+ rgbaz_correct_triangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object);
+ rgbaz_clip(sr, sg, sb, sa, &sz, userdata);
- ((TexPipe).*(TexPipe.cycle[cycle0]))(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tilenum, 0, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
- //TexPipe.Cycle(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tilenum, 0, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
+ ((m_tex_pipe).*(m_tex_pipe.m_cycle[cycle0]))(&userdata->m_texel0_color, &userdata->m_texel0_color, sss, sst, tilenum, 0, userdata, object, clamp_s_diff, clamp_t_diff);
+ //m_tex_pipe.Cycle(&userdata->m_texel0_color, &userdata->m_texel0_color, sss, sst, tilenum, 0, userdata, object, clamp_s_diff, clamp_t_diff);
- userdata->NoiseColor.i.r = userdata->NoiseColor.i.g = userdata->NoiseColor.i.b = rand() << 3; // Not accurate
+ userdata->m_noise_color.i.r = userdata->m_noise_color.i.g = userdata->m_noise_color.i.b = rand() << 3; // Not accurate
- userdata->PixelColor.i.r = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_r[1],*userdata->ColorInputs.combiner_rgbsub_b_r[1],*userdata->ColorInputs.combiner_rgbmul_r[1],*userdata->ColorInputs.combiner_rgbadd_r[1]);
- userdata->PixelColor.i.g = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_g[1],*userdata->ColorInputs.combiner_rgbsub_b_g[1],*userdata->ColorInputs.combiner_rgbmul_g[1],*userdata->ColorInputs.combiner_rgbadd_g[1]);
- userdata->PixelColor.i.b = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_b[1],*userdata->ColorInputs.combiner_rgbsub_b_b[1],*userdata->ColorInputs.combiner_rgbmul_b[1],*userdata->ColorInputs.combiner_rgbadd_b[1]);
- userdata->PixelColor.i.a = AlphaCombinerEquation(*userdata->ColorInputs.combiner_alphasub_a[1],*userdata->ColorInputs.combiner_alphasub_b[1],*userdata->ColorInputs.combiner_alphamul[1],*userdata->ColorInputs.combiner_alphaadd[1]);
+ userdata->m_pixel_color.i.r = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_r[1],*userdata->m_color_inputs.combiner_rgbsub_b_r[1],*userdata->m_color_inputs.combiner_rgbmul_r[1],*userdata->m_color_inputs.combiner_rgbadd_r[1]);
+ userdata->m_pixel_color.i.g = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_g[1],*userdata->m_color_inputs.combiner_rgbsub_b_g[1],*userdata->m_color_inputs.combiner_rgbmul_g[1],*userdata->m_color_inputs.combiner_rgbadd_g[1]);
+ userdata->m_pixel_color.i.b = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_b[1],*userdata->m_color_inputs.combiner_rgbsub_b_b[1],*userdata->m_color_inputs.combiner_rgbmul_b[1],*userdata->m_color_inputs.combiner_rgbadd_b[1]);
+ userdata->m_pixel_color.i.a = alpha_combiner_equation(*userdata->m_color_inputs.combiner_alphasub_a[1],*userdata->m_color_inputs.combiner_alphasub_b[1],*userdata->m_color_inputs.combiner_alphamul[1],*userdata->m_color_inputs.combiner_alphaadd[1]);
//Alpha coverage combiner
- GetAlphaCvg(&userdata->PixelColor.i.a, userdata, object);
+ get_alpha_cvg(&userdata->m_pixel_color.i.a, userdata, object);
const UINT32 curpixel = fb_index + x;
const UINT32 zbcur = zb + curpixel;
@@ -458,24 +456,24 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p
read_pixel(curpixel, userdata, object);
- if(ZCompare(zbcur, zhbcur, sz, dzpix, userdata, object))
+ if(z_compare(zbcur, zhbcur, sz, dzpix, userdata, object))
{
- int cdith = 0;
- int adith = 0;
- GetDitherValues(scanline, j, &cdith, &adith, object);
+ INT32 cdith = 0;
+ INT32 adith = 0;
+ get_dither_values(scanline, j, &cdith, &adith, object);
- if (((userdata->BlendEnable << 2) | blend_index) != 5 && machine().input().code_pressed(KEYCODE_B))
+ if (((userdata->m_blend_enable << 2) | blend_index) != 5 && machine().input().code_pressed(KEYCODE_B))
{
- printf("1:%d\n", (userdata->BlendEnable << 2) | blend_index);
+ printf("1:%d\n", (userdata->m_blend_enable << 2) | blend_index);
}
- bool rendered = ((&Blender)->*(Blender.blend1[(userdata->BlendEnable << 2) | blend_index]))(&fir, &fig, &fib, cdith, adith, partialreject, sel0, userdata, object);
+ bool rendered = ((&m_blender)->*(m_blender.blend1[(userdata->m_blend_enable << 2) | blend_index]))(&fir, &fig, &fib, cdith, adith, partialreject, sel0, userdata, object);
if (rendered)
{
write_pixel(curpixel, fir, fig, fib, userdata, object);
- if (object.OtherModes.z_update_en)
+ if (object.m_other_modes.z_update_en)
{
- ZStore(object, zbcur, zhbcur, sz, userdata->m_dzpix_enc);
+ z_store(object, zbcur, zhbcur, sz, userdata->m_dzpix_enc);
}
}
}
@@ -497,13 +495,13 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p
}
}
-void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid)
+void n64_rdp::span_draw_2cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid)
{
- assert(object.MiscState.FBSize >= 2 && object.MiscState.FBSize < 4);
+ assert(object.m_misc_state.m_fb_size >= 2 && object.m_misc_state.m_fb_size < 4);
- const int clipx1 = object.Scissor.m_xh;
- const int clipx2 = object.Scissor.m_xl;
- const int tilenum = object.tilenum;
+ const INT32 clipx1 = object.m_scissor.m_xh;
+ const INT32 clipx2 = object.m_scissor.m_xl;
+ const INT32 tilenum = object.tilenum;
const bool flip = object.flip;
SpanParam r; r.w = extent.param[SPAN_R].start;
@@ -515,14 +513,14 @@ void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_p
SpanParam t; t.w = extent.param[SPAN_T].start;
SpanParam w; w.w = extent.param[SPAN_W].start;
- const UINT32 zb = object.MiscState.ZBAddress >> 1;
- const UINT32 zhb = object.MiscState.ZBAddress;
+ const UINT32 zb = object.m_misc_state.m_zb_address >> 1;
+ const UINT32 zhb = object.m_misc_state.m_zb_address;
INT32 tile2 = (tilenum + 1) & 7;
INT32 tile1 = tilenum;
const UINT32 prim_tile = tilenum;
- int newtile1 = tile1;
+ INT32 newtile1 = tile1;
INT32 news = 0;
INT32 newt = 0;
@@ -531,188 +529,188 @@ void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_p
#else
assert(extent.userdata != (const void *)0xcccccccc);
#endif
- rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata;
+ rdp_span_aux* userdata = (rdp_span_aux*)extent.userdata;
- INT32 m_clamp_s_diff[8];
- INT32 m_clamp_t_diff[8];
- TexPipe.CalculateClampDiffs(tile1, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
+ INT32 clamp_s_diff[8];
+ INT32 clamp_t_diff[8];
+ m_tex_pipe.calculate_clamp_diffs(tile1, userdata, object, clamp_s_diff, clamp_t_diff);
- bool partialreject = (userdata->ColorInputs.blender2b_a[1] == &userdata->InvPixelColor.i.a && userdata->ColorInputs.blender1b_a[1] == &userdata->PixelColor.i.a);
- int sel0 = (userdata->ColorInputs.blender2b_a[0] == &userdata->MemoryColor.i.a) ? 1 : 0;
- int sel1 = (userdata->ColorInputs.blender2b_a[1] == &userdata->MemoryColor.i.a) ? 1 : 0;
+ bool partialreject = (userdata->m_color_inputs.blender2b_a[1] == &userdata->m_inv_pixel_color.i.a && userdata->m_color_inputs.blender1b_a[1] == &userdata->m_pixel_color.i.a);
+ INT32 sel0 = (userdata->m_color_inputs.blender2b_a[0] == &userdata->m_memory_color.i.a) ? 1 : 0;
+ INT32 sel1 = (userdata->m_color_inputs.blender2b_a[1] == &userdata->m_memory_color.i.a) ? 1 : 0;
- int drinc, dginc, dbinc, dainc;
- int dzinc, dzpix;
- int dsinc, dtinc, dwinc;
- int xinc;
+ INT32 drinc, dginc, dbinc, dainc;
+ INT32 dzinc, dzpix;
+ INT32 dsinc, dtinc, dwinc;
+ INT32 xinc;
if (!flip)
{
- drinc = -object.SpanBase.m_span_dr;
- dginc = -object.SpanBase.m_span_dg;
- dbinc = -object.SpanBase.m_span_db;
- dainc = -object.SpanBase.m_span_da;
- dzinc = -object.SpanBase.m_span_dz;
- dsinc = -object.SpanBase.m_span_ds;
- dtinc = -object.SpanBase.m_span_dt;
- dwinc = -object.SpanBase.m_span_dw;
+ drinc = -object.m_span_base.m_span_dr;
+ dginc = -object.m_span_base.m_span_dg;
+ dbinc = -object.m_span_base.m_span_db;
+ dainc = -object.m_span_base.m_span_da;
+ dzinc = -object.m_span_base.m_span_dz;
+ dsinc = -object.m_span_base.m_span_ds;
+ dtinc = -object.m_span_base.m_span_dt;
+ dwinc = -object.m_span_base.m_span_dw;
xinc = -1;
}
else
{
- drinc = object.SpanBase.m_span_dr;
- dginc = object.SpanBase.m_span_dg;
- dbinc = object.SpanBase.m_span_db;
- dainc = object.SpanBase.m_span_da;
- dzinc = object.SpanBase.m_span_dz;
- dsinc = object.SpanBase.m_span_ds;
- dtinc = object.SpanBase.m_span_dt;
- dwinc = object.SpanBase.m_span_dw;
+ drinc = object.m_span_base.m_span_dr;
+ dginc = object.m_span_base.m_span_dg;
+ dbinc = object.m_span_base.m_span_db;
+ dainc = object.m_span_base.m_span_da;
+ dzinc = object.m_span_base.m_span_dz;
+ dsinc = object.m_span_base.m_span_ds;
+ dtinc = object.m_span_base.m_span_dt;
+ dwinc = object.m_span_base.m_span_dw;
xinc = 1;
}
- const int fb_index = object.MiscState.FBWidth * scanline;
+ const INT32 fb_index = object.m_misc_state.m_fb_width * scanline;
- int cdith = 0;
- int adith = 0;
+ INT32 cdith = 0;
+ INT32 adith = 0;
- const int xstart = extent.startx;
- const int xend = userdata->m_unscissored_rx;
- const int xend_scissored = extent.stopx;
+ const INT32 xstart = extent.startx;
+ const INT32 xend = userdata->m_unscissored_rx;
+ const INT32 xend_scissored = extent.stopx;
- int x = xend;
+ INT32 x = xend;
- const int length = flip ? (xstart - xend) : (xend - xstart);
+ const INT32 length = flip ? (xstart - xend) : (xend - xstart);
INT32 fir, fig, fib;
- if(object.OtherModes.z_source_sel)
+ if(object.m_other_modes.z_source_sel)
{
- z.w = ((UINT32)object.MiscState.PrimitiveZ) << 16;
- dzpix = object.MiscState.PrimitiveDZ;
+ z.w = object.m_misc_state.m_primitive_z;
+ dzpix = object.m_misc_state.m_primitive_dz;
dzinc = 0;
}
else
{
- dzpix = object.SpanBase.m_span_dzpix;
+ dzpix = object.m_span_base.m_span_dzpix;
}
- if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4)
- fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize);
+ if (object.m_misc_state.m_fb_size < 2 || object.m_misc_state.m_fb_size > 4)
+ fatalerror("unsupported m_fb_size %d\n", object.m_misc_state.m_fb_size);
- const int blend_index = (object.OtherModes.alpha_cvg_select ? 2 : 0) | ((object.OtherModes.rgb_dither_sel < 3) ? 1 : 0);
- const int cycle0 = ((object.OtherModes.sample_type & 1) << 1) | (object.OtherModes.bi_lerp0 & 1);
- const int cycle1 = ((object.OtherModes.sample_type & 1) << 1) | (object.OtherModes.bi_lerp1 & 1);
+ const INT32 blend_index = (object.m_other_modes.alpha_cvg_select ? 2 : 0) | ((object.m_other_modes.rgb_dither_sel < 3) ? 1 : 0);
+ const INT32 cycle0 = ((object.m_other_modes.sample_type & 1) << 1) | (object.m_other_modes.bi_lerp0 & 1);
+ const INT32 cycle1 = ((object.m_other_modes.sample_type & 1) << 1) | (object.m_other_modes.bi_lerp1 & 1);
INT32 sss = 0;
INT32 sst = 0;
- if (object.OtherModes.persp_tex_en)
+ if (object.m_other_modes.persp_tex_en)
{
- TCDiv(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
+ tc_div(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
}
else
{
- TCDivNoPersp(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
+ tc_div_no_perspective(s.w >> 16, t.w >> 16, w.w >> 16, &sss, &sst);
}
userdata->m_start_span = true;
- for (int j = 0; j <= length; j++)
+ for (INT32 j = 0; j <= length; j++)
{
- int sr = r.w >> 14;
- int sg = g.w >> 14;
- int sb = b.w >> 14;
- int sa = a.w >> 14;
- int sz = (z.w >> 10) & 0x3fffff;
- Color c1;
- Color c2;
+ INT32 sr = r.w >> 14;
+ INT32 sg = g.w >> 14;
+ INT32 sb = b.w >> 14;
+ INT32 sa = a.w >> 14;
+ INT32 sz = (z.w >> 10) & 0x3fffff;
+ color_t c1;
+ color_t c2;
- bool valid_x = (flip) ? (x >= xend_scissored) : (x <= xend_scissored);
+ const bool valid_x = (flip) ? (x >= xend_scissored) : (x <= xend_scissored);
if (x >= clipx1 && x < clipx2 && valid_x)
{
- UINT32 compidx = compressed_cvmasks[userdata->m_cvg[x]];
- userdata->CurrentPixCvg = cvarray[compidx].cvg;
- userdata->CurrentCvgBit = cvarray[compidx].cvbit;
- UINT8 offx = cvarray[compidx].xoff;
- UINT8 offy = cvarray[compidx].yoff;
+ const UINT32 compidx = m_compressed_cvmasks[userdata->m_cvg[x]];
+ userdata->m_current_pix_cvg = cvarray[compidx].cvg;
+ userdata->m_current_cvg_bit = cvarray[compidx].cvbit;
+ const UINT8 offx = cvarray[compidx].xoff;
+ const UINT8 offy = cvarray[compidx].yoff;
//lookup_cvmask_derivatives(userdata->m_cvg[x], &offx, &offy, userdata);
- TexPipe.LOD2Cycle(&sss, &sst, s.w, t.w, w.w, dsinc, dtinc, dwinc, prim_tile, &tile1, &tile2, userdata, object);
+ m_tex_pipe.lod_2cycle(&sss, &sst, s.w, t.w, w.w, dsinc, dtinc, dwinc, prim_tile, &tile1, &tile2, userdata, object);
news = userdata->m_precomp_s;
newt = userdata->m_precomp_t;
- TexPipe.LOD2CycleLimited(&news, &newt, s.w + dsinc, t.w + dtinc, w.w + dwinc, dsinc, dtinc, dwinc, prim_tile, &newtile1, object);
-
- RGBAZCorrectTriangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object);
- RGBAZClip(sr, sg, sb, sa, &sz, userdata);
-
- ((TexPipe).*(TexPipe.cycle[cycle0]))(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tile1, 0, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
- ((TexPipe).*(TexPipe.cycle[cycle1]))(&userdata->Texel1Color, &userdata->Texel0Color, sss, sst, tile2, 1, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
- ((TexPipe).*(TexPipe.cycle[cycle1]))(&userdata->NextTexelColor, &userdata->NextTexelColor, sss, sst, tile2, 1, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
-
- userdata->NoiseColor.i.r = userdata->NoiseColor.i.g = userdata->NoiseColor.i.b = rand() << 3; // Not accurate
- userdata->CombinedColor.i.r = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_r[0],
- *userdata->ColorInputs.combiner_rgbsub_b_r[0],
- *userdata->ColorInputs.combiner_rgbmul_r[0],
- *userdata->ColorInputs.combiner_rgbadd_r[0]);
- userdata->CombinedColor.i.g = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_g[0],
- *userdata->ColorInputs.combiner_rgbsub_b_g[0],
- *userdata->ColorInputs.combiner_rgbmul_g[0],
- *userdata->ColorInputs.combiner_rgbadd_g[0]);
- userdata->CombinedColor.i.b = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_b[0],
- *userdata->ColorInputs.combiner_rgbsub_b_b[0],
- *userdata->ColorInputs.combiner_rgbmul_b[0],
- *userdata->ColorInputs.combiner_rgbadd_b[0]);
- userdata->CombinedColor.i.a = AlphaCombinerEquation(*userdata->ColorInputs.combiner_alphasub_a[0],
- *userdata->ColorInputs.combiner_alphasub_b[0],
- *userdata->ColorInputs.combiner_alphamul[0],
- *userdata->ColorInputs.combiner_alphaadd[0]);
-
- userdata->Texel0Color = userdata->Texel1Color;
- userdata->Texel1Color = userdata->NextTexelColor;
-
- userdata->PixelColor.i.r = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_r[1],
- *userdata->ColorInputs.combiner_rgbsub_b_r[1],
- *userdata->ColorInputs.combiner_rgbmul_r[1],
- *userdata->ColorInputs.combiner_rgbadd_r[1]);
- userdata->PixelColor.i.g = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_g[1],
- *userdata->ColorInputs.combiner_rgbsub_b_g[1],
- *userdata->ColorInputs.combiner_rgbmul_g[1],
- *userdata->ColorInputs.combiner_rgbadd_g[1]);
- userdata->PixelColor.i.b = ColorCombinerEquation(*userdata->ColorInputs.combiner_rgbsub_a_b[1],
- *userdata->ColorInputs.combiner_rgbsub_b_b[1],
- *userdata->ColorInputs.combiner_rgbmul_b[1],
- *userdata->ColorInputs.combiner_rgbadd_b[1]);
- userdata->PixelColor.i.a = AlphaCombinerEquation(*userdata->ColorInputs.combiner_alphasub_a[1],
- *userdata->ColorInputs.combiner_alphasub_b[1],
- *userdata->ColorInputs.combiner_alphamul[1],
- *userdata->ColorInputs.combiner_alphaadd[1]);
+ m_tex_pipe.lod_2cycle_limited(&news, &newt, s.w + dsinc, t.w + dtinc, w.w + dwinc, dsinc, dtinc, dwinc, prim_tile, &newtile1, object);
+
+ rgbaz_correct_triangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object);
+ rgbaz_clip(sr, sg, sb, sa, &sz, userdata);
+
+ ((m_tex_pipe).*(m_tex_pipe.m_cycle[cycle0]))(&userdata->m_texel0_color, &userdata->m_texel0_color, sss, sst, tile1, 0, userdata, object, clamp_s_diff, clamp_t_diff);
+ ((m_tex_pipe).*(m_tex_pipe.m_cycle[cycle1]))(&userdata->m_texel1_color, &userdata->m_texel0_color, sss, sst, tile2, 1, userdata, object, clamp_s_diff, clamp_t_diff);
+ ((m_tex_pipe).*(m_tex_pipe.m_cycle[cycle1]))(&userdata->m_next_texel_color, &userdata->m_next_texel_color, sss, sst, tile2, 1, userdata, object, clamp_s_diff, clamp_t_diff);
+
+ userdata->m_noise_color.i.r = userdata->m_noise_color.i.g = userdata->m_noise_color.i.b = rand() << 3; // Not accurate
+ userdata->m_combined_color.i.r = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_r[0],
+ *userdata->m_color_inputs.combiner_rgbsub_b_r[0],
+ *userdata->m_color_inputs.combiner_rgbmul_r[0],
+ *userdata->m_color_inputs.combiner_rgbadd_r[0]);
+ userdata->m_combined_color.i.g = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_g[0],
+ *userdata->m_color_inputs.combiner_rgbsub_b_g[0],
+ *userdata->m_color_inputs.combiner_rgbmul_g[0],
+ *userdata->m_color_inputs.combiner_rgbadd_g[0]);
+ userdata->m_combined_color.i.b = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_b[0],
+ *userdata->m_color_inputs.combiner_rgbsub_b_b[0],
+ *userdata->m_color_inputs.combiner_rgbmul_b[0],
+ *userdata->m_color_inputs.combiner_rgbadd_b[0]);
+ userdata->m_combined_color.i.a = alpha_combiner_equation(*userdata->m_color_inputs.combiner_alphasub_a[0],
+ *userdata->m_color_inputs.combiner_alphasub_b[0],
+ *userdata->m_color_inputs.combiner_alphamul[0],
+ *userdata->m_color_inputs.combiner_alphaadd[0]);
+
+ userdata->m_texel0_color = userdata->m_texel1_color;
+ userdata->m_texel1_color = userdata->m_next_texel_color;
+
+ userdata->m_pixel_color.i.r = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_r[1],
+ *userdata->m_color_inputs.combiner_rgbsub_b_r[1],
+ *userdata->m_color_inputs.combiner_rgbmul_r[1],
+ *userdata->m_color_inputs.combiner_rgbadd_r[1]);
+ userdata->m_pixel_color.i.g = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_g[1],
+ *userdata->m_color_inputs.combiner_rgbsub_b_g[1],
+ *userdata->m_color_inputs.combiner_rgbmul_g[1],
+ *userdata->m_color_inputs.combiner_rgbadd_g[1]);
+ userdata->m_pixel_color.i.b = color_combiner_equation(*userdata->m_color_inputs.combiner_rgbsub_a_b[1],
+ *userdata->m_color_inputs.combiner_rgbsub_b_b[1],
+ *userdata->m_color_inputs.combiner_rgbmul_b[1],
+ *userdata->m_color_inputs.combiner_rgbadd_b[1]);
+ userdata->m_pixel_color.i.a = alpha_combiner_equation(*userdata->m_color_inputs.combiner_alphasub_a[1],
+ *userdata->m_color_inputs.combiner_alphasub_b[1],
+ *userdata->m_color_inputs.combiner_alphamul[1],
+ *userdata->m_color_inputs.combiner_alphaadd[1]);
//Alpha coverage combiner
- GetAlphaCvg(&userdata->PixelColor.i.a, userdata, object);
+ get_alpha_cvg(&userdata->m_pixel_color.i.a, userdata, object);
- UINT32 curpixel = fb_index + x;
- UINT32 zbcur = zb + curpixel;
- UINT32 zhbcur = zhb + curpixel;
+ const UINT32 curpixel = fb_index + x;
+ const UINT32 zbcur = zb + curpixel;
+ const UINT32 zhbcur = zhb + curpixel;
read_pixel(curpixel, userdata, object);
- if(ZCompare(zbcur, zhbcur, sz, dzpix, userdata, object))
+ if(z_compare(zbcur, zhbcur, sz, dzpix, userdata, object))
{
- GetDitherValues(scanline, j, &cdith, &adith, object);
+ get_dither_values(scanline, j, &cdith, &adith, object);
- if (((userdata->BlendEnable << 2) | blend_index) != 5 && machine().input().code_pressed(KEYCODE_B))
+ if (((userdata->m_blend_enable << 2) | blend_index) != 5 && machine().input().code_pressed(KEYCODE_B))
{
- printf("2:%d\n", (userdata->BlendEnable << 2) | blend_index);
+ printf("2:%d\n", (userdata->m_blend_enable << 2) | blend_index);
}
- bool rendered = ((&Blender)->*(Blender.blend2[(userdata->BlendEnable << 2) | blend_index]))(&fir, &fig, &fib, cdith, adith, partialreject, sel0, sel1, userdata, object);
+ bool rendered = ((&m_blender)->*(m_blender.blend2[(userdata->m_blend_enable << 2) | blend_index]))(&fir, &fig, &fib, cdith, adith, partialreject, sel0, sel1, userdata, object);
if (rendered)
{
write_pixel(curpixel, fir, fig, fib, userdata, object);
- if (object.OtherModes.z_update_en)
+ if (object.m_other_modes.z_update_en)
{
- ZStore(object, zbcur, zhbcur, sz, userdata->m_dzpix_enc);
+ z_store(object, zbcur, zhbcur, sz, userdata->m_dzpix_enc);
}
}
}
@@ -733,33 +731,33 @@ void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_p
}
}
-void n64_rdp::SpanDrawCopy(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid)
+void n64_rdp::span_draw_copy(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid)
{
- const int clipx1 = object.Scissor.m_xh;
- const int clipx2 = object.Scissor.m_xl;
- const int tilenum = object.tilenum;
+ const INT32 clipx1 = object.m_scissor.m_xh;
+ const INT32 clipx2 = object.m_scissor.m_xl;
+ const INT32 tilenum = object.tilenum;
const bool flip = object.flip;
- rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata;
- const int xstart = extent.startx;
- const int xend = userdata->m_unscissored_rx;
- const int xend_scissored = extent.stopx;
- const int xinc = flip ? 1 : -1;
- const int length = flip ? (xstart - xend) : (xend - xstart);
+ rdp_span_aux* userdata = (rdp_span_aux*)extent.userdata;
+ const INT32 xstart = extent.startx;
+ const INT32 xend = userdata->m_unscissored_rx;
+ const INT32 xend_scissored = extent.stopx;
+ const INT32 xinc = flip ? 1 : -1;
+ const INT32 length = flip ? (xstart - xend) : (xend - xstart);
SpanParam s; s.w = extent.param[SPAN_S].start;
SpanParam t; t.w = extent.param[SPAN_T].start;
- const int ds = object.SpanBase.m_span_ds / 4;
- const int dt = object.SpanBase.m_span_dt / 4;
- const int dsinc = flip ? (ds) : -ds;
- const int dtinc = flip ? (dt) : -dt;
+ const INT32 ds = object.m_span_base.m_span_ds / 4;
+ const INT32 dt = object.m_span_base.m_span_dt / 4;
+ const INT32 dsinc = flip ? (ds) : -ds;
+ const INT32 dtinc = flip ? (dt) : -dt;
- const int fb_index = object.MiscState.FBWidth * scanline;
+ const INT32 fb_index = object.m_misc_state.m_fb_width * scanline;
- int x = xend;
+ INT32 x = xend;
- for (int j = 0; j <= length; j++)
+ for (INT32 j = 0; j <= length; j++)
{
const bool valid_x = (flip) ? (x >= xend_scissored) : (x <= xend_scissored);
@@ -767,12 +765,12 @@ void n64_rdp::SpanDrawCopy(INT32 scanline, const extent_t &extent, const rdp_pol
{
INT32 sss = s.h.h;
INT32 sst = t.h.h;
- TexPipe.Copy(&userdata->Texel0Color, sss, sst, tilenum, object, userdata);
+ m_tex_pipe.copy(&userdata->m_texel0_color, sss, sst, tilenum, object, userdata);
UINT32 curpixel = fb_index + x;
- if ((userdata->Texel0Color.i.a != 0) || (!object.OtherModes.alpha_compare_en))
+ if ((userdata->m_texel0_color.i.a != 0) || (!object.m_other_modes.alpha_compare_en))
{
- copy_pixel(curpixel, userdata->Texel0Color.i.r, userdata->Texel0Color.i.g, userdata->Texel0Color.i.b, userdata->Texel0Color.i.a ? 7 : 0, object);
+ copy_pixel(curpixel, userdata->m_texel0_color.i.r, userdata->m_texel0_color.i.g, userdata->m_texel0_color.i.b, userdata->m_texel0_color.i.a ? 7 : 0, object);
}
}
@@ -782,27 +780,27 @@ void n64_rdp::SpanDrawCopy(INT32 scanline, const extent_t &extent, const rdp_pol
}
}
-void n64_rdp::SpanDrawFill(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid)
+void n64_rdp::span_draw_fill(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, INT32 threadid)
{
- assert(object.MiscState.FBSize >= 2 && object.MiscState.FBSize < 4);
+ assert(object.m_misc_state.m_fb_size >= 2 && object.m_misc_state.m_fb_size < 4);
const bool flip = object.flip;
- const int clipx1 = object.Scissor.m_xh;
- const int clipx2 = object.Scissor.m_xl;
+ const INT32 clipx1 = object.m_scissor.m_xh;
+ const INT32 clipx2 = object.m_scissor.m_xl;
- const int xinc = flip ? 1 : -1;
+ const INT32 xinc = flip ? 1 : -1;
- const int fb_index = object.MiscState.FBWidth * scanline;
+ const INT32 fb_index = object.m_misc_state.m_fb_width * scanline;
- const int xstart = extent.startx;
- const int xend_scissored = extent.stopx;
+ const INT32 xstart = extent.startx;
+ const INT32 xend_scissored = extent.stopx;
- int x = xend_scissored;
+ INT32 x = xend_scissored;
- const int length = flip ? (xstart - xend_scissored) : (xend_scissored - xstart);
+ const INT32 length = flip ? (xstart - xend_scissored) : (xend_scissored - xstart);
- for (int j = 0; j <= length; j++)
+ for (INT32 j = 0; j <= length; j++)
{
if (x >= clipx1 && x < clipx2)
{
diff --git a/src/mame/video/rdptpipe.c b/src/mame/video/rdptpipe.c
index 6e54267502d..20428ec8999 100644
--- a/src/mame/video/rdptpipe.c
+++ b/src/mame/video/rdptpipe.c
@@ -19,26 +19,26 @@
#define RELATIVE(x, y) ((((x) >> 3) - (y)) << 3) | (x & 7);
-void N64TexturePipeT::SetMachine(running_machine &machine)
+void n64_texture_pipe_t::set_machine(running_machine &machine)
{
- n64_state *state = machine.driver_data<n64_state>();
+ n64_state* state = machine.driver_data<n64_state>();
m_rdp = state->m_rdp;
- for(int i = 0; i < 0x10000; i++)
+ for(INT32 i = 0; i < 0x10000; i++)
{
- Color c;
- c.i.r = m_rdp->ReplicatedRGBA[(i >> 11) & 0x1f];
- c.i.g = m_rdp->ReplicatedRGBA[(i >> 6) & 0x1f];
- c.i.b = m_rdp->ReplicatedRGBA[(i >> 1) & 0x1f];
+ color_t c;
+ c.i.r = m_rdp->m_replicated_rgba[(i >> 11) & 0x1f];
+ c.i.g = m_rdp->m_replicated_rgba[(i >> 6) & 0x1f];
+ c.i.b = m_rdp->m_replicated_rgba[(i >> 1) & 0x1f];
c.i.a = (i & 1) ? 0xff : 0x00;
- Expand16To32Table[i] = c.c;
+ m_expand_16to32_table[i] = c.c;
}
}
-void N64TexturePipeT::Mask(INT32* S, INT32* T, INT32 num, const rdp_poly_state& object)
+void n64_texture_pipe_t::mask(INT32* S, INT32* T, INT32 num, const rdp_poly_state& object)
{
- const N64Tile* tiles = object.m_tiles;
+ const n64_tile_t* tiles = object.m_tiles;
if (tiles[num].mask_s)
{
@@ -83,18 +83,18 @@ void N64TexturePipeT::Mask(INT32* S, INT32* T, INT32 num, const rdp_poly_state&
param1 &= maskbits_##coord; \
}
-void N64TexturePipeT::MaskCoupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT32 num, const rdp_poly_state& object)
+void n64_texture_pipe_t::mask_coupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT32 num, const rdp_poly_state& object)
{
- const N64Tile* tiles = object.m_tiles;
+ const n64_tile_t* tiles = object.m_tiles;
if (tiles[num].mask_s)
{
- INT32 maskbits_s = m_maskbits_table[tiles[num].mask_s];
+ const INT32 maskbits_s = m_maskbits_table[tiles[num].mask_s];
if (tiles[num].ms)
{
- INT32 swrapthreshold = tiles[num].mask_s > 10 ? 10 : tiles[num].mask_s;
- INT32 wrap = (*S >> swrapthreshold) & 1;
- INT32 wrap1 = (*S1 >> swrapthreshold) & 1;
+ const INT32 swrapthreshold = tiles[num].mask_s > 10 ? 10 : tiles[num].mask_s;
+ const INT32 wrap = (*S >> swrapthreshold) & 1;
+ const INT32 wrap1 = (*S1 >> swrapthreshold) & 1;
if (wrap)
{
*S = (~(*S));
@@ -110,12 +110,12 @@ void N64TexturePipeT::MaskCoupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT3
if (tiles[num].mask_t)
{
- INT32 maskbits_t = m_maskbits_table[tiles[num].mask_t];
+ const INT32 maskbits_t = m_maskbits_table[tiles[num].mask_t];
if (tiles[num].mt)
{
- INT32 twrapthreshold = tiles[num].mask_t > 10 ? 10 : tiles[num].mask_t;
- INT32 wrap = (*T >> twrapthreshold) & 1;
- INT32 wrap1 = (*T1 >> twrapthreshold) & 1;
+ const INT32 twrapthreshold = tiles[num].mask_t > 10 ? 10 : tiles[num].mask_t;
+ const INT32 wrap = (*T >> twrapthreshold) & 1;
+ const INT32 wrap1 = (*T1 >> twrapthreshold) & 1;
if (wrap)
{
*T = (~(*T));
@@ -143,9 +143,9 @@ void N64TexturePipeT::MaskCoupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT3
param = SIGN16(param); \
max = ((param >> 3) >= tiles[num].coord##h);
-void N64TexturePipeT::ShiftCycle(INT32* S, INT32* T, INT32* maxs, INT32* maxt, UINT32 num, const rdp_poly_state& object)
+void n64_texture_pipe_t::shift_cycle(INT32* S, INT32* T, INT32* maxs, INT32* maxt, UINT32 num, const rdp_poly_state& object)
{
- const N64Tile* tiles = object.m_tiles;
+ const n64_tile_t* tiles = object.m_tiles;
*S = SIGN16(*S);
if (tiles[num].shift_s < 11)
{
@@ -171,9 +171,9 @@ void N64TexturePipeT::ShiftCycle(INT32* S, INT32* T, INT32* maxs, INT32* maxt, U
*maxt = ((*T >> 3) >= tiles[num].th);
}
-void N64TexturePipeT::ShiftCopy(INT32* S, INT32* T, UINT32 num, const rdp_poly_state& object)
+void n64_texture_pipe_t::shift_copy(INT32* S, INT32* T, UINT32 num, const rdp_poly_state& object)
{
- const N64Tile* tiles = object.m_tiles;
+ const n64_tile_t* tiles = object.m_tiles;
*S = SIGN16(*S);
*T = SIGN16(*T);
if (tiles[num].shift_s < 11)//?-? tcu_tile
@@ -219,9 +219,9 @@ void N64TexturePipeT::ShiftCopy(INT32* S, INT32* T, UINT32 num, const rdp_poly_s
param = (SIGN17(param) >> 5) & 0x1fff; \
}
-void N64TexturePipeT::ClampCycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, INT32 maxs, INT32 maxt, INT32 num, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, INT32 maxs, INT32 maxt, INT32 num, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
+ const n64_tile_t* tiles = object.m_tiles;
if (tiles[num].cs || !tiles[num].mask_s)
{
@@ -268,13 +268,11 @@ void N64TexturePipeT::ClampCycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC,
}
}
-void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, INT32 num, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::clamp_cycle_light(INT32* S, INT32* T, bool maxs, bool maxt, INT32 num, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- int dos = tiles[num].cs || !tiles[num].mask_s;
- int dot = tiles[num].ct || !tiles[num].mask_t;
+ const n64_tile_t* tiles = object.m_tiles;
- if (dos)
+ if (tiles[num].cs || !tiles[num].mask_s)
{
if (*S & 0x10000)
{
@@ -294,7 +292,7 @@ void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt,
*S = (SIGN17(*S) >> 5) & 0x1fff;
}
- if (dot)
+ if (tiles[num].ct || !tiles[num].mask_t)
{
if (*T & 0x10000)
{
@@ -315,18 +313,17 @@ void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt,
}
}
-void N64TexturePipeT::CycleNearest(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::cycle_nearest(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
- UINT32 tformat = tile.format;
- UINT32 tsize = tile.size;
- UINT32 tpal = tile.palette;
- UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.OtherModes.en_tlut << 1) | (UINT32) object.OtherModes.tlut_type;
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
+ const UINT32 tformat = tile.format;
+ const UINT32 tsize = tile.size;
+ const UINT32 tpal = tile.palette;
+ const UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.m_other_modes.en_tlut << 1) | (UINT32) object.m_other_modes.tlut_type;
#define TRELATIVE(x, y) ((((x) >> 3) - (y)) << 3) | (x & 7);
- int convert = object.OtherModes.convert_one && cycle;
- Color t0;
+ color_t t0;
INT32 sss1 = SSS;
INT32 maxs;
@@ -338,22 +335,22 @@ void N64TexturePipeT::CycleNearest(Color* TEX, Color* prev, INT32 SSS, INT32 SST
SHIFT_CYCLE(sst1, maxt, tilenum, t);
sst1 = TRELATIVE(sst1, tile.tl);
- ClampCycleLight(&sss1, &sst1, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
- Mask(&sss1, &sst1, tilenum, object);
+ clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
+ mask(&sss1, &sst1, tilenum, object);
UINT32 tbase = tile.tmem + ((tile.line * sst1) & 0x1ff);
- t0.c = ((this)->*(TexelFetch[index]))(sss1, sst1, tbase, tpal, userdata);
+ t0.c = ((this)->*(m_texel_fetch[index]))(sss1, sst1, tbase, tpal, userdata);
- INT32 newk0 = SIGN9(m_rdp->GetK0());
- INT32 newk1 = SIGN9(m_rdp->GetK1());
- INT32 newk2 = SIGN9(m_rdp->GetK2());
- INT32 newk3 = SIGN9(m_rdp->GetK3());
- INT32 invk0 = ~newk0;
- INT32 invk1 = ~newk1;
- INT32 invk2 = ~newk2;
- INT32 invk3 = ~newk3;
- if (convert)
+ const INT32 newk0 = SIGN9(m_rdp->get_k0());
+ const INT32 newk1 = SIGN9(m_rdp->get_k1());
+ const INT32 newk2 = SIGN9(m_rdp->get_k2());
+ const INT32 newk3 = SIGN9(m_rdp->get_k3());
+ const INT32 invk0 = ~newk0;
+ const INT32 invk1 = ~newk1;
+ const INT32 invk2 = ~newk2;
+ const INT32 invk3 = ~newk3;
+ if (object.m_other_modes.convert_one && cycle)
{
t0 = *prev;
}
@@ -370,17 +367,17 @@ void N64TexturePipeT::CycleNearest(Color* TEX, Color* prev, INT32 SSS, INT32 SST
TEX->i.a &= 0x1ff;
}
-void N64TexturePipeT::CycleNearestLerp(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::cycle_nearest_lerp(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
- UINT32 tformat = tile.format;
- UINT32 tsize = tile.size;
- UINT32 tpal = tile.palette;
- UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.OtherModes.en_tlut << 1) | (UINT32) object.OtherModes.tlut_type;
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
+ const UINT32 tformat = tile.format;
+ const UINT32 tsize = tile.size;
+ const UINT32 tpal = tile.palette;
+ const UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.m_other_modes.en_tlut << 1) | (UINT32) object.m_other_modes.tlut_type;
#define TRELATIVE(x, y) ((((x) >> 3) - (y)) << 3) | (x & 7);
- Color t0;
+ color_t t0;
INT32 sss1 = SSS;
INT32 maxs;
@@ -392,23 +389,22 @@ void N64TexturePipeT::CycleNearestLerp(Color* TEX, Color* prev, INT32 SSS, INT32
SHIFT_CYCLE(sst1, maxt, tilenum, t);
sst1 = TRELATIVE(sst1, tile.tl);
- ClampCycleLight(&sss1, &sst1, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
- Mask(&sss1, &sst1, tilenum, object);
+ clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff);
+ mask(&sss1, &sst1, tilenum, object);
UINT32 tbase = tile.tmem + ((tile.line * sst1) & 0x1ff);
- (*TEX).c = ((this)->*(TexelFetch[index]))(sss1, sst1, tbase, tpal, userdata);
+ (*TEX).c = ((this)->*(m_texel_fetch[index]))(sss1, sst1, tbase, tpal, userdata);
}
-void N64TexturePipeT::CycleLinear(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::cycle_linear(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
#define TRELATIVE(x, y) ((((x) >> 3) - (y)) << 3) | (x & 7);
- int convert = object.OtherModes.convert_one && cycle;
- UINT32 tpal = tile.palette;
- UINT32 index = (tile.format << 4) | (tile.size << 2) | ((UINT32) object.OtherModes.en_tlut << 1) | (UINT32) object.OtherModes.tlut_type;
+ const UINT32 tpal = tile.palette;
+ const UINT32 index = (tile.format << 4) | (tile.size << 2) | ((UINT32) object.m_other_modes.en_tlut << 1) | (UINT32) object.m_other_modes.tlut_type;
INT32 invsf = 0;
INT32 sss1 = SSS;
@@ -446,17 +442,17 @@ void N64TexturePipeT::CycleLinear(Color* TEX, Color* prev, INT32 SSS, INT32 SST,
sfrac <<= 3;
tfrac <<= 3;
- Color t0;
- t0.c = ((this)->*(TexelFetch[index]))(sss1, sst1, tbase, tpal, userdata);
- INT32 newk0 = SIGN9(m_rdp->GetK0());
- INT32 newk1 = SIGN9(m_rdp->GetK1());
- INT32 newk2 = SIGN9(m_rdp->GetK2());
- INT32 newk3 = SIGN9(m_rdp->GetK3());
- INT32 invk0 = ~newk0;
- INT32 invk1 = ~newk1;
- INT32 invk2 = ~newk2;
- INT32 invk3 = ~newk3;
- if (convert)
+ color_t t0;
+ t0.c = ((this)->*(m_texel_fetch[index]))(sss1, sst1, tbase, tpal, userdata);
+ const INT32 newk0 = SIGN9(m_rdp->get_k0());
+ const INT32 newk1 = SIGN9(m_rdp->get_k1());
+ const INT32 newk2 = SIGN9(m_rdp->get_k2());
+ const INT32 newk3 = SIGN9(m_rdp->get_k3());
+ const INT32 invk0 = ~newk0;
+ const INT32 invk1 = ~newk1;
+ const INT32 invk2 = ~newk2;
+ const INT32 invk3 = ~newk3;
+ if (object.m_other_modes.convert_one && cycle)
{
t0 = *prev;
}
@@ -471,16 +467,14 @@ void N64TexturePipeT::CycleLinear(Color* TEX, Color* prev, INT32 SSS, INT32 SST,
TEX->i.a &= 0x1ff;
}
-void N64TexturePipeT::CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::cycle_linear_lerp(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
#define TRELATIVE(x, y) ((((x) >> 3) - (y)) << 3) | (x & 7);
UINT32 tpal = tile.palette;
- UINT32 index = (tile.format << 4) | (tile.size << 2) | ((UINT32) object.OtherModes.en_tlut << 1) | (UINT32) object.OtherModes.tlut_type;
-
- int center = 0;
+ UINT32 index = (tile.format << 4) | (tile.size << 2) | ((UINT32) object.m_other_modes.en_tlut << 1) | (UINT32) object.m_other_modes.tlut_type;
INT32 invsf = 0;
INT32 sss1 = SSS;
@@ -516,21 +510,21 @@ void N64TexturePipeT::CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32
invtf <<= 3;
}
- center = (sfrac == 0x10) && (tfrac == 0x10) && object.OtherModes.mid_texel;
+ INT32 center = (sfrac == 0x10) && (tfrac == 0x10) && object.m_other_modes.mid_texel;
sfrac <<= 3;
tfrac <<= 3;
- Color t1;
- Color t2;
- t1.c = ((this)->*(TexelFetch[index]))(sss2, sst1, tbase1, tpal, userdata);
- t2.c = ((this)->*(TexelFetch[index]))(sss1, sst2, tbase2, tpal, userdata);
+ color_t t1;
+ color_t t2;
+ t1.c = ((this)->*(m_texel_fetch[index]))(sss2, sst1, tbase1, tpal, userdata);
+ t2.c = ((this)->*(m_texel_fetch[index]))(sss1, sst2, tbase2, tpal, userdata);
if (!center)
{
if (upper)
{
- Color t3;
- t3.c = ((this)->*(TexelFetch[index]))(sss2, sst2, tbase2, tpal, userdata);
+ color_t t3;
+ t3.c = ((this)->*(m_texel_fetch[index]))(sss2, sst2, tbase2, tpal, userdata);
TEX->i.r = t3.i.r + (((invsf * (t2.i.r - t3.i.r)) + (invtf * (t1.i.r - t3.i.r)) + 0x80) >> 8);
TEX->i.g = t3.i.g + (((invsf * (t2.i.g - t3.i.g)) + (invtf * (t1.i.g - t3.i.g)) + 0x80) >> 8);
TEX->i.b = t3.i.b + (((invsf * (t2.i.b - t3.i.b)) + (invtf * (t1.i.b - t3.i.b)) + 0x80) >> 8);
@@ -538,8 +532,8 @@ void N64TexturePipeT::CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32
}
else
{
- Color t0;
- t0.c = ((this)->*(TexelFetch[index]))(sss1, sst1, tbase1, tpal, userdata);
+ color_t t0;
+ t0.c = ((this)->*(m_texel_fetch[index]))(sss1, sst1, tbase1, tpal, userdata);
TEX->i.r = t0.i.r + (((sfrac * (t1.i.r - t0.i.r)) + (tfrac * (t2.i.r - t0.i.r)) + 0x80) >> 8);
TEX->i.g = t0.i.g + (((sfrac * (t1.i.g - t0.i.g)) + (tfrac * (t2.i.g - t0.i.g)) + 0x80) >> 8);
TEX->i.b = t0.i.b + (((sfrac * (t1.i.b - t0.i.b)) + (tfrac * (t2.i.b - t0.i.b)) + 0x80) >> 8);
@@ -552,10 +546,10 @@ void N64TexturePipeT::CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32
}
else
{
- Color t0;
- Color t3;
- t0.c = ((this)->*(TexelFetch[index]))(sss1, sst1, 1, tpal, userdata);
- t3.c = ((this)->*(TexelFetch[index]))(sss2, sst2, tbase2, tpal, userdata);
+ color_t t0;
+ color_t t3;
+ t0.c = ((this)->*(m_texel_fetch[index]))(sss1, sst1, 1, tpal, userdata);
+ t3.c = ((this)->*(m_texel_fetch[index]))(sss2, sst2, tbase2, tpal, userdata);
TEX->i.r = (t0.i.r + t1.i.r + t2.i.r + t3.i.r) >> 2;
TEX->i.g = (t0.i.g + t1.i.g + t2.i.g + t3.i.g) >> 2;
TEX->i.b = (t0.i.b + t1.i.b + t2.i.b + t3.i.b) >> 2;
@@ -563,41 +557,41 @@ void N64TexturePipeT::CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32
}
}
-void N64TexturePipeT::Copy(Color* TEX, INT32 SSS, INT32 SST, UINT32 tilenum, const rdp_poly_state& object, rdp_span_aux *userdata)
+void n64_texture_pipe_t::copy(color_t* TEX, INT32 SSS, INT32 SST, UINT32 tilenum, const rdp_poly_state& object, rdp_span_aux* userdata)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
INT32 sss1 = SSS;
INT32 sst1 = SST;
- ShiftCopy(&sss1, &sst1, tilenum, object);
+ shift_copy(&sss1, &sst1, tilenum, object);
sss1 = TRELATIVE(sss1, tile.sl);
sst1 = TRELATIVE(sst1, tile.tl);
sss1 = (SIGN17(sss1) >> 5) & 0x1fff;
sst1 = (SIGN17(sst1) >> 5) & 0x1fff;
- Mask(&sss1, &sst1, tilenum, object);
- TEX->c = Fetch(sss1, sst1, tilenum, object, userdata);
+ mask(&sss1, &sst1, tilenum, object);
+ TEX->c = fetch(sss1, sst1, tilenum, object, userdata);
}
-void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, rdp_span_aux *userdata, const rdp_poly_state& object)
+void n64_texture_pipe_t::lod_1cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- INT32 nextsw = (w + dwinc) >> 16;
+ const INT32 nextsw = (w + dwinc) >> 16;
INT32 nexts = (s + dsinc) >> 16;
INT32 nextt = (t + dtinc) >> 16;
- if (object.OtherModes.persp_tex_en)
+ if (object.m_other_modes.persp_tex_en)
{
- m_rdp->TCDiv(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div(nexts, nextt, nextsw, &nexts, &nextt);
}
else
{
- m_rdp->TCDivNoPersp(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div_no_perspective(nexts, nextt, nextsw, &nexts, &nextt);
}
userdata->m_start_span = false;
userdata->m_precomp_s = nexts;
userdata->m_precomp_t = nextt;
- INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
+ const INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
INT32 horstep = SIGN17(nexts & 0x1ffff) - SIGN17(*sss & 0x1ffff);
INT32 vertstep = SIGN17(nextt & 0x1ffff) - SIGN17(*sst & 0x1ffff);
@@ -612,7 +606,6 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
INT32 lod = (horstep >= vertstep) ? horstep : vertstep;
- int tempanded;
if (*sss & 0x40000)
{
*sss = 0x7fff;
@@ -623,7 +616,7 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
}
else
{
- tempanded = *sss & 0x18000;
+ INT32 tempanded = *sss & 0x18000;
if (tempanded == 0x8000)
{
*sss = 0x7fff;
@@ -648,7 +641,7 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
}
else
{
- tempanded = *sst & 0x18000;
+ INT32 tempanded = *sst & 0x18000;
if (tempanded == 0x8000)
{
*sst = 0x7fff;
@@ -667,55 +660,55 @@ void N64TexturePipeT::LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
{
lod = 0x7fff;
}
- else if (lod < object.MiscState.MinLevel)
+ else if (lod < object.m_misc_state.m_min_level)
{
- lod = object.MiscState.MinLevel;
+ lod = object.m_misc_state.m_min_level;
}
- bool magnify = (lod < 32);
- INT32 l_tile = m_rdp->GetLog2((lod >> 5) & 0xff);
- bool distant = ((lod & 0x6000) || (l_tile >= object.MiscState.MaxLevel));
+ INT32 l_tile = m_rdp->get_log2((lod >> 5) & 0xff);
+ const bool magnify = (lod < 32);
+ const bool distant = ((lod & 0x6000) || (l_tile >= object.m_misc_state.m_max_level));
- userdata->LODFraction = ((lod << 3) >> l_tile) & 0xff;
+ userdata->m_lod_fraction = ((lod << 3) >> l_tile) & 0xff;
- if(!object.OtherModes.sharpen_tex_en && !object.OtherModes.detail_tex_en)
+ if(!object.m_other_modes.sharpen_tex_en && !object.m_other_modes.detail_tex_en)
{
if (distant)
{
- userdata->LODFraction = 0xff;
+ userdata->m_lod_fraction = 0xff;
}
else if (magnify)
{
- userdata->LODFraction = 0;
+ userdata->m_lod_fraction = 0;
}
}
- if(object.OtherModes.sharpen_tex_en && magnify)
+ if(object.m_other_modes.sharpen_tex_en && magnify)
{
- userdata->LODFraction |= 0x100;
+ userdata->m_lod_fraction |= 0x100;
}
}
-void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux *userdata, const rdp_poly_state& object)
+void n64_texture_pipe_t::lod_2cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux* userdata, const rdp_poly_state& object)
{
- INT32 nextsw = (w + dwinc) >> 16;
+ const INT32 nextsw = (w + dwinc) >> 16;
INT32 nexts = (s + dsinc) >> 16;
INT32 nextt = (t + dtinc) >> 16;
- if (object.OtherModes.persp_tex_en)
+ if (object.m_other_modes.persp_tex_en)
{
- m_rdp->TCDiv(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div(nexts, nextt, nextsw, &nexts, &nextt);
}
else
{
- m_rdp->TCDivNoPersp(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div_no_perspective(nexts, nextt, nextsw, &nexts, &nextt);
}
userdata->m_start_span = false;
userdata->m_precomp_s = nexts;
userdata->m_precomp_t = nextt;
- INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
+ const INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
INT32 horstep = SIGN17(nexts & 0x1ffff) - SIGN17(*sss & 0x1ffff);
INT32 vertstep = SIGN17(nextt & 0x1ffff) - SIGN17(*sst & 0x1ffff);
@@ -730,7 +723,6 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
INT32 lod = (horstep >= vertstep) ? horstep : vertstep;
- INT32 temp_anded;
if (*sss & 0x40000)
{
*sss = 0x7fff;
@@ -741,7 +733,7 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
}
else
{
- temp_anded = *sss & 0x18000;
+ INT32 temp_anded = *sss & 0x18000;
if (temp_anded == 0x8000)
{
*sss = 0x7fff;
@@ -766,7 +758,7 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
}
else
{
- temp_anded = *sst & 0x18000;
+ INT32 temp_anded = *sst & 0x18000;
if (temp_anded == 0x8000)
{
*sst = 0x7fff;
@@ -785,44 +777,44 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
{
lod = 0x7fff;
}
- else if (lod < object.MiscState.MinLevel)
+ else if (lod < object.m_misc_state.m_min_level)
{
- lod = object.MiscState.MinLevel;
+ lod = object.m_misc_state.m_min_level;
}
- bool magnify = (lod < 32);
- INT32 l_tile = m_rdp->GetLog2((lod >> 5) & 0xff);
- bool distant = ((lod & 0x6000) || (l_tile >= object.MiscState.MaxLevel));
+ INT32 l_tile = m_rdp->get_log2((lod >> 5) & 0xff);
+ const bool magnify = (lod < 32);
+ const bool distant = ((lod & 0x6000) || (l_tile >= object.m_misc_state.m_max_level));
- userdata->LODFraction = ((lod << 3) >> l_tile) & 0xff;
+ userdata->m_lod_fraction = ((lod << 3) >> l_tile) & 0xff;
- if(!object.OtherModes.sharpen_tex_en && !object.OtherModes.detail_tex_en)
+ if(!object.m_other_modes.sharpen_tex_en && !object.m_other_modes.detail_tex_en)
{
if (distant)
{
- userdata->LODFraction = 0xff;
+ userdata->m_lod_fraction = 0xff;
}
else if (magnify)
{
- userdata->LODFraction = 0;
+ userdata->m_lod_fraction = 0;
}
}
- if(object.OtherModes.sharpen_tex_en && magnify)
+ if(object.m_other_modes.sharpen_tex_en && magnify)
{
- userdata->LODFraction |= 0x100;
+ userdata->m_lod_fraction |= 0x100;
}
- if (object.OtherModes.tex_lod_en)
+ if (object.m_other_modes.tex_lod_en)
{
if (distant)
{
- l_tile = object.MiscState.MaxLevel;
+ l_tile = object.m_misc_state.m_max_level;
}
- if (!object.OtherModes.detail_tex_en)
+ if (!object.m_other_modes.detail_tex_en)
{
*t1 = (prim_tile + l_tile) & 7;
- if (!(distant || (!object.OtherModes.sharpen_tex_en && magnify)))
+ if (!(distant || (!object.m_other_modes.sharpen_tex_en && magnify)))
{
*t2 = (*t1 + 1) & 7;
}
@@ -854,22 +846,22 @@ void N64TexturePipeT::LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32
}
}
-void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, const rdp_poly_state& object)
+void n64_texture_pipe_t::lod_2cycle_limited(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, const rdp_poly_state& object)
{
- INT32 nextsw = (w + dwinc) >> 16;
+ const INT32 nextsw = (w + dwinc) >> 16;
INT32 nexts = (s + dsinc) >> 16;
INT32 nextt = (t + dtinc) >> 16;
- if (object.OtherModes.persp_tex_en)
+ if (object.m_other_modes.persp_tex_en)
{
- m_rdp->TCDiv(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div(nexts, nextt, nextsw, &nexts, &nextt);
}
else
{
- m_rdp->TCDivNoPersp(nexts, nextt, nextsw, &nexts, &nextt);
+ m_rdp->tc_div_no_perspective(nexts, nextt, nextsw, &nexts, &nextt);
}
- INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
+ const INT32 lodclamp = (((*sst & 0x60000) > 0) | ((nextt & 0x60000) > 0)) || (((*sss & 0x60000) > 0) | ((nexts & 0x60000) > 0));
INT32 horstep = SIGN17(nexts & 0x1ffff) - SIGN17(*sss & 0x1ffff);
INT32 vertstep = SIGN17(nextt & 0x1ffff) - SIGN17(*sst & 0x1ffff);
@@ -884,7 +876,6 @@ void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t,
INT32 lod = (horstep >= vertstep) ? horstep : vertstep;
- INT32 tempanded;
if (*sss & 0x40000)
{
*sss = 0x7fff;
@@ -895,7 +886,7 @@ void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t,
}
else
{
- tempanded = *sss & 0x18000;
+ INT32 tempanded = *sss & 0x18000;
if (tempanded == 0x8000)
{
*sss = 0x7fff;
@@ -920,7 +911,7 @@ void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t,
}
else
{
- tempanded = *sst & 0x18000;
+ INT32 tempanded = *sst & 0x18000;
if (tempanded == 0x8000)
{
*sst = 0x7fff;
@@ -939,22 +930,22 @@ void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t,
{
lod = 0x7fff;
}
- else if (lod < object.MiscState.MinLevel)
+ else if (lod < object.m_misc_state.m_min_level)
{
- lod = object.MiscState.MinLevel;
+ lod = object.m_misc_state.m_min_level;
}
- bool magnify = (lod < 32);
- INT32 l_tile = m_rdp->GetLog2((lod >> 5) & 0xff);
- bool distant = (lod & 0x6000) || (l_tile >= object.MiscState.MaxLevel);
+ INT32 l_tile = m_rdp->get_log2((lod >> 5) & 0xff);
+ const bool magnify = (lod < 32);
+ const bool distant = (lod & 0x6000) || (l_tile >= object.m_misc_state.m_max_level);
- if (object.OtherModes.tex_lod_en)
+ if (object.m_other_modes.tex_lod_en)
{
if (distant)
{
- l_tile = object.MiscState.MaxLevel;
+ l_tile = object.m_misc_state.m_max_level;
}
- if (!object.OtherModes.detail_tex_en)
+ if (!object.m_other_modes.detail_tex_en)
{
*t1 = (prim_tile + l_tile) & 7;
}
@@ -973,16 +964,14 @@ void N64TexturePipeT::LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t,
}
}
-void N64TexturePipeT::CalculateClampDiffs(UINT32 prim_tile, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff)
+void n64_texture_pipe_t::calculate_clamp_diffs(UINT32 prim_tile, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff)
{
- const N64Tile* tiles = object.m_tiles;
- if (object.OtherModes.cycle_type == CYCLE_TYPE_2)
+ const n64_tile_t* tiles = object.m_tiles;
+ if (object.m_other_modes.cycle_type == CYCLE_TYPE_2)
{
- if (object.OtherModes.tex_lod_en)
+ if (object.m_other_modes.tex_lod_en)
{
- int start = 0;
- int end = 7;
- for (; start <= end; start++)
+ for (INT32 start = 0; start <= 7; start++)
{
m_clamp_s_diff[start] = (tiles[start].sh >> 2) - (tiles[start].sl >> 2);
m_clamp_t_diff[start] = (tiles[start].th >> 2) - (tiles[start].tl >> 2);
@@ -990,8 +979,8 @@ void N64TexturePipeT::CalculateClampDiffs(UINT32 prim_tile, rdp_span_aux *userda
}
else
{
- int start = prim_tile;
- int end = (prim_tile + 1) & 7;
+ const INT32 start = prim_tile;
+ const INT32 end = (prim_tile + 1) & 7;
m_clamp_s_diff[start] = (tiles[start].sh >> 2) - (tiles[start].sl >> 2);
m_clamp_t_diff[start] = (tiles[start].th >> 2) - (tiles[start].tl >> 2);
m_clamp_s_diff[end] = (tiles[end].sh >> 2) - (tiles[end].sl >> 2);
@@ -1010,19 +999,17 @@ void N64TexturePipeT::CalculateClampDiffs(UINT32 prim_tile, rdp_span_aux *userda
static INT32 sTexAddrSwap16[2] = { WORD_ADDR_XOR, WORD_XOR_DWORD_SWAP };
static INT32 sTexAddrSwap8[2] = { BYTE_ADDR_XOR, BYTE_XOR_DWORD_SWAP };
-UINT32 N64TexturePipeT::_FetchRGBA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba16_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x7ff;
+ INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x7ff;
UINT16 c = ((UINT16*)userdata->m_tmem)[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 8) << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1031,32 +1018,28 @@ UINT32 N64TexturePipeT::_FetchRGBA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32
#endif
}
-UINT32 N64TexturePipeT::_FetchRGBA_16_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba16_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x7ff;
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x7ff;
UINT16 c = ((UINT16*)userdata->m_tmem)[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 8) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchRGBA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba16_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x7ff;
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x7ff;
#if USE_64K_LUT
- return Expand16To32Table[((UINT16*)userdata->m_tmem)[taddr]];
+ return m_expand_16to32_table[((UINT16*)userdata->m_tmem)[taddr]];
#else
- UINT16 c = ((UINT16*)userdata->m_tmem)[taddr];
- Color color;
+ const UINT16 c = ((UINT16*)userdata->m_tmem)[taddr];
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1065,20 +1048,18 @@ UINT32 N64TexturePipeT::_FetchRGBA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 t
#endif
}
-UINT32 N64TexturePipeT::_FetchRGBA_32_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba32_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT32 *tc = ((UINT32*)userdata->m_tmem);
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
+ const UINT32 *tc = ((UINT32*)userdata->m_tmem);
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
- taddr &= 0x3ff;
UINT32 c = tc[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 24) << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1087,32 +1068,27 @@ UINT32 N64TexturePipeT::_FetchRGBA_32_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32
#endif
}
-UINT32 N64TexturePipeT::_FetchRGBA_32_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba32_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT32 *tc = ((UINT32*)userdata->m_tmem);
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
+ const UINT32 *tc = ((UINT32*)userdata->m_tmem);
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
- taddr &= 0x3ff;
UINT32 c = tc[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 24) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchRGBA_32_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_rgba32_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
-
- taddr &= 0x3ff;
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
UINT32 c = ((UINT16*)userdata->m_tmem)[taddr];
- Color color;
+ color_t color;
color.i.r = (c >> 8) & 0xff;
color.i.g = c & 0xff;
c = ((UINT16*)userdata->m_tmem)[taddr | 0x400];
@@ -1122,22 +1098,16 @@ UINT32 N64TexturePipeT::_FetchRGBA_32_RAW(INT32 s, INT32 t, INT32 tbase, INT32 t
return color.c;
}
-UINT32 N64TexturePipeT::_FetchNOP(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata) { return 0; }
+UINT32 n64_texture_pipe_t::fetch_nop(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata) { return 0; }
-UINT32 N64TexturePipeT::_FetchYUV(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_yuv(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT16 *tc = ((UINT16*)userdata->m_tmem);
-
- int taddr = (tbase << 3) + s;
- int taddrlow = taddr >> 1;
+ const UINT16 *tc = ((UINT16*)userdata->m_tmem);
- taddr ^= sTexAddrSwap8[t & 1];
- taddrlow ^= sTexAddrSwap16[t & 1];
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
+ const INT32 taddrlow = ((taddr >> 1) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
- taddr &= 0x7ff;
- taddrlow &= 0x3ff;
-
- UINT16 c = tc[taddrlow];
+ const UINT16 c = tc[taddrlow];
INT32 y = userdata->m_tmem[taddr | 0x800];
INT32 u = c >> 8;
@@ -1147,7 +1117,7 @@ UINT32 N64TexturePipeT::_FetchYUV(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp
u |= ((u & 0x80) << 1);
v |= ((v & 0x80) << 1);
- Color color;
+ color_t color;
color.i.r = u;
color.i.g = v;
color.i.b = y;
@@ -1156,21 +1126,18 @@ UINT32 N64TexturePipeT::_FetchYUV(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp
return color.c;
}
-UINT32 N64TexturePipeT::_FetchCI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- taddr &= 0x7ff;
- UINT8 p = (s & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
+ const UINT8 p = (s & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1179,54 +1146,47 @@ UINT32 N64TexturePipeT::_FetchCI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tp
#endif
}
-UINT32 N64TexturePipeT::_FetchCI_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- taddr &= 0x7ff;
- UINT8 p = (s & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
+ const UINT8 p = (s & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchCI_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0xfff;
UINT8 p = (s & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
p = (tpal << 4) | p;
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = color.i.a = p;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchCI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = tc[taddr];
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
+ const UINT8 p = tc[taddr];
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1235,52 +1195,44 @@ UINT32 N64TexturePipeT::_FetchCI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tp
#endif
}
-UINT32 N64TexturePipeT::_FetchCI_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = tc[taddr];
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
+ const UINT8 p = tc[taddr];
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchCI_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ci8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0xfff;
- UINT8 p = tc[taddr];
-
- Color color;
- color.i.r = color.i.g = color.i.b = color.i.a = p;
+ color_t color;
+ color.i.r = color.i.g = color.i.b = color.i.a = tc[taddr];
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
+ const UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1289,35 +1241,31 @@ UINT32 N64TexturePipeT::_FetchIA_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tp
#endif
}
-UINT32 N64TexturePipeT::_FetchIA_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
+ const UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | p) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0xfff;
- UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
+ const UINT8 p = ((s) & 1) ? (tc[taddr] & 0xf) : (tc[taddr] >> 4);
UINT8 i = p & 0xe;
i = (i << 4) | (i << 1) | (i >> 2);
- Color color;
+ color_t color;
color.i.r = i;
color.i.g = i;
color.i.b = i;
@@ -1326,20 +1274,18 @@ UINT32 N64TexturePipeT::_FetchIA_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = tc[taddr];
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
+ const UINT8 p = tc[taddr];
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1348,35 +1294,31 @@ UINT32 N64TexturePipeT::_FetchIA_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tp
#endif
}
-UINT32 N64TexturePipeT::_FetchIA_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 p = tc[taddr];
- UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
+ const UINT8 p = tc[taddr];
+ const UINT16 c = ((UINT16*)(userdata->m_tmem + 0x800))[p << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0xfff;
- UINT8 p = tc[taddr];
+ const UINT8 p = tc[taddr];
UINT8 i = p & 0xf0;
i |= (i >> 4);
- Color color;
+ color_t color;
color.i.r = i;
color.i.g = i;
color.i.b = i;
@@ -1385,20 +1327,18 @@ UINT32 N64TexturePipeT::_FetchIA_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia16_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT16 *tc = ((UINT16*)userdata->m_tmem);
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x3ff;
+ const UINT16 *tc = ((UINT16*)userdata->m_tmem);
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
UINT16 c = tc[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 8) << 2];
#if USE_64K_LUT
- return Expand16To32Table[c];
+ return m_expand_16to32_table[c];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(c);
color.i.g = GET_MED_RGBA16_TMEM(c);
color.i.b = GET_LOW_RGBA16_TMEM(c);
@@ -1407,34 +1347,30 @@ UINT32 N64TexturePipeT::_FetchIA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 t
#endif
}
-UINT32 N64TexturePipeT::_FetchIA_16_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia16_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT16 *tc = ((UINT16*)userdata->m_tmem);
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x3ff;
+ const UINT16 *tc = ((UINT16*)userdata->m_tmem);
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x3ff;
UINT16 c = tc[taddr];
c = ((UINT16*)(userdata->m_tmem + 0x800))[(c >> 8) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (c >> 8) & 0xff;
color.i.a = c & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchIA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_ia16_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT16 *tc = ((UINT16*)userdata->m_tmem);
- int taddr = (tbase << 2) + s;
- taddr ^= sTexAddrSwap16[t & 1];
- taddr &= 0x7ff;
+ const UINT16 *tc = ((UINT16*)userdata->m_tmem);
+ const INT32 taddr = (((tbase << 2) + s) ^ sTexAddrSwap16[t & 1]) & 0x7ff;
- UINT16 c = tc[taddr];
- UINT8 i = (c >> 8);
+ const UINT16 c = tc[taddr];
+ const UINT8 i = (c >> 8);
- Color color;
+ color_t color;
color.i.r = i;
color.i.g = i;
color.i.b = i;
@@ -1443,21 +1379,19 @@ UINT32 N64TexturePipeT::_FetchIA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpa
return color.c;
}
-UINT32 N64TexturePipeT::_FetchI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 byteval = tc[taddr];
- UINT8 c = ((s & 1)) ? (byteval & 0xf) : ((byteval >> 4) & 0xf);
- UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | c) << 2];
+ const UINT8 byteval = tc[taddr];
+ const UINT8 c = ((s & 1)) ? (byteval & 0xf) : ((byteval >> 4) & 0xf);
+ const UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | c) << 2];
#if USE_64K_LUT
- return Expand16To32Table[k];
+ return m_expand_16to32_table[k];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(k);
color.i.g = GET_MED_RGBA16_TMEM(k);
color.i.b = GET_LOW_RGBA16_TMEM(k);
@@ -1466,36 +1400,32 @@ UINT32 N64TexturePipeT::_FetchI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpa
#endif
}
-UINT32 N64TexturePipeT::_FetchI_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 byteval = tc[taddr];
- UINT8 c = ((s & 1)) ? (byteval & 0xf) : ((byteval >> 4) & 0xf);
- UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | c) << 2];
+ const UINT8 byteval = tc[taddr];
+ const UINT8 c = ((s & 1)) ? (byteval & 0xf) : ((byteval >> 4) & 0xf);
+ const UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[((tpal << 4) | c) << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (k >> 8) & 0xff;
color.i.a = k & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchI_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = ((tbase << 4) + s) >> 1;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = ((((tbase << 4) + s) >> 1) ^ sTexAddrSwap8[t & 1]) & 0xfff;
- UINT8 byteval = tc[taddr];
+ const UINT8 byteval = tc[taddr];
UINT8 c = ((s & 1)) ? (byteval & 0xf) : ((byteval >> 4) & 0xf);
c |= (c << 4);
- Color color;
+ color_t color;
color.i.r = c;
color.i.g = c;
color.i.b = c;
@@ -1504,20 +1434,18 @@ UINT32 N64TexturePipeT::_FetchI_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal,
return color.c;
}
-UINT32 N64TexturePipeT::_FetchI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 c = tc[taddr];
- UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[c << 2];
+ const UINT8 c = tc[taddr];
+ const UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[c << 2];
#if USE_64K_LUT
- return Expand16To32Table[k];
+ return m_expand_16to32_table[k];
#else
- Color color;
+ color_t color;
color.i.r = GET_HI_RGBA16_TMEM(k);
color.i.g = GET_MED_RGBA16_TMEM(k);
color.i.b = GET_LOW_RGBA16_TMEM(k);
@@ -1526,33 +1454,29 @@ UINT32 N64TexturePipeT::_FetchI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpa
#endif
}
-UINT32 N64TexturePipeT::_FetchI_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0x7ff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0x7ff;
- UINT8 c = tc[taddr];
- UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[c << 2];
+ const UINT8 c = tc[taddr];
+ const UINT16 k = ((UINT16*)(userdata->m_tmem + 0x800))[c << 2];
- Color color;
+ color_t color;
color.i.r = color.i.g = color.i.b = (k >> 8) & 0xff;
color.i.a = k & 0xff;
return color.c;
}
-UINT32 N64TexturePipeT::_FetchI_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch_i8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata)
{
- UINT8 *tc = userdata->m_tmem;
- int taddr = (tbase << 3) + s;
- taddr ^= sTexAddrSwap8[t & 1];
- taddr &= 0xfff;
+ const UINT8 *tc = userdata->m_tmem;
+ const INT32 taddr = (((tbase << 3) + s) ^ sTexAddrSwap8[t & 1]) & 0xfff;
- UINT8 c = tc[taddr];
+ const UINT8 c = tc[taddr];
- Color color;
+ color_t color;
color.i.r = c;
color.i.g = c;
color.i.b = c;
@@ -1561,16 +1485,16 @@ UINT32 N64TexturePipeT::_FetchI_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal,
return color.c;
}
-UINT32 N64TexturePipeT::Fetch(INT32 s, INT32 t, INT32 tilenum, const rdp_poly_state& object, rdp_span_aux *userdata)
+UINT32 n64_texture_pipe_t::fetch(INT32 s, INT32 t, INT32 tilenum, const rdp_poly_state& object, rdp_span_aux* userdata)
{
- const N64Tile* tiles = object.m_tiles;
- const N64Tile& tile = tiles[tilenum];
- UINT32 tformat = tile.format;
- UINT32 tsize = tile.size;
- UINT32 tpal = tile.palette;
- UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.OtherModes.en_tlut << 1) | (UINT32) object.OtherModes.tlut_type;
+ const n64_tile_t* tiles = object.m_tiles;
+ const n64_tile_t& tile = tiles[tilenum];
+ const UINT32 tformat = tile.format;
+ const UINT32 tsize = tile.size;
+ const UINT32 tpal = tile.palette;
+ const UINT32 index = (tformat << 4) | (tsize << 2) | ((UINT32) object.m_other_modes.en_tlut << 1) | (UINT32) object.m_other_modes.tlut_type;
- UINT32 tbase = tile.tmem + ((tile.line * t) & 0x1ff);
+ const UINT32 tbase = tile.tmem + ((tile.line * t) & 0x1ff);
- return ((this)->*(TexelFetch[index]))(s, t, tbase, tpal, userdata);
+ return ((this)->*(m_texel_fetch[index]))(s, t, tbase, tpal, userdata);
}
diff --git a/src/mame/video/rdptpipe.h b/src/mame/video/rdptpipe.h
index 7a8cc25ccfd..60d3a4b58dd 100644
--- a/src/mame/video/rdptpipe.h
+++ b/src/mame/video/rdptpipe.h
@@ -18,19 +18,19 @@
#include "emu.h"
-struct OtherModesT;
-struct MiscStateT;
-class Color;
+struct other_modes_t;
+struct misc_state_t;
+class color_t;
struct rdp_span_aux;
struct rdp_poly_state;
-class N64TexturePipeT
+class n64_texture_pipe_t
{
public:
- typedef UINT32 (N64TexturePipeT::*TexelFetcher) (INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- typedef void (N64TexturePipeT::*Cycler) (Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
+ typedef UINT32 (n64_texture_pipe_t::*texel_fetcher_t) (INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ typedef void (n64_texture_pipe_t::*texel_cycler_t) (color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
- N64TexturePipeT()
+ n64_texture_pipe_t()
{
m_maskbits_table[0] = 0x3ff;
for(int i = 1; i < 16; i++)
@@ -41,130 +41,129 @@ class N64TexturePipeT
for (int idx = 0; idx < 80; idx++)
{
- TexelFetch[idx] = &N64TexturePipeT::_FetchNOP;
+ m_texel_fetch[idx] = &n64_texture_pipe_t::fetch_nop;
}
- TexelFetch[ 8] = &N64TexturePipeT::_FetchRGBA_16_RAW;
- TexelFetch[ 9] = &N64TexturePipeT::_FetchRGBA_16_RAW;
- TexelFetch[10] = &N64TexturePipeT::_FetchRGBA_16_TLUT0;
- TexelFetch[11] = &N64TexturePipeT::_FetchRGBA_16_TLUT1;
- TexelFetch[12] = &N64TexturePipeT::_FetchRGBA_32_RAW;
- TexelFetch[13] = &N64TexturePipeT::_FetchRGBA_32_RAW;
- TexelFetch[14] = &N64TexturePipeT::_FetchRGBA_32_TLUT0;
- TexelFetch[15] = &N64TexturePipeT::_FetchRGBA_32_TLUT1;
-
- TexelFetch[24] = &N64TexturePipeT::_FetchYUV;
- TexelFetch[25] = &N64TexturePipeT::_FetchYUV;
- TexelFetch[26] = &N64TexturePipeT::_FetchYUV;
- TexelFetch[27] = &N64TexturePipeT::_FetchYUV;
-
- TexelFetch[32] = &N64TexturePipeT::_FetchCI_4_RAW;
- TexelFetch[33] = &N64TexturePipeT::_FetchCI_4_RAW;
- TexelFetch[34] = &N64TexturePipeT::_FetchCI_4_TLUT0;
- TexelFetch[35] = &N64TexturePipeT::_FetchCI_4_TLUT1;
- TexelFetch[36] = &N64TexturePipeT::_FetchCI_8_RAW;
- TexelFetch[37] = &N64TexturePipeT::_FetchCI_8_RAW;
- TexelFetch[38] = &N64TexturePipeT::_FetchCI_8_TLUT0;
- TexelFetch[39] = &N64TexturePipeT::_FetchCI_8_TLUT1;
-
- TexelFetch[48] = &N64TexturePipeT::_FetchIA_4_RAW;
- TexelFetch[49] = &N64TexturePipeT::_FetchIA_4_RAW;
- TexelFetch[50] = &N64TexturePipeT::_FetchIA_4_TLUT0;
- TexelFetch[51] = &N64TexturePipeT::_FetchIA_4_TLUT1;
- TexelFetch[52] = &N64TexturePipeT::_FetchIA_8_RAW;
- TexelFetch[53] = &N64TexturePipeT::_FetchIA_8_RAW;
- TexelFetch[54] = &N64TexturePipeT::_FetchIA_8_TLUT0;
- TexelFetch[55] = &N64TexturePipeT::_FetchIA_8_TLUT1;
- TexelFetch[56] = &N64TexturePipeT::_FetchIA_16_RAW;
- TexelFetch[57] = &N64TexturePipeT::_FetchIA_16_RAW;
- TexelFetch[58] = &N64TexturePipeT::_FetchIA_16_TLUT0;
- TexelFetch[59] = &N64TexturePipeT::_FetchIA_16_TLUT1;
-
- TexelFetch[64] = &N64TexturePipeT::_FetchI_4_RAW;
- TexelFetch[65] = &N64TexturePipeT::_FetchI_4_RAW;
- TexelFetch[66] = &N64TexturePipeT::_FetchI_4_TLUT0;
- TexelFetch[67] = &N64TexturePipeT::_FetchI_4_TLUT1;
- TexelFetch[68] = &N64TexturePipeT::_FetchI_8_RAW;
- TexelFetch[69] = &N64TexturePipeT::_FetchI_8_RAW;
- TexelFetch[70] = &N64TexturePipeT::_FetchI_8_TLUT0;
- TexelFetch[71] = &N64TexturePipeT::_FetchI_8_TLUT1;
-
- cycle[0] = &N64TexturePipeT::CycleNearest;
- cycle[1] = &N64TexturePipeT::CycleNearestLerp;
- cycle[2] = &N64TexturePipeT::CycleLinear;
- cycle[3] = &N64TexturePipeT::CycleLinearLerp;
+ m_texel_fetch[ 8] = &n64_texture_pipe_t::fetch_rgba16_raw;
+ m_texel_fetch[ 9] = &n64_texture_pipe_t::fetch_rgba16_raw;
+ m_texel_fetch[10] = &n64_texture_pipe_t::fetch_rgba16_tlut0;
+ m_texel_fetch[11] = &n64_texture_pipe_t::fetch_rgba16_tlut1;
+ m_texel_fetch[12] = &n64_texture_pipe_t::fetch_rgba32_raw;
+ m_texel_fetch[13] = &n64_texture_pipe_t::fetch_rgba32_raw;
+ m_texel_fetch[14] = &n64_texture_pipe_t::fetch_rgba32_tlut0;
+ m_texel_fetch[15] = &n64_texture_pipe_t::fetch_rgba32_tlut1;
+
+ m_texel_fetch[24] = &n64_texture_pipe_t::fetch_yuv;
+ m_texel_fetch[25] = &n64_texture_pipe_t::fetch_yuv;
+ m_texel_fetch[26] = &n64_texture_pipe_t::fetch_yuv;
+ m_texel_fetch[27] = &n64_texture_pipe_t::fetch_yuv;
+
+ m_texel_fetch[32] = &n64_texture_pipe_t::fetch_ci4_raw;
+ m_texel_fetch[33] = &n64_texture_pipe_t::fetch_ci4_raw;
+ m_texel_fetch[34] = &n64_texture_pipe_t::fetch_ci4_tlut0;
+ m_texel_fetch[35] = &n64_texture_pipe_t::fetch_ci4_tlut1;
+ m_texel_fetch[36] = &n64_texture_pipe_t::fetch_ci8_raw;
+ m_texel_fetch[37] = &n64_texture_pipe_t::fetch_ci8_raw;
+ m_texel_fetch[38] = &n64_texture_pipe_t::fetch_ci8_tlut0;
+ m_texel_fetch[39] = &n64_texture_pipe_t::fetch_ci8_tlut1;
+
+ m_texel_fetch[48] = &n64_texture_pipe_t::fetch_ia4_raw;
+ m_texel_fetch[49] = &n64_texture_pipe_t::fetch_ia4_raw;
+ m_texel_fetch[50] = &n64_texture_pipe_t::fetch_ia4_tlut0;
+ m_texel_fetch[51] = &n64_texture_pipe_t::fetch_ia4_tlut1;
+ m_texel_fetch[52] = &n64_texture_pipe_t::fetch_ia8_raw;
+ m_texel_fetch[53] = &n64_texture_pipe_t::fetch_ia8_raw;
+ m_texel_fetch[54] = &n64_texture_pipe_t::fetch_ia8_tlut0;
+ m_texel_fetch[55] = &n64_texture_pipe_t::fetch_ia8_tlut1;
+ m_texel_fetch[56] = &n64_texture_pipe_t::fetch_ia16_raw;
+ m_texel_fetch[57] = &n64_texture_pipe_t::fetch_ia16_raw;
+ m_texel_fetch[58] = &n64_texture_pipe_t::fetch_ia16_tlut0;
+ m_texel_fetch[59] = &n64_texture_pipe_t::fetch_ia16_tlut1;
+
+ m_texel_fetch[64] = &n64_texture_pipe_t::fetch_i4_raw;
+ m_texel_fetch[65] = &n64_texture_pipe_t::fetch_i4_raw;
+ m_texel_fetch[66] = &n64_texture_pipe_t::fetch_i4_tlut0;
+ m_texel_fetch[67] = &n64_texture_pipe_t::fetch_i4_tlut1;
+ m_texel_fetch[68] = &n64_texture_pipe_t::fetch_i8_raw;
+ m_texel_fetch[69] = &n64_texture_pipe_t::fetch_i8_raw;
+ m_texel_fetch[70] = &n64_texture_pipe_t::fetch_i8_tlut0;
+ m_texel_fetch[71] = &n64_texture_pipe_t::fetch_i8_tlut1;
+
+ m_cycle[0] = &n64_texture_pipe_t::cycle_nearest;
+ m_cycle[1] = &n64_texture_pipe_t::cycle_nearest_lerp;
+ m_cycle[2] = &n64_texture_pipe_t::cycle_linear;
+ m_cycle[3] = &n64_texture_pipe_t::cycle_linear_lerp;
}
- void CycleNearest(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
- void CycleNearestLerp(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
- void CycleLinear(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
- void CycleLinearLerp(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
+ void cycle_nearest(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+ void cycle_nearest_lerp(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+ void cycle_linear(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+ void cycle_linear_lerp(color_t* TEX, color_t* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
- Cycler cycle[4];
+ texel_cycler_t m_cycle[4];
- void Copy(Color* TEX, INT32 SSS, INT32 SST, UINT32 tilenum, const rdp_poly_state& object, rdp_span_aux *userdata);
- UINT32 Fetch(INT32 SSS, INT32 SST, INT32 tile, const rdp_poly_state& object, rdp_span_aux *userdata);
- void CalculateClampDiffs(UINT32 prim_tile, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
- void LOD1Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, rdp_span_aux *userdata, const rdp_poly_state& object);
- void LOD2Cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux *userdata, const rdp_poly_state& object);
- void LOD2CycleLimited(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, const rdp_poly_state& object);
+ void copy(color_t* TEX, INT32 SSS, INT32 SST, UINT32 tilenum, const rdp_poly_state& object, rdp_span_aux* userdata);
+ UINT32 fetch(INT32 SSS, INT32 SST, INT32 tile, const rdp_poly_state& object, rdp_span_aux* userdata);
+ void calculate_clamp_diffs(UINT32 prim_tile, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+ void lod_1cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, rdp_span_aux* userdata, const rdp_poly_state& object);
+ void lod_2cycle(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux* userdata, const rdp_poly_state& object);
+ void lod_2cycle_limited(INT32* sss, INT32* sst, INT32 s, INT32 t, INT32 w, INT32 dsinc, INT32 dtinc, INT32 dwinc, INT32 prim_tile, INT32* t1, const rdp_poly_state& object);
- void SetMachine(running_machine& machine);
+ void set_machine(running_machine& machine);
bool m_start_span;
private:
- UINT32 Expand16To32Table[0x10000];
-
- void Mask(INT32* S, INT32* T, INT32 num, const rdp_poly_state& object);
- void MaskCoupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT32 num, const rdp_poly_state& object);
-
- void ShiftCycle(INT32* S, INT32* T, INT32* maxs, INT32* maxt, UINT32 num, const rdp_poly_state& object);
- void ShiftCopy(INT32* S, INT32* T, UINT32 num, const rdp_poly_state& object);
-
- void ClampCycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, INT32 maxs, INT32 maxt, INT32 num, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
- void ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, INT32 num, rdp_span_aux *userdata, const rdp_poly_state& object, INT32 *m_clamp_s_diff, INT32 *m_clamp_t_diff);
-
- UINT32 _FetchNOP(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- UINT32 _FetchRGBA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchRGBA_16_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchRGBA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchRGBA_32_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchRGBA_32_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchRGBA_32_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- UINT32 _FetchYUV(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- UINT32 _FetchCI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchCI_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchCI_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchCI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchCI_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchCI_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- UINT32 _FetchIA_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_16_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_16_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchIA_16_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- UINT32 _FetchI_4_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchI_4_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchI_4_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchI_8_TLUT0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchI_8_TLUT1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
- UINT32 _FetchI_8_RAW(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux *userdata);
-
- TexelFetcher TexelFetch[16*5];
+ void mask(INT32* S, INT32* T, INT32 num, const rdp_poly_state& object);
+ void mask_coupled(INT32* S, INT32* S1, INT32* T, INT32* T1, INT32 num, const rdp_poly_state& object);
+
+ void shift_cycle(INT32* S, INT32* T, INT32* maxs, INT32* maxt, UINT32 num, const rdp_poly_state& object);
+ void shift_copy(INT32* S, INT32* T, UINT32 num, const rdp_poly_state& object);
+
+ void clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, INT32 maxs, INT32 maxt, INT32 num, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+ void clamp_cycle_light(INT32* S, INT32* T, bool maxs, bool maxt, INT32 num, rdp_span_aux* userdata, const rdp_poly_state& object, INT32* m_clamp_s_diff, INT32* m_clamp_t_diff);
+
+ UINT32 fetch_nop(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ UINT32 fetch_rgba16_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_rgba16_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_rgba16_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_rgba32_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_rgba32_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_rgba32_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ UINT32 fetch_yuv(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ UINT32 fetch_ci4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ci4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ci4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ci8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ci8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ci8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ UINT32 fetch_ia4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia16_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia16_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_ia16_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ UINT32 fetch_i4_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_i4_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_i4_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_i8_tlut0(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_i8_tlut1(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+ UINT32 fetch_i8_raw(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata);
+
+ texel_fetcher_t m_texel_fetch[16*5];
n64_rdp* m_rdp;
INT32 m_maskbits_table[16];
+ UINT32 m_expand_16to32_table[0x10000];
};
#endif // _VIDEO_RDPTEXPIPE_H_