Build 2305
SVN-
General
Fix a sector[-1] access when starting to draw a wall in an empty map.
SVN handles and Git names are merged into one person.
Fix a sector[-1] access when starting to draw a wall in an empty map.
Fix demo progress bar in OpenGL modes by adding bit 1024 to rotatesprite calls.
The problems still remains that rotatesprite behaves differently in classic and OpenGL modes with clipping boundaries specified (and maybe in some other cases)
Don't wait for pain tinting to subside when changing a base palette.
This means that when e.g. emerging from water hurt will change the palette instantly, but because bit 16 is added to the P_SetGamePalette call, the tinting is retained.
tweak dragging a single sprite so that they can be dragged 'uphill'.
The implementation uses the recently introduced updatesector_onlynextwall when setspritez fails.
Make savegames between dynamicremap-enabled and -disabled builds compatible.
Of course, only when the mod/TC in question doesn't use that feature.
Dynamic tile remapping shouldn't actually be disabled in synthesis builds, whether the source allows it to be compi
led out or not. Removing features that certain mods may depend on to operate correctly without throwing any kind of error or warning at startup other than a logged message is bad.
add one line forgotten with dynamictileremap disabling
sectorsofbunch iterator, error(..., 2), temp 'ud' access
Conditionally compile out the dynamic-to-static tile remapping feature.
Move inithashnames() and freehashnames() declarations into namesdyn.h.
Fix and clean up dynamic-to-static tile remapping source.
Remove a couple of nested externs and #include some headers directly
... instead of relying on indirect inclusion via duke3d.h.
In Mapster32, register the 'vidmode' OSD command in non-GL builds.
Two tweaks for USE_OPENGL=0 builds.
- Always parse 'animsounds' defs - don't print "ignored frame/animation definition" warnings
Fix USE_OPENGL=0 build; squelch one warning.
Fix building with GCC 4.6 link-time optimization.
It looks like GCC doesn't honor the 'used' attribute with LTO. This is "fixed" by declaring the variables in question with external linkage (i.e. removing the 'static'). I consider such behavior a GCC bug, though.
Route the 5th mouse button to the game; bump savegame version.
The "double-click button4" had to make way for MOUSE5 in the button binds menu, but I don't think anyone cares. Savegame compatibility was actually silently broken with the MAXTILES update earlier, but I forgot updating the version...
small correction of a memory-clearing line in namesdyn.c
Rearrange 'struct hicreplc_t' members so that no padding is inserted on x64.
engine.c cleanup, making some variables static mostly
Fix a potential sector[-1] access when drawing a masked wall in Polymost.
Fix the insert cicle wall-points bug reported by Norvak.
Fix sprite[-1] access when aborting playing a sound in Mapster's Sound Index.
Also a couple of other cleanup lines... might need more though, I'm not sure it's all good there.
Fix sprite[] access with indices > MAXSPRITES in Polymer model drawing code.
Internally, updateanimation() now takes a third parameter 'lpal'.
make sector flipping (X/Y) work properly with TROR.
astub.c: remove some tabs in the code
always show highlighted sprites in 2D mode, even in a gray sector.
Fix a potential wall[-1] access in Mapster32.
minor engine cleanup.
- enclose glbuild.h in #idndef ... sentinels - engine.c: remove unused variable 'pageoffset', make 'lastx' static - formatting
Use ATTRIBUTE((used)) for symbols used only in inline asm.
This may fix compilation for optimized builds with GCC or clang where the compiler would otherwise decide that those symbols are unused.
Inreased debugging level for catching oob accesses to 'main' arrays.
If enabled, this makes the following arrays be allocated statically: spriteext, spritesmooth, sector, wall, sprite, tsprite, while necessarily disabling the clipshape feature (because it relies on setting sector/wall to different malloc'd block temporarily). To compile, pass DEBUGANYWAY=1 in addition to RELEASE=0 to 'make', and it's really only useful with CC=clang, of course.
Fix a problem in G_DrawRooms where an sectnum updated to -1 may be used as index.
Fix oob accesses when e.g. shooting tile -1. (can propagate via WEAPONx_SHOOTS)
Ideally, we would also warn when setting WEAPONx_SHOOTS to negative values, but we'd have to intercept CON's setvar's and it wouldn't be pretty.
Double MAXTILES to 30720, reduce EXTRATILES (models w/ custom pal skin) to 3840
I'm decreasing EXTRATILES because I feel that it's way overcommitted. It's the max number of model-tiles that have their own skin for a certain palette, like the slimer egg in the HRP.
less trivial stuff
- fix one bound-checking line - rewrite two lines in astub.c to potentially not overflow an int16 - make tiletovox[] an array of int16's
trivial tweaks: make stuff static, remove unused stuff, formatting...
Add the 'yoffset' token to model definitions to allow models to compensate for ART tiles with large yoffsets, such as #603. Under normal circumstances the existing 'zadd' parameter should be used instead. Special thanks to Supertanker.
weapons.con.sample:
- hud_orientation now uses proper bitwise operations - clean up whitespace
gamedef.c: make some variables static and remove some #if 0'ed code.
Remove the allocache() allocation type for 'intptr_t *lookups'.
Always malloc that buffer. This allows us to remove suckcache() from cache1d.c, which I believe to be buggy (see comments in the source).
cleanup:
- 'whitecol' was defined in the engine and in build.c, use only the engine one - make cachesize, artsize, artversion static in engine.c - undo some formatting havoc presumably done by astyle
Increase the number of maximum art files from 64 to 256 and tweak loadpics().
It is likely that this is the value it used to have at some point, because the MAXTILEFILES macro equals 256 and is as old as the Duke3D source. loadpics() now refuses to load an ART file with localtilestart or localtileend out of bounds, or if localtileend<=localtilestart (i.e. no tiles in ART file, or nonsense). Also, on 'invalid art file version', continue instead of returning. Note: this does not increase the maximum number of tiles, which is still 15360, it only gives a bit more freedom to arrange them (well, into more art files). Also, I don't see what anyone keeps off from packing any number of tiles (from 1 to 15360) into an art file. Old EDITART limits?
Add a hack to the animsounds DEF token parsing to not wrongly emit an error.
Fix parallaxed sector display in Mapster32 on Polymer.
Fix the Polymer hitches first encountered with Parkade.
The cause was a combination of many factors. First, Polymer requires the start-drawing position to be inside the sector to draw (deviations lead to incorrect drawing). This was violated by the game, because it interpolated the current and next tic position without updating the sectnum, leading to inconsistencies especially when passing through narrow sectors. Polymer worked around it by doing an updatesector() each frame, however this works poorly for maps with overlapping geometry such as SoS or RoR. The solution to this is to add a new engine function, updatesector_onlynextwalls(), which searches the sectors (via nextsector) in breadth-first fashion instead of from 0 to numsectors-1, like updatesector does when it fails for the *immediate* nextwall neighbors. Internally, the breadt-first search helpers are moved into the engine.