Build 4330
SVN-
disallow saving map-text files in Mapster32 for now.
-
Generale
Amend r4318: Lunatic doesn't need the safety check.
Nickname SVN e nomi Git sono unificati per persona.
disallow saving map-text files in Mapster32 for now.
Amend r4318: Lunatic doesn't need the safety check.
Support "r_windowpositioning" in SDL builds.
Set up support for SDL2. DONT_BUILD.
Fix 64-bit MSVC builds. DONT_BUILD.
Fix 32-bit MSVC builds. DONT_BUILD.
Networking updates.
- Added preprocessor value NETVERSION, to be incremented in the source whenever changes are made to the network protocol. - Implemented proper server-side version verification of all clients upon connection. - Implemented connection refusal when we reach MAXPLAYERS. (Should be expanded to implement server player caps.) - Protected against OOB array accesses if an invalid player id is received. - Renamed all "Recieve" to "Receive".
Fix warnings when building in C++11 mode, i.e. with CPLUSPLUS=1 CUSTOMOPT="--std=gnu++11".
Add support for x64 building and all synthesis libs (libpng/zlib, libvpx, libFLAC).
External ogg/vorbis are no longer required.
Full library refresh.
Don't crash if for some reason your CONs don't define actors like SHOTSPARK1, which has its strength value used in hardcoded behavior.
Update commented SDL2 key debug log output.
add *actor[].blend as an alias to .detail, *tspr[].tsprblend analogously.
See lunatic/test/sprite_access.con for a LIZTROOP that periodically smoothly alpha-fades in and out. (Assuming that the 128 alpha blending tables from shadexfog.create_128_trans(1) are installed.) BUILD_LUNATIC.
Extend PALETTE.DAT format to allow carrying additional blending tables.
Lunatic: also, add an additional argument 'moreblends' to engine.savePaletteDat() and document that function. See test/shadexfog.lua for a "user-friendly" wrapper shadexfog.save() which prints success or errors.
move code in test/shadexfog.lua to engine.savePaletteDat() and complete it.
The function now writes out a full PALETTE.DAT: base balette, shade table and translucency table.
Fix building on MinGW (MinGW-w64 was OK). DONT_BUILD.
update dynsymlists. Move blendtable[] from build.h to engine.c.
BUILD_LUNATIC.
add a 'lastokcol' argument to engine.nearcolor() and document it.
On the C side, slightly rewrite (now) getclosestcol_lim() for clarity.
document engine.*blendtab() and engine.getrgb() functions.
remove sprite members 'detail' and 'filler', add 'blend', make r/w.
In the C code, rename sprite[].filler to 'blend'.
Also, fix a missed .filler -> g_ambiencePlaying[] rewrite in the editor. In C-CON, 'detail' is kept as alias to C-side (former) .filler / now .blend, but that name is *deprecated*.
Fix yellow keycards
Fix a missing reference to WEAPON_POS_LOWER
gloadtex() cleanup, make some vars in kplib.c static, add source/valgrind_errors.log.
BUILD_LUNATIC.
sounds.c: exit S_PlayMusic() early if length of file is <4 bytes, clean up mem mgmt.
engine.c: amend r4292, which introduced an even worse oob for NPOT xsize texs.
engine.c: in calc_bufplc(), cope with negative lwall[] values.
This should fix the crash encountered here: http://forums.duke4.net/topic/1348-mapster32-problems-and-bugs/page__view__findpost__p__184069 a-c.c also gets a new switch macro, DEBUG_WITH_VALGRIND.
implement 'precache'.
add option -ferror-nonlocal-userdef, on by default.
BUILD_LUNATIC.
sounds.c: do S_MusicVolume() in S_SoundStartup().
This fixes this initialization issue: http://forums.duke4.net/topic/7144-midi-volume-weirdness/
Some functionality-conserving cleanup of jaudiolib code.
accept empty square brackets for {g,s}etuserdef optional index part.
Fix compilation of C++ build, but not starting up yet.
BUILD_LUNATIC.
error on userdefs accesses with non-local current player.
Add lunatic/test/getuserdef.con.
Get rid of neartag* global variables. LunaCON: fix 'operate'.
sector.c: factor out goto soup in P_CheckSectors() into function.
sector.c: cleanup round 3, P_ActivateSwitch() refactoring.
Follow-up to RTS cleanup: factor out 2x almost-same code into G_StartRTS().
Reincarnate RTS sound functionality together with cleaning up related code.
- Make Win+F* also make play and RTS sound, since modern OS's window managers like to eat Alt-F*. (Some Win+F* may be inaccessible too, but together all 10 should hopefully be covered.) - Fix an issue where keys other than F1-F10 were considered as starting an RTS sound and crashing EDuke32 in the process
Fix USE_OPENGL=0 build... again. DONT_BUILD.
Fix respawn operation with monsters off, rewriting G_OperateRespawns().
BUILD_LUNATIC.
when clearing bunch number of c/f with yax_setbunch(), don't reset xpanning.
In the non-Lunatic build naturally, since the Lunatic one uses its own member.
Print "32-bit"/"64-bit" along with the version number in the log.
Remove "-fpermissive" from C++ builds because we don't need it.
gltexinvalidatetype(INVALIDATE_ART) so that loading or unloading an ART set will take effect when using the OpenGL renderers.
Don't use SDL_Renderer if it is a software fallback, because that would only waste memory and speed.
Eliminate a memory leak when changing resolutions with SDL_Renderer 8-bit mode.
Introduce support for PlayStation CD-XA audio, a simple ADPCM format.
It's functional, but due to the odd 37.8 KHz nature of the format, I will need to add a resampler to the audiolib to prevent the aliasing artifacts that occur at present. I also hear clicks/pops every so often, but I do not know if a resampler would fix these as well or if they are a separate problem. Note that you cannot directly use the four XA files on the Total Meltdown disc because they each contain eight songs. They would need to be split using a utility I wrote that is outside the scope of this SVN.
Fix a harmless C++ warning. (malloc casting, for those interested)
EDuke32 has me so accustomed to straight C... using a template and pass-by-reference makes my day.
add codegen option -fbad-getactorvar-use-pli for C-CON compatibility.
Also, improve -Wnumber-conversion warning by printing the resulting number. BUILD_LUNATIC.
make wall texture alignment [.]/[,] work with bottom-swapped walls.
In simple cases, it should be added. Combinations of alignment across TROR boundaries and bottom-swapping will probably not work right.
Improve determination of when a sprite should be drawn before a masked wall.
Concretely, in the "behind, outside" case, draw the sprite early if any of its 2 or 4 corner points are behind the masked wall, and inside the cone or on the other outside.
don't attempt audio format auto-detection for less than 12 bytes.
document engine.*shadetab() functions. DONT_BUILD.
make gv.current{Level,Episode} one-based and document them.
Also, in LunaCON, make player .palette member read-only. BUILD_LUNATIC.
Per-map ART tiles: don't back up or restore reserved tiles.
This prevents a crash and maybe other badnesses when e.g. loading a map with ART tiles, doing something that allocates a reserved tile (such as looking into a viewscreen), then loading another map where the tilesiz* of TILE_VIEWSCR is restored to 0.
fix one error message, make -h/--help display usage.
Actually, right now, any first arg starting with '-' will show the usage.
Engine-side per-map ART file support.
When a map named <filename>.map is loaded (<filename> may also contain directory separators), the engine checks for existence of <filename>_XX.art in the virtual file system, where XX is a 0-padded number from 00 to 19. It loads a consecutive sequence of these ART files, i.e. aborts whenever a number in the sequence isn't found (in contrast to normal ART loading). Restrictions: - the per-map ART files must not reside in ZIP files - if a tile number is attempted to be overridden that has a dummytile or is cache1d-locked, per-map ART loading fails On failure, the map is still loaded, but a diagnostic message is output to the log/OSD. Loaded per-map ART data are cleared whenever the map is "left". In particular: - whenever another map is loaded - in the editor: when a new map is started - in the game: after the bonus ending screen of a finished level, after going to the title screen via the menu A final note: file names are supposed to be looked up and compared case-sensitively. That is, <filename> must match EXACTLY between the map's and per-map ART one; 'art' must be lowercase. Otherwise, the cookie monster will come and eat you! BUILD_LUNATIC.
for readgamevar, if ud.config.scripthandle < 0, keep value, don't err.
Stylistic/formatting tweaks in cache1d code.
Fix the startup window freeze under SDL2+Windows when a Yes/No box was supposed to be displayed.
Reintroduce SDL_Renderer for the classic renderer so that the Steam Overlay can function with it.
Fix a case where the bonus screen would immediately end with an input press because all code between iterations of the bonus screen would execute in less than 1/120th of a second, not leaving any time for totalclock to increment.
EDuke32. Where our code runs so fast, it breaks old code.
Fix the display of the multiplayer results screen.
Run Net_SendClientInfo() after game state creation to properly set up the player's user_name.