diff options
-rw-r--r-- | src/mame/video/n64.h | 2 | ||||
-rw-r--r-- | src/mame/video/rdpspn16.c | 4 | ||||
-rw-r--r-- | src/mame/video/rdptpipe.c | 38 | ||||
-rw-r--r-- | src/mame/video/rdptpipe.h | 8 |
4 files changed, 26 insertions, 26 deletions
diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h index 1968a495e49..b17445e00d8 100644 --- a/src/mame/video/n64.h +++ b/src/mame/video/n64.h @@ -372,6 +372,8 @@ struct rdp_span_aux INT32 m_dzpix_enc; UINT8* m_tmem; /* pointer to texture cache for this polygon */ bool m_start_span; + INT32 m_clamp_s_diff[8]; + INT32 m_clamp_t_diff[8]; }; struct rectangle_t diff --git a/src/mame/video/rdpspn16.c b/src/mame/video/rdpspn16.c index bc6fe817530..d36e14f7733 100644 --- a/src/mame/video/rdpspn16.c +++ b/src/mame/video/rdpspn16.c @@ -340,7 +340,7 @@ void n64_rdp::span_draw_1cycle(INT32 scanline, const extent_t &extent, const rdp #endif rdp_span_aux* userdata = (rdp_span_aux*)extent.userdata; - m_tex_pipe.calculate_clamp_diffs(tilenum, object); + m_tex_pipe.calculate_clamp_diffs(tilenum, userdata, object); 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; @@ -529,7 +529,7 @@ void n64_rdp::span_draw_2cycle(INT32 scanline, const extent_t &extent, const rdp #endif rdp_span_aux* userdata = (rdp_span_aux*)extent.userdata; - m_tex_pipe.calculate_clamp_diffs(tile1, object); + m_tex_pipe.calculate_clamp_diffs(tile1, userdata, object); 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; diff --git a/src/mame/video/rdptpipe.c b/src/mame/video/rdptpipe.c index 42b811330bf..e4b04bb6a42 100644 --- a/src/mame/video/rdptpipe.c +++ b/src/mame/video/rdptpipe.c @@ -163,7 +163,7 @@ void n64_texture_pipe_t::shift_copy(INT32* S, INT32* T, const n64_tile_t& tile) *T = (INT32)(INT16)sst; } -void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile) +void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile, rdp_span_aux* userdata) { if (tile.clamp_s) { @@ -174,7 +174,7 @@ void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TF } else if (maxs) { - *S = m_clamp_s_diff[tilenum]; + *S = userdata->m_clamp_s_diff[tilenum]; *SFRAC = 0; } else @@ -196,7 +196,7 @@ void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TF } else if (maxt) { - *T = m_clamp_t_diff[tilenum]; + *T = userdata->m_clamp_t_diff[tilenum]; *TFRAC = 0; } else @@ -210,7 +210,7 @@ void n64_texture_pipe_t::clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TF } } -void n64_texture_pipe_t::clamp_cycle_light(INT32* S, INT32* T, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile) +void n64_texture_pipe_t::clamp_cycle_light(INT32* S, INT32* T, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile, rdp_span_aux* userdata) { if (tile.clamp_s) { @@ -220,7 +220,7 @@ void n64_texture_pipe_t::clamp_cycle_light(INT32* S, INT32* T, const bool maxs, } else if (maxs) { - *S = m_clamp_s_diff[tilenum]; + *S = userdata->m_clamp_s_diff[tilenum]; } else { @@ -240,7 +240,7 @@ void n64_texture_pipe_t::clamp_cycle_light(INT32* S, INT32* T, const bool maxs, } else if (maxt) { - *T = m_clamp_t_diff[tilenum]; + *T = userdata->m_clamp_t_diff[tilenum]; } else { @@ -267,7 +267,7 @@ void n64_texture_pipe_t::cycle_nearest(color_t* TEX, color_t* prev, INT32 SSS, I INT32 sss1 = SSS, sst1 = SST; bool maxs, maxt; shift_cycle(&sss1, &sst1, &maxs, &maxt, tile); - clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, tile); + clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, tile, userdata); mask(&sss1, &sst1, tile); UINT32 tbase = tile.tmem + ((tile.line * sst1) & 0x1ff); @@ -313,7 +313,7 @@ void n64_texture_pipe_t::cycle_nearest_lerp(color_t* TEX, color_t* prev, INT32 S INT32 sss1 = SSS, sst1 = SST; bool maxs, maxt; shift_cycle(&sss1, &sst1, &maxs, &maxt, tile); - clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, tile); + clamp_cycle_light(&sss1, &sst1, maxs, maxt, tilenum, tile, userdata); mask(&sss1, &sst1, tile); UINT32 tbase = tile.tmem + ((tile.line * sst1) & 0x1ff); @@ -336,7 +336,7 @@ void n64_texture_pipe_t::cycle_linear(color_t* TEX, color_t* prev, INT32 SSS, IN INT32 sfrac = sss1 & 0x1f; INT32 tfrac = sst1 & 0x1f; - clamp_cycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, tile); + clamp_cycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, tile, userdata); INT32 sss2 = sss1 + 1; INT32 sst2 = sst1 + 1; @@ -401,7 +401,7 @@ void n64_texture_pipe_t::cycle_linear_lerp(color_t* TEX, color_t* prev, INT32 SS INT32 sfrac = sss1 & 0x1f; INT32 tfrac = sst1 & 0x1f; - clamp_cycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, tile); + clamp_cycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, tile, userdata); INT32 sss2 = sss1 + 1; INT32 sst2 = sst1 + 1; @@ -742,7 +742,7 @@ void n64_texture_pipe_t::lod_2cycle_limited(INT32* sss, INT32* sst, const INT32 } } -void n64_texture_pipe_t::calculate_clamp_diffs(UINT32 prim_tile, const rdp_poly_state& object) +void n64_texture_pipe_t::calculate_clamp_diffs(UINT32 prim_tile, rdp_span_aux* userdata, const rdp_poly_state& object) { const n64_tile_t* tiles = object.m_tiles; if (object.m_other_modes.cycle_type == CYCLE_TYPE_2) @@ -751,24 +751,24 @@ void n64_texture_pipe_t::calculate_clamp_diffs(UINT32 prim_tile, const rdp_poly_ { 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); + userdata->m_clamp_s_diff[start] = (tiles[start].sh >> 2) - (tiles[start].sl >> 2); + userdata->m_clamp_t_diff[start] = (tiles[start].th >> 2) - (tiles[start].tl >> 2); } } else { 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); - m_clamp_t_diff[end] = (tiles[end].th >> 2) - (tiles[end].tl >> 2); + userdata->m_clamp_s_diff[start] = (tiles[start].sh >> 2) - (tiles[start].sl >> 2); + userdata->m_clamp_t_diff[start] = (tiles[start].th >> 2) - (tiles[start].tl >> 2); + userdata->m_clamp_s_diff[end] = (tiles[end].sh >> 2) - (tiles[end].sl >> 2); + userdata->m_clamp_t_diff[end] = (tiles[end].th >> 2) - (tiles[end].tl >> 2); } } else//1-cycle or copy { - m_clamp_s_diff[prim_tile] = (tiles[prim_tile].sh >> 2) - (tiles[prim_tile].sl >> 2); - m_clamp_t_diff[prim_tile] = (tiles[prim_tile].th >> 2) - (tiles[prim_tile].tl >> 2); + userdata->m_clamp_s_diff[prim_tile] = (tiles[prim_tile].sh >> 2) - (tiles[prim_tile].sl >> 2); + userdata->m_clamp_t_diff[prim_tile] = (tiles[prim_tile].th >> 2) - (tiles[prim_tile].tl >> 2); } } diff --git a/src/mame/video/rdptpipe.h b/src/mame/video/rdptpipe.h index 7397f33d131..3142d511b01 100644 --- a/src/mame/video/rdptpipe.h +++ b/src/mame/video/rdptpipe.h @@ -104,7 +104,7 @@ class n64_texture_pipe_t texel_cycler_t m_cycle[4]; void copy(color_t* TEX, INT32 SSS, INT32 SST, UINT32 tilenum, const rdp_poly_state& object, rdp_span_aux* userdata); - void calculate_clamp_diffs(UINT32 prim_tile, const rdp_poly_state& object); + void calculate_clamp_diffs(UINT32 prim_tile, rdp_span_aux* userdata, const rdp_poly_state& object); void lod_1cycle(INT32* sss, INT32* sst, const INT32 s, const INT32 t, const INT32 w, const INT32 dsinc, const INT32 dtinc, const INT32 dwinc, rdp_span_aux* userdata, const rdp_poly_state& object); void lod_2cycle(INT32* sss, INT32* sst, const INT32 s, const INT32 t, const INT32 w, const INT32 dsinc, const INT32 dtinc, const INT32 dwinc, const INT32 prim_tile, INT32* t1, INT32* t2, rdp_span_aux* userdata, const rdp_poly_state& object); void lod_2cycle_limited(INT32* sss, INT32* sst, const INT32 s, const INT32 t, INT32 w, const INT32 dsinc, const INT32 dtinc, const INT32 dwinc, const INT32 prim_tile, INT32* t1, const rdp_poly_state& object); @@ -120,8 +120,8 @@ class n64_texture_pipe_t void shift_cycle(INT32* S, INT32* T, bool* maxs, bool* maxt, const n64_tile_t& tile); void shift_copy(INT32* S, INT32* T, const n64_tile_t& tile); - void clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile); - void clamp_cycle_light(INT32* S, INT32* T, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile); + void clamp_cycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile, rdp_span_aux* userdata); + void clamp_cycle_light(INT32* S, INT32* T, const bool maxs, const bool maxt, const INT32 tilenum, const n64_tile_t& tile, rdp_span_aux* userdata); UINT32 fetch_nop(INT32 s, INT32 t, INT32 tbase, INT32 tpal, rdp_span_aux* userdata); @@ -165,8 +165,6 @@ class n64_texture_pipe_t INT32 m_maskbits_table[16]; UINT32 m_expand_16to32_table[0x10000]; UINT16 m_lod_lookup[0x80000]; - INT32 m_clamp_s_diff[8]; - INT32 m_clamp_t_diff[8]; }; #endif // _VIDEO_RDPTEXPIPE_H_ |