doomengine2012
Warming Up

Posts: 18
Registered: 08-12 |
I'd have to disagree about ports based on Boom fixing this problem. PrBoom+ still exhibits the "sparkles" under the first door in E1M1 at least.
The problem also seems to be more than just vertically repeating the textures. Consider in E1M2 the two flights of stairs that lead up to where you get the red keycard: you can get bright green pixels to appear at the bottom of each step if you angle the player just right.
While working on my own source port, I've been playing around with R_DrawColumn() and have put together a small, fugly hack which appears to actually solve the problem. I'm sure there is a much more efficient and elegant way of resolving this, but hey, I'm learning.
code:
void R_DrawColumn(void)
{
register int count = dc_yh - dc_yl + 1;
register byte *dest;
register fixed_t frac;
register fixed_t fracstep;
if (count <= 0)
return;
dest = ylookup[dc_yl] + columnofs[dc_x];
fracstep = dc_iscale;
frac = dc_texturemid + (dc_yl - centery) * fracstep;
do
{
*dest = dc_colormap[dc_source[(frac >> FRACBITS) & 127]];
dest += SCREENWIDTH;
frac += fracstep;
}
while (--count);
// [BH] very ugly hack to cover up the stray pixels at the bottom of some columns
if (dc_yh - dc_yl > 0)
if (!(((frac - fracstep) >> FRACBITS) & 7))
*(dest - SCREENWIDTH) = *(dest - SCREENWIDTH * 2);
}
Last edited by doomengine2012 on 01-05-13 at 06:18
|