diff options
| author | 2012-02-19 11:21:36 +0000 | |
|---|---|---|
| committer | 2012-02-19 11:21:36 +0000 | |
| commit | 285c2fd3b7ea7d6fa79f710d9b61f960269bf4de (patch) | |
| tree | dac8185dcb5ad4cb3e9c66faa8aebcf3c030ab78 /src | |
| parent | 4ba8461f7cfe12d35ad94d79554a04d2e40cf751 (diff) | |
- Fixed N64 RDP to not try to render a triangle with no spans. [Ryan Holtz]
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/video/n64.c | 37 | ||||
| -rw-r--r-- | src/mame/video/n64.h | 9 | ||||
| -rw-r--r-- | src/mame/video/rdpspn16.c | 44 | ||||
| -rw-r--r-- | src/mame/video/rdptpipe.c | 36 | ||||
| -rw-r--r-- | src/mame/video/rdptpipe.h | 8 |
5 files changed, 76 insertions, 58 deletions
diff --git a/src/mame/video/n64.c b/src/mame/video/n64.c index ffcd01c477b..34c45108dad 100644 --- a/src/mame/video/n64.c +++ b/src/mame/video/n64.c @@ -119,7 +119,6 @@ void n64_rdp::VideoUpdate16(n64_periphs *n64, bitmap_rgb32 &bitmap) UINT32 hres = ((float)hdiff * hcoeff); INT32 invisiblewidth = n64->vi_width - hres; - //printf("%d, %f, %d, %d\n", hdiff, hcoeff, hres, invisiblewidth); INT32 vdiff = ((n64->vi_vstart & 0x3ff) - ((n64->vi_vstart >> 16) & 0x3ff)) >> 1; float vcoeff = ((float)(n64->vi_yscale & 0xfff) / (1 << 10)); UINT32 vres = ((float)vdiff * vcoeff); @@ -1169,7 +1168,6 @@ UINT32 n64_rdp::ReadData(UINT32 address) { if (m_status & 0x1) // XBUS_DMEM_DMA enabled { - //printf("%08x\n", rsp_dmem[(address & 0xfff) / 4]); return rsp_dmem[(address & 0xfff) / 4]; } else @@ -2112,8 +2110,8 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) int xfrac = ((xright >> 8) & 0xff); - rdp_poly_state &object = object_data_alloc(); - memcpy(&object.m_tmem, m_tmem, 0x1000); + bool new_object = true; + rdp_poly_state *object = NULL; if(flip) { @@ -2152,6 +2150,13 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) if (spix == 0) { + if(new_object) + { + object = &object_data_alloc(); + memcpy(object->m_tmem, m_tmem, 0x1000); + new_object = false; + } + Spans[j - (ycur >> 2)].userdata = (void*)((UINT8*)AuxBuf + AuxBufPtr); AuxBufPtr += sizeof(rdp_span_aux); @@ -2161,7 +2166,8 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) } rdp_span_aux *userdata = (rdp_span_aux*)Spans[j - (ycur >> 2)].userdata; - userdata->m_tmem = object.m_tmem; + + userdata->m_tmem = object->m_tmem; userdata->BlendColor = BlendColor; userdata->PrimColor = PrimColor; @@ -2310,6 +2316,13 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) if (spix == 0) { + if(new_object) + { + object = &object_data_alloc(); + memcpy(object->m_tmem, m_tmem, 0x1000); + new_object = false; + } + Spans[j - (ycur >> 2)].userdata = (void*)((UINT8*)AuxBuf + AuxBufPtr); AuxBufPtr += sizeof(rdp_span_aux); @@ -2319,7 +2332,7 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) } rdp_span_aux *userdata = (rdp_span_aux*)Spans[j - (ycur >> 2)].userdata; - userdata->m_tmem = object.m_tmem; + userdata->m_tmem = object->m_tmem; userdata->BlendColor = BlendColor; userdata->PrimColor = PrimColor; @@ -2431,7 +2444,11 @@ void n64_rdp::DrawTriangle(bool shade, bool texture, bool zbuffer, bool rect) } } - RenderSpans(yh >> 2, yl >> 2, tilenum, flip ? true : false, Spans, rect, object); + if(!new_object) + { + RenderSpans(yh >> 2, yl >> 2, tilenum, flip ? true : false, Spans, rect, object); + } + //wait("DrawTriangle"); } @@ -2892,7 +2909,7 @@ void n64_rdp::CmdSyncTile(UINT32 w1, UINT32 w2) void n64_rdp::CmdSyncFull(UINT32 w1, UINT32 w2) { - wait("SyncFull"); + //wait("SyncFull"); dp_full_sync(*m_machine); } @@ -3459,14 +3476,14 @@ void n64_rdp::CmdSetTextureImage(UINT32 w1, UINT32 w2) void n64_rdp::CmdSetMaskImage(UINT32 w1, UINT32 w2) { - wait("SetMaskImage"); + //wait("SetMaskImage"); MiscState.ZBAddress = w2 & 0x01ffffff; } void n64_rdp::CmdSetColorImage(UINT32 w1, UINT32 w2) { - wait("SetColorImage"); + //wait("SetColorImage"); MiscState.FBFormat = (w1 >> 21) & 0x7; MiscState.FBSize = (w1 >> 19) & 0x3; diff --git a/src/mame/video/n64.h b/src/mame/video/n64.h index d56ab66dd55..2ab0a542ad4 100644 --- a/src/mame/video/n64.h +++ b/src/mame/video/n64.h @@ -368,8 +368,6 @@ struct rdp_span_aux INT32 ShiftB; INT32 m_precomp_s; INT32 m_precomp_t; - INT32 m_clamp_s_diff[8]; - INT32 m_clamp_t_diff[8]; UINT8 BlendEnable; bool PreWrap; INT32 m_dzpix_enc; @@ -501,7 +499,7 @@ class n64_rdp : public poly_manager<UINT32, rdp_poly_state, 8, 32000> 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 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; } @@ -614,6 +612,9 @@ class n64_rdp : public poly_manager<UINT32, rdp_poly_state, 8, 32000> UINT32 ExtentBufIndex; bool rdp_range_check(UINT32 addr); + + N64Tile m_tiles[8]; + protected: CombineModesT m_combine; bool m_pending_mode_block; @@ -645,8 +646,6 @@ class n64_rdp : public poly_manager<UINT32, rdp_poly_state, 8, 32000> UINT8* m_tmem; - N64Tile m_tiles[8]; - running_machine* m_machine; // YUV factors diff --git a/src/mame/video/rdpspn16.c b/src/mame/video/rdpspn16.c index d8c6b94d39b..4460a76dc33 100644 --- a/src/mame/video/rdpspn16.c +++ b/src/mame/video/rdpspn16.c @@ -4,7 +4,7 @@ #define LookUpCC(A, B, C, D) m_rdp->GetCCLUT2()[(m_rdp->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::RenderSpans(int start, int end, int tilenum, bool flip, extent_t *Spans, bool rect, rdp_poly_state *object) { int clipy1 = Scissor.m_yh; int clipy2 = Scissor.m_yl; @@ -34,16 +34,16 @@ void n64_rdp::RenderSpans(int start, int end, int tilenum, bool flip, extent_t * end = clipy2 - 1; } - 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)); - object.tilenum = tilenum; - object.flip = flip; - object.FillColor = FillColor; - object.rect = rect; + 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)); + object->tilenum = tilenum; + object->flip = flip; + object->FillColor = FillColor; + object->rect = rect; switch(OtherModes.cycle_type) { @@ -62,6 +62,7 @@ void n64_rdp::RenderSpans(int start, int end, int tilenum, bool flip, extent_t * render_triangle_custom(visarea, render_delegate(FUNC(n64_rdp::SpanDrawFill), 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) @@ -140,7 +141,9 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata; - m_rdp->TexPipe.CalculateClampDiffs(tile1, userdata, object); + INT32 m_clamp_s_diff[8]; + INT32 m_clamp_t_diff[8]; + m_rdp->TexPipe.CalculateClampDiffs(tile1, userdata, object, m_clamp_s_diff, m_clamp_t_diff); bool partialreject = (userdata->ColorInputs.blender2b_a[0] == &userdata->InvPixelColor.i.a && userdata->ColorInputs.blender1b_a[0] == &userdata->PixelColor.i.a); bool bsel0 = (userdata->ColorInputs.blender2b_a[0] == &userdata->MemoryColor.i.a); @@ -170,8 +173,6 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p int length = flip ? (xstart - xend) : (xend - xstart); UINT32 fir, fig, fib; - //if(object.rect) printf("(%s) Scan %d Span %d to %d %d, length %d\n", flip ? "Flip" : "NoFlip", scanline, xstart, xend_scissored, xend, length); fflush(stdout); - if(object.OtherModes.z_source_sel) { z.w = ((UINT32)object.MiscState.PrimitiveZ) << 16; @@ -221,7 +222,7 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p RGBAZCorrectTriangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object); RGBAZClip(sr, sg, sb, sa, &sz, userdata); - m_rdp->TexPipe.Cycle(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tilenum, 0, userdata, object); + m_rdp->TexPipe.Cycle(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tilenum, 0, userdata, object, m_clamp_s_diff, m_clamp_t_diff); m_rdp->ColorCombiner1Cycle(userdata); @@ -243,6 +244,7 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p if (rendered) { ((this)->*(_Write[((object.MiscState.FBSize - 2) << 3) | (object.OtherModes.cvg_dest << 1) | userdata->BlendEnable]))(curpixel, fir, fig, fib, userdata, object); + if (object.OtherModes.z_update_en) { m_rdp->ZStore(zbcur, zhbcur, sz, userdata->m_dzpix_enc); @@ -262,8 +264,6 @@ void n64_rdp::SpanDraw1Cycle(INT32 scanline, const extent_t &extent, const rdp_p x += xinc; } - - //printf("\n"); } void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_poly_state &object, int threadid) @@ -297,7 +297,9 @@ void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_p rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata; - m_rdp->TexPipe.CalculateClampDiffs(tile1, userdata, object); + INT32 m_clamp_s_diff[8]; + INT32 m_clamp_t_diff[8]; + m_rdp->TexPipe.CalculateClampDiffs(tile1, userdata, object, m_clamp_s_diff, m_clamp_t_diff); bool partialreject = (userdata->ColorInputs.blender2b_a[1] == &userdata->InvPixelColor.i.a && userdata->ColorInputs.blender1b_a[1] == &userdata->PixelColor.i.a); bool bsel0 = (userdata->ColorInputs.blender2b_a[0] == &userdata->MemoryColor.i.a); @@ -383,10 +385,10 @@ void n64_rdp::SpanDraw2Cycle(INT32 scanline, const extent_t &extent, const rdp_p RGBAZCorrectTriangle(offx, offy, &sr, &sg, &sb, &sa, &sz, userdata, object); RGBAZClip(sr, sg, sb, sa, &sz, userdata); - m_rdp->TexPipe.Cycle(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tile1, 0, userdata, object); - m_rdp->TexPipe.Cycle(&userdata->Texel1Color, &userdata->Texel0Color, sss, sst, tile2, 1, userdata, object); + m_rdp->TexPipe.Cycle(&userdata->Texel0Color, &userdata->Texel0Color, sss, sst, tile1, 0, userdata, object, m_clamp_s_diff, m_clamp_t_diff); + m_rdp->TexPipe.Cycle(&userdata->Texel1Color, &userdata->Texel0Color, sss, sst, tile2, 1, userdata, object, m_clamp_s_diff, m_clamp_t_diff); - m_rdp->TexPipe.Cycle(&userdata->NextTexelColor, &userdata->NextTexelColor, sss, sst, tile2, 1, userdata, object); + m_rdp->TexPipe.Cycle(&userdata->NextTexelColor, &userdata->NextTexelColor, sss, sst, tile2, 1, userdata, object, m_clamp_s_diff, m_clamp_t_diff); m_rdp->ColorCombiner2Cycle(userdata); diff --git a/src/mame/video/rdptpipe.c b/src/mame/video/rdptpipe.c index d6e0ba3e0c2..64067e6b599 100644 --- a/src/mame/video/rdptpipe.c +++ b/src/mame/video/rdptpipe.c @@ -148,7 +148,7 @@ void N64TexturePipeT::ShiftCopy(INT32* S, INT32* T, UINT32 num, const rdp_poly_s *T = SIGN16(*T); } -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) +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) { const N64Tile* tile = object.m_tiles; int dos = tile[num].cs || !tile[num].mask_s; @@ -163,7 +163,7 @@ void N64TexturePipeT::ClampCycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, } else if (maxs) { - *S = userdata->m_clamp_s_diff[num]; + *S = m_clamp_s_diff[num]; *SFRAC = 0; } else @@ -185,7 +185,7 @@ void N64TexturePipeT::ClampCycle(INT32* S, INT32* T, INT32* SFRAC, INT32* TFRAC, } else if (maxt) { - *T = userdata->m_clamp_t_diff[num]; + *T = m_clamp_t_diff[num]; *TFRAC = 0; } else @@ -199,7 +199,7 @@ 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) +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) { const N64Tile* tile = object.m_tiles; int dos = tile[num].cs || !tile[num].mask_s; @@ -213,7 +213,7 @@ void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, } else if (maxs) { - *S = userdata->m_clamp_s_diff[num]; + *S = m_clamp_s_diff[num]; } else { @@ -233,7 +233,7 @@ void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, } else if (maxt) { - *T = userdata->m_clamp_t_diff[num]; + *T = m_clamp_t_diff[num]; } else { @@ -246,7 +246,7 @@ void N64TexturePipeT::ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, } } -void N64TexturePipeT::Cycle(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object) +void N64TexturePipeT::Cycle(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) { const N64Tile* tile = object.m_tiles; @@ -279,7 +279,7 @@ void N64TexturePipeT::Cycle(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT3 INT32 sfrac = sss1 & 0x1f; INT32 tfrac = sst1 & 0x1f; - ClampCycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, userdata, object); + ClampCycle(&sss1, &sst1, &sfrac, &tfrac, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff); sss2 = sss1 + 1; sst2 = sst1 + 1; @@ -374,7 +374,7 @@ void N64TexturePipeT::Cycle(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT3 sss1 = TRELATIVE(sss1, tile[tilenum].sl); sst1 = TRELATIVE(sst1, tile[tilenum].tl); - ClampCycleLight(&sss1, &sst1, maxs, maxt, tilenum, userdata, object); + ClampCycleLight(&sss1, &sst1, maxs, maxt, tilenum, userdata, object, m_clamp_s_diff, m_clamp_t_diff); Mask(&sss1, &sst1, tilenum, object); @@ -774,7 +774,7 @@ 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) +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) { const N64Tile* tile = object.m_tiles; if (object.OtherModes.cycle_type == CYCLE_TYPE_2) @@ -785,24 +785,24 @@ void N64TexturePipeT::CalculateClampDiffs(UINT32 prim_tile, rdp_span_aux *userda int end = 7; for (; start <= end; start++) { - userdata->m_clamp_s_diff[start] = (tile[start].sh >> 2) - (tile[start].sl >> 2); - userdata->m_clamp_t_diff[start] = (tile[start].th >> 2) - (tile[start].tl >> 2); + m_clamp_s_diff[start] = (tile[start].sh >> 2) - (tile[start].sl >> 2); + m_clamp_t_diff[start] = (tile[start].th >> 2) - (tile[start].tl >> 2); } } else { int start = prim_tile; int end = (prim_tile + 1) & 7; - userdata->m_clamp_s_diff[start] = (tile[start].sh >> 2) - (tile[start].sl >> 2); - userdata->m_clamp_t_diff[start] = (tile[start].th >> 2) - (tile[start].tl >> 2); - userdata->m_clamp_s_diff[end] = (tile[end].sh >> 2) - (tile[end].sl >> 2); - userdata->m_clamp_t_diff[end] = (tile[end].th >> 2) - (tile[end].tl >> 2); + m_clamp_s_diff[start] = (tile[start].sh >> 2) - (tile[start].sl >> 2); + m_clamp_t_diff[start] = (tile[start].th >> 2) - (tile[start].tl >> 2); + m_clamp_s_diff[end] = (tile[end].sh >> 2) - (tile[end].sl >> 2); + m_clamp_t_diff[end] = (tile[end].th >> 2) - (tile[end].tl >> 2); } } else//1-cycle or copy { - userdata->m_clamp_s_diff[prim_tile] = (tile[prim_tile].sh >> 2) - (tile[prim_tile].sl >> 2); - userdata->m_clamp_t_diff[prim_tile] = (tile[prim_tile].th >> 2) - (tile[prim_tile].tl >> 2); + m_clamp_s_diff[prim_tile] = (tile[prim_tile].sh >> 2) - (tile[prim_tile].sl >> 2); + m_clamp_t_diff[prim_tile] = (tile[prim_tile].th >> 2) - (tile[prim_tile].tl >> 2); } } diff --git a/src/mame/video/rdptpipe.h b/src/mame/video/rdptpipe.h index bef1d1b87be..46ab6f131fe 100644 --- a/src/mame/video/rdptpipe.h +++ b/src/mame/video/rdptpipe.h @@ -74,10 +74,10 @@ class N64TexturePipeT TexelFetch[71] = &N64TexturePipeT::_FetchI_8_TLUT1; } - void Cycle(Color* TEX, Color* prev, INT32 SSS, INT32 SST, UINT32 tilenum, UINT32 cycle, rdp_span_aux *userdata, const rdp_poly_state& object); + void Cycle(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 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); + 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); @@ -95,8 +95,8 @@ class N64TexturePipeT 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); - void ClampCycleLight(INT32* S, INT32* T, bool maxs, bool maxt, INT32 num, rdp_span_aux *userdata, 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); |
