Previous 199869 Revisions Next

r33302 Sunday 9th November, 2014 at 13:10:48 UTC by Oliver Stöneberg
added assert for usage of uninitialized stack memory in n64_rdp::SpanDraw1Cycle() (nw)

happens with e.g. n64 -cart vprowrs2 - it actually already goes out of
bounds in poly_manager::render_triangle_custom() but since that code is
generic it's hard to add an assert there / also added another FBSize
check
[src/mame/video]n64.c rdpspn16.c

trunk/src/mame/video/n64.c
r241813r241814
19831983   int dzdx_dz = (dzdx >> 16) & 0xffff;
19841984
19851985   extent_t Spans[2048];
1986#ifdef MAME_DEBUG
1987   memset(Spans, 0xcc, sizeof(Spans));
1988#endif
19861989
19871990   SpanBase.m_span_drdy = drdy;
19881991   SpanBase.m_span_dgdy = dgdy;
trunk/src/mame/video/rdpspn16.c
r241813r241814
152152
153153   INT32 tile1 = tilenum;
154154
155#ifdef PTR64
156   assert(extent.userdata != (const void *)0xcccccccccccccccc);
157#else
158   assert(extent.userdata != (const void *)0xcccccccc);
159#endif
155160   rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata;
156161
157162   INT32 m_clamp_s_diff[8];
r241813r241814
325330   INT32 news = 0;
326331   INT32 newt = 0;
327332
333#ifdef PTR64
334   assert(extent.userdata != (const void *)0xcccccccccccccccc);
335#else
336   assert(extent.userdata != (const void *)0xcccccccc);
337#endif
328338   rdp_span_aux *userdata = (rdp_span_aux*)extent.userdata;
329339
330340   INT32 m_clamp_s_diff[8];
r241813r241814
367377      dzinc = 0;
368378   }
369379
380   if (object.MiscState.FBSize < 2 || object.MiscState.FBSize > 4)
381      fatalerror("unsupported FBSize %d\n", object.MiscState.FBSize);
382
370383   int blend_index = (object.OtherModes.alpha_cvg_select ? 2 : 0) | ((object.OtherModes.rgb_dither_sel < 3) ? 1 : 0);
371384   int read_index = ((object.MiscState.FBSize - 2) << 1) | object.OtherModes.image_read_en;
372385   int write_index = ((object.MiscState.FBSize - 2) << 3) | (object.OtherModes.cvg_dest << 1);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team