February 2015
January 2015
-
fix "windowed" modes (r_size >= 12) by reverting r4920; adapt.
Show details
In setview(), we now assert windowx2 < xdim. The only calling places where its non-violation is non-trivial to ascertain are (1) showview from CON and (2) draw-to-tile for look-sideways in game.c. AFAICS case 1 should be fine. Case 2 is adapted; see comments there.
August 2014
-
introduce two signed integer types, use in engine.c and a-c.c.
Show details
They classify former uses of int64_t into two classes: - coord_t: those that represent coordinates and need 64-bit precision for proper functioning with large values - inthi_t: those that were added for e.g. casts merely to prevent undefined behavior on overflow DONT_BUILD.
April 2014
March 2014
-
implement screen tilting by 180 degrees without quality loss.
Show details
BUILD_LUNATIC.
February 2014
-
support for multiple blending tables + Lunatic interfaces.
Show details
Currently, sprite[].filler (to be renamed) selects a blending table. If none is installed with that index, the blending table at index 0 is taken (which is read from PALETTE.DAT on engine startup). Thus, for now, the non-Lunatic build will never use a custom blending table because there's no way to register one! But the functionality is there.
January 2014
-
in debugging builds, add cvar debug_maskdrawmode.
November 2013
-
implement horiz. tex panning for sprites (spriteext[].xpanning).
Show details
Known as getactor/sprite[].xpanning from CON, values are 0-255. It should be assumed that this is only valid for wall-aligned sprites (currently, face sprites also pan). A test is provided in lunatic/test/animatesprites.con. It should be run in E1L2 and only with the Lunatic build.
June 2013
-
prevent a SIGFPE when attempting to draw p'lax with nonexistent tile.
May 2013
-
fix oob read of frame buffer when leftmost vline has a mirror.
Show details
In the mirror reversing code, get rid of the padding. This may produce seams, but they appear to be extremely transient and shouldn't be noticeable. In game.c, add a debugging compilation switch DEBUG_MIRRORS_ONLY.
-
optimize background 'rainbow' drawing in use for editor/debug.
Show details
Also, draw it at shade 18 and don't use fullbright colors.
-
clean up mirror drawing code.
Show details
No functional changes, but a (commented out) debug line for an oob read of the frame buffer when the mirror covers the whole screen is inserted.
December 2012
-
fix drawing tilesizy=512 walls, use non-pow2 routines with pskies.
Show details
The former is really only a workaround. Walls/vertical sprites/pskies with ysize 512 (and presumably greater, but this was not tested) are rendered with one shade higher at the borders (1 pixel vlines) because of a certain assumption in the ASM (see comments there). With very dark shades, the palookup[] buffer is accessed oob. We simply allocate 256 bytes more at the end for each. The latter is only for CLASSIC_NONPOW2_YSIZE_WALLS builds, which is not enabled yet. It seems to matter only for the uncommon case where the such pskies repeat in the height. A 1680x1050 window fully covered with such a sky is then rendered at about 60/85 the FPS for me (mostly due to not using the 4 pixel vline routines), so it may be leaning a bit too much on the side of correctness. A compilation switch DEBUG_TILESIZY_512 is introduced in engine.c for demonstration purposes.
-
effectively clamp drawn ceiling/floor tile sizes at 256.
Show details
This prevents computing a shift value outside of [0..31].
November 2012
July 2012
-
on x86 GCC asm builds, fix crash with floor sprites of (x or y) size 2.
Show details
The idiv instruction also signals an FPE when the resulting *signed* quotient overflows, so we simply use div instead.
-
draw walls with non-pow2 ysizes in the old fashion for the time being.
Show details
I'm willing to make this one concession to correctness in the name of backward- compatibility. I think that one reason why this has never cause a crash is that tiles in BUILD are allocated in Ken's big allocache buffer, so oob accesses were dampened by that (though they hit uninitialized data).
-
fix glitches where stuff would be drawn transiently on sect change.
Show details
This was introduced with r2771, which fixed e.g. AMC TC city_si's mirrors, but instructed the base drawrooms inside yax_drawrooms to not correct the passed sectnum. Therefore, stuff would get drawn wrongly when passing sector boundaries, like from the platform to the rails in trueror1.map.
-
fix drawing mirrors, introduced by nonpow2-ysize wall/mask drawing.
Show details
Some more drawing glitches remain.
-
hook up non-power-of-two ysize wall/mask drawing in asm builds, too.
-
add {,m,t}vlineasm1nonpow2, currently unreferenced from high-level drawing.
June 2012
-
don't attempt drawing sprites with (cstat&48) == 48 that aren't voxels.
Show details
Bang! One more invalid internals exposure squashed. Maybe one day we'll be able to call EDuke32 "stable"... Actually the offending sprite IS drawn as face sprite with shade 32 and xrepeat and yrepeat 255 for the convenience of the CON coder who will have to debug it.