Build 3295
SVN-
General
Fix savegame loading. Bump BYTEVERSION.
SVN handles and Git names are merged into one person.
Fix savegame loading. Bump BYTEVERSION.
Replace the scrolling contributor credits with a static programmatic three-column layout.
Propagate the GRP file's modification time to all extracted files.
Fix CLANG=1 NOASM=1 build.
Factor out multiply repeated code into calc_ylookup().
effectively clamp drawn ceiling/floor tile sizes at 256.
This prevents computing a shift value outside of [0..31].
correct message when changing shade by small steps ([+], [-], mwheel)
Factor out fogcalc() issuing and application of the computed values.
Limit attempting to toggle DWM off when using OpenGL modes to Vista/7, because Windows 8 no longer supports disabling DWM. Apparently, Windows 8 contains a software DWM renderer, and all of the "Metro" bs is directly tied to DWM, so there is no longer a way for an app to disable it at will.
Change a few paths in various MSVC Makefiles to better suit my current dev environment. This doesn't really affect anyone else since these paths need to be customized to fit whatever machine by anyone building with MSVC anyway.
In 3D mode, [,] auto-aligns walls to the left.
fix LAlt (carry over xrepeat) option for auto-alignment [.].
Fix building on Linux; fix WITHOUT_GTK=0 build.
Win64 support! (Meaning it works, not that we recommend it for everyday use.)
This includes a complete Windows header and library refresh, including the addition of 64-bit compiled libs: *libogg 1.3.0 *libvorbis 1.3.3 *zlib 1.2.7 *libpng 1.5.13 *libvpx 9a3de881c0e681ba1a79a166a86308bbc84b4acd *SDL_mixer 1.2.12 (for RENDERTYPE=SDL) *DirectX import libraries: dsound and dxguid (now included) To build in 64-bit, you essentially need MinGW's MSYS (but not MinGW itself) and MinGW-w64 at the top of your PATH. The target is automatically detected using `$(CC) -dumpmachine`. The EDukeWiki will get detailed instrucitons. All compiler and linker warnings when building in 64-bit mode have been fixed. Remaining 64-bit to-do: - The ebacktrace dll does not build under 64-bit. It uses code specific to the format of 32-bit executables and will have to be ported to work with 64-bit executables. A future 64-bit version will be named ebacktrace1-64.dll. - RENDERTYPE=SDL crashes in SDL_mixer's Mix_Linked_Version(). - DirectInput gives an error and does not function. This only affects joysticks, and the error never happens without any plugged in. - Port the classic renderer ASM to 64-bit. (Just kidding, this is way out of my league.) This commit includes a fair bit of Makefile development spanning all platforms, including simplifying the SDLCONFIG code, fixing build on Mac OS X (thanks rhoenie!), globally factoring Apple brew/port inclusion, enforcing that all -L come before all -l, and ensuring that $(shell ) is always :='d. In addition, I have resurrected the old GCC_MAJOR and GCC_MINOR detection using `$(CC) -dumpversion`, but I have made it failsafe in case the command fails or the version is manually specified. I have applied this new fine-grained detection where applicable, including allowing LTO, and restraining -W's to versions that support them.
Fix declaration-after-statement warning in game.c after r3270.
Update credits.
Build tweaks:
Set up the use of {Windows,Apple}/{include,lib} regardless of feature toggles in Makefile.common using $(abspath ) in reference to the directory Makefile.common is in. Add the three DirectX headers that are actually used to the repo. (from: http://alleg.sourceforge.net/files/dx9mgw.zip) Since current MinGW versions include DirectX libs (for dynamic linking), remove "-L$(DXROOT)/lib". The DirectX headers are no longer a separate dependency for building. Add $(SDLROOT_OVERRIDE). $(SDLROOT) only functions for Windows and Mac OS X. Factor handling of $(DXROOT_OVERRIDE) and $(SDLROOT_OVERRIDE) into Makefile.shared using $(abspath ).
Port system gamearray access from M32Script to CON. Expose tilesizx and tilesizy.
Also, fix deficient logic in Gv_Free and Gv_Clear (both M32 and CON) so that gamevar and gamearray erasure results are (closer to) correct, and so that the game does not crash when system arrays are accessed from CON because they all have been nulled.
Fix building as C instead of C++
Networking patch from Jasper Foreman
Recognize the .pk4 file extension when loading grps and zips for shits and giggles (.pk3 was already recognized).
Move the definitions like MAXGAMEVARS out of the enums used for the gamevar flags, because it didn't really make a whole lot of sense for them to be there.
Replace the separate full Gv_AddVar/SubVar/etc functions with a macro that generates them since they were all the same anyway (other than the operator, obviously)
Replace outer apScriptGameEvent[...] checks with G_HaveEvent().
Don't call setaspect_new() at end of rotatesprite.
This fixes 2nd and following rotatesprite calls drawing differently from the first in a context with custom set-up aspect, as reported by Lezing here: http://forums.duke4.net/topic/775-eduke32-20-and-polymer/page__view__findpost__p__143090 Also, back up and restore the aspect state across EVENT_DISPLAYREST.
Implement fade_screen_black() using fullscreen_tint_gl() in GL modes.
Factor dup. code in SDL/Windows layers into baselayer.c:fullscreen_tint_gl().
proper bound checks for {re,}definequote commands.
Rearrange {net,}actor_t for 4-byte alignment of int32_t members.
Bump BYTEVERSION.
Experimental NETCODE Makefile variable, enabled by default.
Disabling netcode compilation can be interesting on memory-constrained systems, or those that have no means of accessing the network anyway. Note: I'm OK with maintaining this myself, i.e. it's fine if netcode dev breaks compilation with NETCODE=0.
drowning in code.
Make EventNames[] an array of (const char *) instead of const tokenlist.
Initialize BADGUY sprite flags for hardcoded enemies.
... instead of switch/case-ing them in A_CheckEnemyTile(). Because this requires bumping BYTEVERSION, we also get rid of the excess trailing bytes in the save game's "rest" data. (See r3052.)
Lunatic translator: warning options, on_state_end, more bad-identifier chars.
submerging in code.
knee-deep in code.
- more codegen - make more members const, some char unsigned - fix some "geom" metamethods - '^' operator
gameexec.c: rip out some inline code into VM_Fall() and VM_ResetPlayer().
implement the non-local control flow needed for some commands.
player stuff (protect some members etc.)
Makefile tweaks, protect sprite[].picnum.
expose more stuff, more codegen (the easy ones).
Some Lunatic cleanup.
Fix build. It was my fault after all since I forgot common.h in r3243.
Fix potential crash in version checker.
1) see if we actually received anything (if http://eduke32.sourceforge.net/VERSION is unavailable, this returns now instead of continuing with nonsensical data) 2) check if we're getting a token from strtok()
Factor dist() and ldist() into common.c.
Move enum vmflags_t to gameexec.c since it's an implementation detail.
Add "dump_used_assets.m32" to samples. This script can be used to extract what tilenum and sound IDs are used in maps.
Fix "undefined reference to `sampletimer()'" linking error using clang for a Win32 release build.
Fix errors and warnings in nedmalloc.h using clang for a Win32 release build.
Fix warnings involving printf() requiring explicit casts on tracked types.
Add FORCEWARNINGS Makefile flag to prevent disabling compiler warnings within the source.
Move the tracking from a dirty state to a change count.
Revert "compat.h: slightly reformat the NOWARN-related preprocessor directives."
Commit breaks MSVC builds by failing to provide NOWARN macros to MSVC.
compat.h: slightly reformat the NOWARN-related preprocessor directives.
Expose per-tile nofullbright bit (GL modes only) to DEF.
The attribute is set per tile from DEF: either nofullbrightrange <begintile> <endtile> or tilefromtexture <tile> { ... nofullbright ... } As a special case, the list may only contain "nofullbright", in which case the texture is not changed. (This is analogous to "texhitscan".) Example: // make piggy's eyes fullbright red only when it fires the shotgun nofullbrightrange 2000 2034 nofullbrightrange 2040 2049 nofullbrightrange 2055 2061
Misc. engine cleanups, no functional changes.
engine.c: factor out 2 pract. ident. pieces of code into try_facespr_intersect.
The two uses are from hitscan and neartag. The functionality is reproduced exactly (assuming I made no mistake), down to different distance checking (<= vs. <).
better protection of array members inside structs.