Build 5297
SVN-
fix regression with Y-flipping bit.
SVN handles and Git names are merged into one person.
fix regression with Y-flipping bit.
add preliminary support for batching draws.
fix synthesis warning.
store map data in a single buffer with a unified vertex type.
further 2d mode performance improvements. Sprites are also now displayed with their xrepeat and yrepeat taken into account. It's not perfect yet... needs more "jiggery-pokery"
fix two "variable may be used uninitialized" warnings.
I didn't produce a case when this could actually have happened, but reading the code, in the case of variable 'j' it seems possible with an empty map.
fix a possible oob read via drawspritelabel; sanitize 2d3d mode.
That is, in m32_is2d3dmode(), also check if 2d and 3d mode resultions are the same. Otherwise, oob writes (e.g. via tileinfo_doprint()) and other thinkable niceties may ensue.
2d mode performance improvements
improve 2d mode sprite label display. I want to test this further, so this is marked as DONT_BUILD.
fix 3d picture-in-picture when editing a map with TROR.
improve diagnostic message.
A couple of Mapster32 tweaks to play nicer with different palettes.
Address complaints from the "Mapster32 problems and bugs" thread.
Mapster32 changes:
-2d mode sprite colors are now automatically generated from the sprite's 8-bit tile. -Zooming in and out has been smoothed out. -The 2d mode crosshair cursor is now 1px thick instead of 2. -The left mouse button can now be used to select multiple wall points and sprites in 2d mode. -Ctrl-x now skips corrupt maps instead of going into an infinite loop. ;) -'-L function in 3d mode works again. -Sprites with a clipdist that has been changed from the default value of 32 will display a circular approximation of the distance in 2d mode. Note that the real clipping distance is actually closer to a square, but a circle looks much less confusing/stupid alongside the display of floor sprites. -2d mode status bar has been made a few shades lighter.
New experimental Mapster32 hybrid 2D/3D mode feature. Pressing F10 in 2D mode enables a picture-in-picture 3D view in the corner of the screen. When moving the mouse over the 3D view, the controls change to 3D mode controls and all 3D mode operations can be performed. The 3D view can be resized with shift + F10 and can be moved to different positions by holding CTRL and using the arrow keys.
This commit also implements a much more useful automatic grid sizing feature and smooths out zooming in and out of the map.
Enable sector drawing and textured map in Mapster32 sideview mode with a sideview elevation of 512 (straight up and down).
Improve r_preview_mouseaim and Polymost Mapster32 3d mode mouse selection. Also adds a display of the current coordinates, angle and horiz when moving around in 3d mode.
Slight further Polymost cleanup. Nothing of real importance. DONT_BUILD.
Fix automap lines in Polymer mode
fix an oob write in test_map().
mdsprite.c: from updateanimation(), if m->[cn]frame >= numframes, clear to 0.
This prevents an oob access when rendering, the one observed was at polymer.c:4255.
Re-expose kpzbufsiz and set it to zero in uninitengine, preventing potential crashes from successive re-initializations of the engine.
Set htg_t 6, 7, and 8 on GROWSPARK sprites upon shooting, as is done for all other hitscan projectiles.
Make 'L' key toggle grid lock in 3D mode, because it affects placement of sprites inserted with 'S'.
fix rendering of middle part of 1-way masked wall.
It does not depend on the "swap bottom wall parts" bit being set. The fix is by matching up the related code with Polymost.
Parallaxed skies.
Add uint32_t PaletteIndexFullbrights[8] so that Polymost can respect the lack of fullbrights in KenBuild and Shadow Warrior.
Since sprite->filler is now fogpal, modify the CTF code that uses it to use a new variable in SW's USER struct instead.
setsprite, setspritez, getzrange, clipmove, pushmove, neartag, dragpoint, screencapture, md_tilehasmodel, preparemirror, saveboard, loadboard, pos
honor r_usenewaspect, especially it being off.
For this, add a setaspect_new() setup/restore pair in M32_DrawRoomsAndMasks() like for G_DrawRooms(). With this, changing viewingrange/aspect via m32script (in a.m32: [7] -- [9] on the upper row) can only be done in r_usenewaspect 0, though.
Add support for ART files containing exactly one tile as an input format for hightile textures and model skins. They are rendered in the global game palette and function as conventional hightile.