Commit graph

14760 commits

Author SHA1 Message Date
Alexander Kromm
81744d5b7a fix crash with saving null Dictionary 2020-01-06 19:49:23 +01:00
Marisa Kirisame
ebc6fcccd7 Additional CHAN_OVERLAP awareness for StartSound and ChangeSoundVolume/Pitch. 2020-01-06 19:49:21 +01:00
Christoph Oelckers
7919c86f3e - elimintated all cases from the ZScript code where channel indices and flags were combined into one parameter and removed all remnants of CHAN_PICKUP. 2020-01-06 19:49:18 +01:00
Christoph Oelckers
0d3a62f73a - fixed: A_StartSound was still masking the sound channel value for checking if it plays something. 2020-01-06 19:49:15 +01:00
Major Cooke
96153e7e7e - Fixed: Invulnerability checking for rails was done before the various THRU actor flags instead of after, meaning actors could block shots regardless of those flags. This was never intended. 2020-01-06 19:20:44 +01:00
Major Cooke
234e690f77 Added STOPRAILS actor flag.
- An actor with this flag will prevent railgun shots from penetrating further.
2020-01-06 19:20:41 +01:00
Alexander Kromm
a7e6552f0f export TMap<FString, FString> to ZScript
# Conflicts:
#	src/CMakeLists.txt
#	src/serializer.h
2020-01-06 19:18:22 +01:00
Christoph Oelckers
35379e1e5d - let a sight check that gets lost return failure.
This way these cannnot unwantedly wake up monsters.
2020-01-06 19:14:53 +01:00
Cacodemon345
d6a23065d1 Implement renderstyle and transparent actor sprite rendering in automap (#997)
* Implement renderstyle and transparent actor sprite rendering in automap

* Add "am_advspriterender" CVAR and add invisible actor checks.

* Rename cvar to `am_thingrenderstyles`

# Conflicts:
#	src/am_map.cpp
2020-01-06 19:14:51 +01:00
Rachael Alexanderson
528550c4ef - changing vid_scalefactor now always shows current scaling data unless it gets set to "1"
- vid_scaletoheight/width now works in all scaling modes, and can now also scale on custom resolutions directly

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 19:05:13 +01:00
Rachael Alexanderson
278c7db215 - fix vid_showcurrentscaling so that it works even when vid_scalemode is 2 or greater.
# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:53:47 +01:00
alexey.lysiuk
0ee488633b - fixed compilation warning reported by MSVC
src\r_videoscale.cpp(105): warning C4244: 'initializing': conversion from 'float' to 'int', possible loss of data

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:51:17 +01:00
Rachael Alexanderson
792871a380 - add 'vid_showcurrentscaling' ccmd, expanded output for 'vid_scaletowidth' and 'vid_scaletoheight' commands
- made the vid_scaleto____ commands less hacky - after finding out I could route the calls through screen->, found the correct screen-> commands, and do scaling based on the real screen dimensions
2020-01-06 18:48:49 +01:00
alexey.lysiuk
e4110ded3c - precache switch textures from ANIMATED lump
For example, SW1SKULL and SW2SKULL switches are animated in TNT: Evilution
Their frames are defined in ANIMATED lump which is old BOOM binary format
Textures other than base were not cached because the corresponding switch definitions (in ANIMDEFS lump) have one frame only and BOOM style animations were not taken into account

https://forum.zdoom.org/viewtopic.php?t=66652

# Conflicts:
#	src/p_setup.cpp
2020-01-06 18:23:31 +01:00
drfrag
38c5e84b82 - Adjust minimum scaling for 320x200. 2020-01-06 18:23:28 +01:00
Rachael Alexanderson
5906701a7d - implement vid_scalemode = 6 - sets absolute minimum scaling to fill entire screen - useful for speeding up software rendering
# Conflicts:
#	src/r_videoscale.cpp

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:23:11 +01:00
alexey.lysiuk
b246eb20fa - upsample texture if width * height is less or equal to gl_texture_hqresize_maxinputsize squared
https://forum.zdoom.org/viewtopic.php?t=66652

# Conflicts:
#	src/textures/hires/hqresize.cpp
2020-01-06 18:05:54 +01:00
alexey.lysiuk
7dd5d3ce61 - added minimal time profiling of texture precaching
# Conflicts:
#	src/hwrenderer/textures/hw_precache.cpp

# Conflicts:
#	src/hwrenderer/textures/hw_precache.cpp
2020-01-06 18:04:54 +01:00
alexey.lysiuk
d2101bf700 - improved normalNx scaling performance by ~10%
Actual boost heavily depends on platform's memory architecture, made it a bit more cache friendly in general

# Conflicts:
#	src/textures/hires/hqresize.cpp
2020-01-06 17:53:09 +01:00
alexey.lysiuk
69d39bcd44 - move setting status bar defaults to proper location
BaseStatusBar.Init() method isn't suitable for this because it will override SBarInfoWrapper setup done in native code

https://forum.zdoom.org/viewtopic.php?t=66676
https://forum.zdoom.org/viewtopic.php?t=66339

# Conflicts:
#	wadsrc/static/zscript/ui/statusbar/statusbar.zs
2020-01-06 17:48:35 +01:00
Christoph Oelckers
1cacd3e3de - sound engine update.
Notable changes:
* IsSourcePlayingSomething had undefined behavior when checking unattached and unpositioned sounds.
* loading Blood RAW sounds with different sample rates but the same backing lump may not use the same hardware sound buffer.
* when playing an unpositioned sound the attenuation is irrelevant and must be ignored. This resulted in a 3D sound being started which was mostly inaudible due to lack of valid origin.
2020-01-06 15:08:32 +01:00
Marisa Kirisame
9e212c3582 Change IsSourcePlayingSomething to handle overlapping sounds. 2020-01-06 15:08:30 +01:00
Christoph Oelckers
bc1d728140 - made FSoundChan::EntChannel a full int and reordered the structure for better packing. 2020-01-06 15:08:28 +01:00
Christoph Oelckers
25288d5cea - renamed IsActorPlayingSomething to IsActorPlayingSound and made it clearscope. 2020-01-06 15:08:26 +01:00
Christoph Oelckers
35e38bc8eb - fixed inverted listener check when using compatibility options. 2020-01-06 15:08:24 +01:00
Christoph Oelckers
38aa6c4281 - the old bit masking for the channel needs to go, of course. 2020-01-06 15:08:22 +01:00
Christoph Oelckers
9c825ea090 - fixed VOC loader. Its 16 bit code did not work because it set the variable to -16 instead of 16.
- removed a few MAX calls with std::max.
2020-01-06 15:08:20 +01:00
Christoph Oelckers
c3759f389c - separated the channel number from the flags in the sound interface so that the 8 channel limit can be eliminated.
- added Marisa Kirisame's CHAN_OVERLAP flag.
- exported S_IsActorPlayingSomething to ZScript.

The sound API change required deprecating A_PlaySound and S_Sound. There are now new variants S_StartSound and A_StartSound which have two distinct parameters for channel and flags.

# Conflicts:
#	src/bbannouncer.cpp
#	src/fragglescript/t_func.cpp
#	src/g_shared/a_lightning.cpp
#	src/p_effect.cpp
#	src/p_mobj.cpp
#	src/p_switch.cpp
#	src/playsim/p_spec.cpp
#	src/sound/s_doomsound.cpp
#	src/sound/s_doomsound.h
#	wadsrc/static/zscript/base.zs

# Conflicts:
#	src/intermission/intermission.cpp
#	src/sound/s_doomsound.cpp
2020-01-06 15:00:05 +01:00
Christoph Oelckers
ba006cbc5c - sound engine update. 2020-01-06 14:50:50 +01:00
alexey.lysiuk
7277717b32 - fixed linked sound resolving
Hash indices and sound ids were used interchangeably but they are different entities

https://forum.zdoom.org/viewtopic.php?t=66618
2020-01-06 14:50:48 +01:00
Christoph Oelckers
b0d38adb25 - made the sound resolving a virtual method
This way the player sounds can be done in the proper place without infesting the core.

# Conflicts:
#	src/sound/s_doomsound.cpp
2020-01-06 14:50:46 +01:00
alexey.lysiuk
a7796b8ffb - fixed debugger visualization for FSoundID 2020-01-06 14:38:54 +01:00
alexey.lysiuk
179c4dd238 - rewrote test for occupied sound channel without special types
https://forum.zdoom.org/viewtopic.php?t=66613
2020-01-06 14:38:39 +01:00
alexey.lysiuk
3c157a4f2c - restored stopping of channel by new sound
If source actor/sector/polyobject is playing something on the selected channel, stop it before playing a new sound

https://forum.zdoom.org/viewtopic.php?t=66613
2020-01-06 14:38:37 +01:00
alexey.lysiuk
ea85cd18dd - remove redundant call to SoundRenderer::UpdateSounds()
At that point SoundEngine::StopAllChannels() did this already
2020-01-06 14:38:35 +01:00
alexey.lysiuk
da7515c0ce - moved sound engine cleanup calls to own function
https://forum.zdoom.org/viewtopic.php?t=66605#p1127457
2020-01-06 14:38:33 +01:00
alexey.lysiuk
9b2054ad4d - fixed crash when exiting before sound engine initialization
https://forum.zdoom.org/viewtopic.php?t=66605
2020-01-06 14:38:30 +01:00
alexey.lysiuk
fbe696935d - removed redundant call to S_StopAllChannels()
It's the first thing that S_ClearSoundData() does anyway
2020-01-06 14:38:28 +01:00
Magnus Norddahl
bd80a16312 Fix include error 2020-01-06 14:32:33 +01:00
Christoph Oelckers
6c4a6def62 - cleaned the includes of the sound backend code of unwanted content.
Also simplified the sound init decision making. With FMod gone there is no reason to be pedantic here. Even the check of snd_backend for the Null device could be omitted here, its only realistic use is '-nosound'.

# Conflicts:
#	src/sound/s_environment.cpp
2020-01-06 13:55:51 +01:00
Christoph Oelckers
fb42e6d92e - separated reverb data and reverb editor.
Again, isolating the part that is game independent from parts that are specific to GZDoom.
2020-01-06 13:45:37 +01:00
Christoph Oelckers
8adf2c34cd - continued refactoring on sound code.
The game independent part of the code has been mostly isolated.

# Conflicts:
#	src/sound/s_doomsound.cpp
#	src/sound/s_sound.cpp
#	src/sound/s_sound.h

# Conflicts:
#	src/sound/s_sound.cpp
2020-01-06 13:45:19 +01:00
Christoph Oelckers
89bffd17bc - reduced the dependency of the sound system on game state.
Many of the simple wrappers have been moved to a separate file and the sound source handling has been abstracted.
This is only the first phase, the work is not complete yet.
Also changed the license of the sound code to BSD after verifying that this code bears no similarity to id's original sound code anymore, save for a few function names (which are due to be refactored out anyway.)

# Conflicts:
#	src/sound/s_sound.cpp
#	src/sound/s_sound.h
2020-01-06 13:35:40 +01:00
Christoph Oelckers
3501ffd743 - started separating the sound engine code from game dependent parts.
First step: Split the header. Todo: Abstract listener and sound source specifics out of the sound engine.
2020-01-06 13:35:38 +01:00
alexey.lysiuk
2535b4ef63 - pass master volume to ZMusic library on startup
MIDI devices that don't output music through the sound system (like WinMM) ignored master volume setting

https://forum.zdoom.org/viewtopic.php?t=66510
2020-01-06 01:32:08 +01:00
alexey.lysiuk
e5bb66eb4f - removed unused code from serializer 2020-01-06 01:32:05 +01:00
alexey.lysiuk
505902b141 - fixed selection of system MIDI device on startup
https://forum.zdoom.org/viewtopic.php?t=66150
2020-01-06 01:30:51 +01:00
alexey.lysiuk
79b39648d7 - fixed compilation of Cocoa backend with 10.9 SDK
src/posix/cocoa/i_video.mm:68:31: error: property 'delegate' not found on object of type 'id'
src/posix/cocoa/st_console.mm:464:37: error: property 'delegate' not found on object of type 'id'
2020-01-06 01:30:50 +01:00
Christoph Oelckers
5544e50ca4 - fixed: ZMusic_Close may not lock the mutex because it will delete it.
Here the calling code must ensure that the music object won't be accessible anymore before it gets deleted.
2020-01-06 01:30:47 +01:00
Christoph Oelckers
6b098107ce - ZMusic interface refactoring.
Use global functions instead of the class interface which exposed too many implementation details.
2020-01-06 01:30:43 +01:00
alexey.lysiuk
af321b36a1 - updated Cocoa backend to follow single exit point workflow 2020-01-06 01:11:06 +01:00
alexey.lysiuk
2b4a071b81 - deleted leftovers of exit refactoring 2020-01-06 01:11:04 +01:00
alexey.lysiuk
14b07ee45f - cleanup SDL fatal error reporting
Output error text to terminal if SDL message box cannot be shown
Removed wrong "No IWAD found" message
2020-01-06 01:10:59 +01:00
alexey.lysiuk
ad07c6fcdb - fixed potential crashes in Linux crash reporter
Do not access various global objects at early stage of initialization and late stage of shutdown

# Conflicts:
#	src/posix/sdl/i_main.cpp

# Conflicts:
#	src/posix/sdl/i_main.cpp
2020-01-06 01:08:16 +01:00
alexey.lysiuk
b5d2cc4778 - call SDL_Quit() from main() instead of atexit()
This should help with crash reporting during SDL shutdown
2020-01-06 00:55:51 +01:00
alexey.lysiuk
a5d3be2569 - fixed crash on exiting from IWAD selector
https://forum.zdoom.org/viewtopic.php?t=66073
2020-01-06 00:55:49 +01:00
alexey.lysiuk
6c78556c09 - restored command line arguments initialization in SDL backend 2020-01-06 00:55:47 +01:00
drfrag
cfeacc485b - Try to fix compilation on non windows platforms.
# Conflicts:
#	src/d_main.cpp
2020-01-06 00:51:04 +01:00
alexey.lysiuk
f334400d48 - fixed compilation of POSIX targets
src/posix/cocoa/i_main.mm:152:2: error: use of undeclared identifier 'ShutdownJoysticks'
src/posix/sdl/i_system.cpp:128:3: error: ‘I_FatalError_Gtk’ was not declared in this scope
src/posix/sdl/st_start.cpp:329:8: error: ‘CExitEvent’ was not declared in this scope
2020-01-06 00:48:14 +01:00
drfrag
bda11c6401 - Fixed compilation.
# Conflicts:
#	src/win32/win32video.cpp
2020-01-06 00:46:30 +01:00
Christoph Oelckers
191b958791 - the big cleanup of the exit cleanup is done!
atterm is gone and only a few system-side functions use atexit.
All game side cleanup is performed in D_DoomMain now.

# Conflicts:
#	src/CMakeLists.txt
#	src/atterm.cpp
#	src/atterm.h
#	src/d_main.cpp
#	src/dobjtype.cpp
#	src/g_mapinfo.cpp
#	src/g_statusbar/sbarinfo.cpp
#	src/gamedata/g_mapinfo.h
#	src/i_net.cpp
#	src/p_setup.cpp
#	src/posix/cocoa/i_video.mm
#	src/posix/sdl/hardware.cpp
#	src/posix/sdl/i_main.cpp
#	src/r_utility.cpp
#	src/rendering/v_video.cpp
#	src/sound/s_advsound.cpp
#	src/sound/s_sound.cpp
#	src/swrenderer/r_swcolormaps.cpp
#	src/win32/hardware.cpp
#	src/win32/i_input.cpp

# Conflicts:
#	src/CMakeLists.txt
#	src/i_net.cpp
#	src/posix/sdl/i_system.cpp
#	src/r_utility.cpp
#	src/win32/i_system.cpp
2020-01-05 23:57:44 +01:00
drfrag
5b31393b90 - Fixed compilation.
# Conflicts:
#	src/win32/st_start.cpp
2020-01-05 21:19:07 +01:00
Christoph Oelckers
7221068d68 - fixed compilation on Windows. 2020-01-05 21:14:00 +01:00
Christoph Oelckers
9ee1c88760 replaced all 'exit's with an ExitEvent exception
The main exits are initiated from code that cannot filter this back to D_DoomMain easily so the exception is the only way to get there.

The 3 main points of exit are:

* quit/exit CCMD
* quitting the menu through ST_Endoom
* receiving a quit message on the main window.

# Conflicts:
#	src/posix/cocoa/st_start.mm
2020-01-05 21:13:56 +01:00
Christoph Oelckers
7a307ff8a9 - don't exit from within a window proc.
This should be handled by the message pump evaluating WM_QUIT which is how Windows suggests this to be done.
2020-01-05 21:12:23 +01:00
Christoph Oelckers
dd47803906 - missed one exit. 2020-01-05 21:12:20 +01:00
Christoph Oelckers
abd98688e1 - refactored the exit calls out of the networking code
These ones were particularly bad examples of misusing the exit handlers by temporarily installing one themselves and then calling exit to clean stuff up.

Now they just return an error code to D_DoomMain to perform a regular exit.
2020-01-05 21:12:18 +01:00
Christoph Oelckers
f52c217234 - moved all exception handling out of the backends
The main catch is now in D_DoomMain, only calling platform specific functions to handle the output for the error.

As a nice side effect, -norun can now be done without an exception, just by exiting D_DoomMain with a special exit code.

# Conflicts:
#	src/win32/i_main.cpp
2020-01-05 21:12:16 +01:00
Christoph Oelckers
e8332b299e - consolidated I_FatalError functions
This also removes the handling from thr Posix backend and will not compile on non-Windows.
2020-01-05 21:09:36 +01:00
Christoph Oelckers
f84c0790ea - consolidated the 3 I_Error implementations
Debug output is now being handled by the respective interface functions, not by the Windows I_Error itself.
2020-01-05 21:09:34 +01:00
alexey.lysiuk
4c099300ca - implemented str(n)icmp function definitions via CMake macro 2020-01-05 21:07:58 +01:00
alexey.lysiuk
a4930f9d8b - restored ability to link with thirdparty sound libraries explicitly
DYN_SNDFILE=NO and DYN_MPG123=NO were ignored while DYN_FLUIDSYNTH=NO broke compilation
These options should be applied to ZMusic target instead of the main executable
As a bonus, it's now possible to build GZDoom without FluidSynth
2020-01-05 21:06:37 +01:00
alexey.lysiuk
875a136b34 - fixed compilation of Cocoa backend
src/posix/cocoa/st_start.mm:63:7: error: redefinition of 'FBasicStartupScreen'
2020-01-05 21:04:42 +01:00
Christoph Oelckers
26c435c69e - split up st_start.cpp into one file with the Windows interface code and a second one which only contains platform independent code.
Since this made heavy use of Windows type, those were duplicated to avoid rewriting the entire interface.
This split at least reduces the amount of code needed to refactor for making the screens work on other platforms than Windows.

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 21:04:39 +01:00
Christoph Oelckers
ba071d7044 - eliminate a little bit of redundancy. 2020-01-05 21:04:12 +01:00
Christoph Oelckers
89d7330ba9 - cleanup of the sound init/exit code.
Now there is only one single entry point for both, instead of previously 2 entry and 4 exit points.
This also eliminates the explicit shutdown of ZMusic. Timidity++'s two buffers have been put in containers that self-destruct on shutdown and calling dumb_exit is not necessary because the only feature requiring it is not used by any code in the music library.
2020-01-05 21:04:09 +01:00
Christoph Oelckers
55831a264a - some reformatting on exit code, mainly to make searching for the content easier.
# Conflicts:
#	libraries/asmjit/asmjit/core/compiler.h
#	libraries/glslang/spirv/SpvBuilder.h
#	src/posix/sdl/hardware.cpp
#	src/rendering/v_video.cpp
#	src/win32/hardware.cpp
#	src/win32/i_main.cpp
2020-01-05 21:03:41 +01:00
Christoph Oelckers
fcfff6f6f6 - sanitized exit code a bit
Instead of trying a homegrown way to avoid recursive exceptions, let's do it with the defined procedure C++ has for this case: call std::terminate.

This allowed removing some old hackery inherited from Boom and will now hopefully allow sanitizing the exit procedure to the point that it can be done without depending on exit handlers.

# Conflicts:
#	src/files_decompress.cpp

# Conflicts:
#	src/d_main.cpp
2020-01-05 21:03:07 +01:00
Christoph Oelckers
1f15bc5b0d - moced I_DetectOS call into D_DoomMain
This requires the console and was the reason for this strange setup.

# Conflicts:
#	src/posix/cocoa/i_main.mm
2020-01-05 21:00:19 +01:00
Christoph Oelckers
5293b8b281 - moved the initial C_InitConsole call into D_DoomMain
The only difference here were the size values on Windows but for this initial call they have been useless for a long time. When this code was written the console buffer still had a fixed width that needed to be set before adding any text.
2020-01-05 21:00:16 +01:00
Christoph Oelckers
f0d68efb88 - also put the Windows system specific exit handlers into atexit's list
Again, these have no place in the game's own uninit code.
2020-01-05 21:00:15 +01:00
Christoph Oelckers
818302e02f - put SDL_Quit into the atexit queue instead of atterm
System exit procedures should not go in there.
2020-01-05 21:00:12 +01:00
Christoph Oelckers
c272315ca3 - new exception class for quitting the game
This will eventually replace the atexit mess, right now it isn't used.

# Conflicts:
#	src/doomerrors.h

# Conflicts:
#	src/doomerrors.h
2020-01-05 20:58:39 +01:00
Christoph Oelckers
62141910a4 - copied the restart cleanup code into its own function
# Conflicts:
#	src/d_main.cpp

# Conflicts:
#	src/d_main.cpp
2020-01-05 20:56:30 +01:00
drfrag
ce31c46d60 Revert "Use signal handler to invoke call_terms() before exit when possible"
This reverts commit 457dc8b5a9.
2020-01-05 19:56:24 +01:00
drfrag
2bf731cfa9 Revert "- Made VMFrameStack GlobalVMStack a non thread_local variable for MinGW since that helps to prevent crashes on exit."
This reverts commit 429bd5d843.
2020-01-05 19:55:15 +01:00
drfrag
b78978fa7b Revert "- Addressed crash on exit with MinGW. This is a hack and i've reported it as a bug in the MinGW C runtime."
This reverts commit 0e25e40deb.
2020-01-05 19:54:54 +01:00
drfrag
fce7af81af - Try to fix compilation on POSIX targets, i mean for real compilers thanks again to the broken VS preprocessor. 2020-01-05 19:44:18 +01:00
Christoph Oelckers
44f668c6d9 - added a mapping table from DOS-IBM-437 to Unicode
This is for future use, added now so that it won't get lost.
2020-01-05 14:43:59 +01:00
Christoph Oelckers
ed0e671281 - added missing return to the GENMIDI loader. 2020-01-05 14:39:14 +01:00
Braden Obrzut
04ca5946d9 - Document limitation of TArray and silence warnings about non-trivial types being trivially moved 2020-01-05 14:39:12 +01:00
Christoph Oelckers
7bd8abc074 - fixed crash with non-looping music ending.
In this case it was the song terminating the stream, with the new setup the main music code has to do this itself.
2020-01-05 14:39:09 +01:00
Christoph Oelckers
1616bc93a7 - fixed compilation on Windows.
# Conflicts:
#	libraries/zmusic/musicformats/win32/i_cd.cpp

# Conflicts:
#	libraries/zmusic/musicformats/win32/i_cd.cpp
2020-01-05 14:39:08 +01:00
alexey.lysiuk
0d3e78f748 - disabled code signing in Xcode by default
It’s impossible to build GZDoom without valid code signing identity with Xcode 11 using a project

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 14:39:06 +01:00
Christoph Oelckers
555b847323 - removed the remains of the FModEx-style stream implementation
FMod had MP3/Ogg playback integrated right into itself, and the OpenAL backend tried to replicate this functionality.

This functionality, however, has been removed over two years ago when FMod started breaking things more and more, it was only this backing implementation that was left in.
2020-01-05 14:39:04 +01:00
Christoph Oelckers
ee4bf9670e - renamed a few functions in the public interface of ZMusic. 2020-01-05 14:39:03 +01:00
Christoph Oelckers
16212e946b - moved the music loader code to ZMusic.
This was the final piece of code reorganization.

What's left is cleaning up the interface.
2020-01-05 14:39:01 +01:00
Christoph Oelckers
09fe55d462 - cleanup of the remaining music code in the main project
# Conflicts:
#	src/menu/menudef.cpp
#	src/scripting/vmthunks.cpp

# Conflicts:
#	src/p_acs.cpp
2020-01-05 14:39:00 +01:00
Christoph Oelckers
d7db010217 - moved the CD Audio code to ZMusic, too.
This was the last player class.
This code was also cleaned up for non-Windows systems where CD Audio is not implemented.
Instead of providing an empty implementation, all related code is now explicitly deactivated.

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 14:38:27 +01:00
Christoph Oelckers
01de5a071b - moved the main music classes to ZMusic
What's left is the CD-Audio playback and some global functions.

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 14:02:12 +01:00
Christoph Oelckers
cf16dc510a - fixed compilation with XCode and silenced several warnings 2020-01-05 13:38:07 +01:00
Christoph Oelckers
768a7bdd18 - hooked up a few more CVARs and other values the music backend needs to know about and moved the MusInfo base class into zmusic.
# Conflicts:
#	src/sound/musicformats/music_midistream.cpp
2020-01-05 13:37:50 +01:00
Christoph Oelckers
08d2ac0eee - moved the sound system's sound stream for the music out of the song objects.
It is now being handled by the controlling code.
While of no benefit for GZDoom itself, this finally allows to separate the entire music code into a separate, engine independent project that merely provides streamed music data when not playing on a hardware device (WinMM Midi or CD Audio.)
The tight coupling of the music code with the sound backend made this nearly impossible before
2020-01-05 12:56:39 +01:00
Christoph Oelckers
fce866054e - reordering code a bit to see where the stream must be started. 2020-01-05 12:56:37 +01:00
Christoph Oelckers
e3bb9332d0 - a bit of cleanup - moving internal class declarations into the sources.
Now i_musicinterns.h doesn't bleed the entire implementation everywhere anymore.
2020-01-05 12:56:35 +01:00
Christoph Oelckers
0f7886326d - renamed the configuration file. 2020-01-05 12:56:33 +01:00
Christoph Oelckers
e76f590df8 - moved all configuration code to zmusic project.
The CVARs are now just getting forwarded without any own logic.
2020-01-05 12:56:30 +01:00
Christoph Oelckers
5d73f09ebf - first state of music configuration refactor.
# Conflicts:
#	src/sound/music/midi_cvars.cpp
2020-01-05 12:56:28 +01:00
Christoph Oelckers
d44d3b353d - did a bit of reordering on I_RegisterSong.
The way CDDA was treated as an afterthought made handling of stream songs somewhat problematic, because the state could be unclear.
CDDA is an easily identifiable format so it should be tested first.
2020-01-05 12:33:51 +01:00
Christoph Oelckers
eccff92420 - moved MIDI format detection and source creation into zmusic project. 2020-01-05 12:33:48 +01:00
Christoph Oelckers
531a5a8857 - moved the stream sources to zmusic project.
# Conflicts:
#	src/CMakeLists.txt
2020-01-05 12:32:47 +01:00
Christoph Oelckers
09993ca39b - removed ZDoom dependencies from music_libsndfile.cpp
# Conflicts:
#	src/sound/musicformats/music_libsndfile.cpp
2020-01-05 12:32:43 +01:00
Christoph Oelckers
f3f2ec5cb1 - moved the sound decoding code to the zmusic project.
Since this gets used by both the sound backend and the music code it needs to be in a place accessible to both.

# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	libraries/zmusic/decoder/mpg123_decoder.cpp
#	libraries/zmusic/decoder/sndfile_decoder.cpp
#	src/CMakeLists.txt
2020-01-05 12:29:15 +01:00
Christoph Oelckers
fb3b6a0407 - XA, too. 2020-01-05 11:53:06 +01:00
Christoph Oelckers
3837cf8f0f - ... and the raw OPL format. 2020-01-05 11:53:04 +01:00
Christoph Oelckers
182f48c2c4 - gave music_gme.cpp the treatment.
# Conflicts:
#	src/sound/musicformats/music_gme.cpp
2020-01-05 11:53:00 +01:00
Christoph Oelckers
e3d9c6a19e - dependency cleanup in music_dumb.cpp.
# Conflicts:
#	src/sound/musicformats/music_dumb.cpp

# Conflicts:
#	src/sound/musicformats/music_dumb.cpp
2020-01-05 11:50:07 +01:00
Christoph Oelckers
b5ebe264ab - consolidated the different file access interfaces in the backends into one shared version.
This was getting a bit unwieldy. The include path setup is not perfect yet, that's work for later.
(It's about time we're getting C++20 with modules so that this include path madness can be put to an end.)
2020-01-05 11:46:28 +01:00
Christoph Oelckers
c56bf30cc2 - uncoupled the stream sources from the low level implementation. The entire setup had the stream sources depend on the SoundStream class, severely limiting reusability. This was changed that there is one SoundStream class that uses the StreamSources as mere data source that has no knowledge and no connection to the underlying system, similar to how the MIDI system works. With this there are only 3 top level music classes left - MIDIStreamer, StreamSong and CDSong.
Also made the decode_vorbis function in DUMB a function pointer so that the library does not depend on high level code and can just ignore the vorbis case if no supported.
2020-01-05 11:46:24 +01:00
Christoph Oelckers
5743a56ef4 - created a new zmusic library which will eventually contain all the music playback code.
Currently all it contains are the MIDI sources and the MIDI devices, the rest needs to be reworked first.

# Conflicts:
#	libraries/zmusic/i_module.cpp
#	libraries/zmusic/i_module.h
#	src/CMakeLists.txt
#	src/i_module.cpp
#	src/i_module.h
#	src/sound/music/midi_cvars.cpp
#	src/utility/i_module.cpp
#	src/utility/i_module.h

# Conflicts:
#	src/CMakeLists.txt
#	src/sound/musicformats/music_opl.cpp
2020-01-05 11:46:20 +01:00
Christoph Oelckers
c52b516c6f - more dependency removal, this time from the MIDI devices.
# Conflicts:
#	src/sound/mididevices/music_win_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_softsynth_mididevice.cpp
#	src/sound/mididevices/music_timidity_mididevice.cpp
#	src/sound/mididevices/music_timiditypp_mididevice.cpp
#	src/sound/mididevices/music_wavewriter_mididevice.cpp
2020-01-05 02:43:50 +01:00
Christoph Oelckers
d3bfffbdab - removed all dependencies on ZDoom code from the MIDI sources (including TArray and FileReader.) 2020-01-05 02:36:35 +01:00
Christoph Oelckers
4068febc5e - fixed typo. 2020-01-05 02:36:32 +01:00
Christoph Oelckers
5460c72ee9 - moved the stream handling out of the MIDI device into the MIDIStreamer class.
This isn't the final location but this means that the device is merely a data provider, with the sole exception of the Win32 MIDI device whose unwieldy usage requirements unfortunately dictate much of the needed interface here.
2020-01-05 02:36:30 +01:00
Christoph Oelckers
f15be8b270 - split out the MIDIDevice implementation into its own source file. 2020-01-05 02:36:27 +01:00
Christoph Oelckers
447290aa4f - WildMidi also done. 2020-01-05 02:31:56 +01:00
Christoph Oelckers
30f23738b3 - Timidity++ done. 2020-01-05 02:31:53 +01:00
Christoph Oelckers
e75da52448 - fixed the GUS MIDI device.
The sound font reader may not be deleted because its ownership is transferred to the instrument set.
The gus_patchdir variable was not transferred to the config struct.
2020-01-05 02:31:47 +01:00
Christoph Oelckers
08f3a349e8 - work on GUS MIDI device plus some cleanup
This is not tested yet!
2020-01-05 02:31:42 +01:00
Christoph Oelckers
309a45ed48 - Gave OPN device the same treatment
Also made some improvements to the interface.

# Conflicts:
#	src/sound/mididevices/midi_cvars.cpp
2020-01-05 02:31:38 +01:00
alexey.lysiuk
850975cbc4 - fixed compilation on Linux
libraries/oplsynth/oplio.cpp:59:32: error: ‘memset’ was not declared in this scope
src/sound/mididevices/midi_cvars.cpp:43:31: error: expected initializer before ‘GetSystemDirectoryA’
2020-01-05 02:17:59 +01:00
Christoph Oelckers
f6eedb737b - same treatment for the OPL Midi player.
# Conflicts:
#	src/sound/mididevices/music_opl_mididevice.cpp
2020-01-05 02:17:53 +01:00
Christoph Oelckers
9585ca5984 - missed an 'else'. 2020-01-05 02:16:33 +01:00
Christoph Oelckers
4aca10e062 - cleared FluidSynthMIDIDevice of most ZDoom dependencies.
# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp
2020-01-05 02:16:30 +01:00
Christoph Oelckers
726f65e91b - more work on music code
- renamed the FluidSetting functions to ChangeSetting so that they can be used as a generic means to change music player options without overloading the virtual function table for each minor thing.
- pass Printf as a parameter to the MIDI renderer to uncouple it from the main GZDoom code.
- throw exceptions when setting up the renderer fails so that this can be handled consistently for all construction errors here.
- delete FluidSynth handles before the constructor aborts.
2020-01-05 02:14:14 +01:00
drfrag
8b6af8726e Revert "- added dynamic loading of FluidSynth 2.x"
This reverts commit 399bc4cffa9401b6ea4b88ff6d2206e80f835efc.
2020-01-05 02:13:44 +01:00
Christoph Oelckers
9437bcda64 - removed most dependencies on ZDoom code in ADL Midi device. 2020-01-05 02:11:52 +01:00
Christoph Oelckers
f2840d4942 - made the OPL synth backend a separate library.
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/mididevices/music_opl_mididevice.cpp

# Conflicts:
#	libraries/oplsynth/OPL3.cpp
#	libraries/oplsynth/dosbox/opl.cpp
2020-01-05 02:11:51 +01:00
Christoph Oelckers
a63d90034b - cleaned up the dependencies of the OPL interface layer.
This also removes the OPL dumper because I wasn't able to get any non-broken output from it and have no desire to fix such a niche feature.

# Conflicts:
#	src/sound/mididevices/music_opldumper_mididevice.cpp
2020-01-05 02:11:49 +01:00
Christoph Oelckers
01624eddf2 - removed all ZDoom dependencies from the OPL backend code.
# Conflicts:
#	src/sound/oplsynth/opl_mus_player.cpp
2020-01-05 02:11:03 +01:00
Christoph Oelckers
d212c84392 - removed the global current_opl_core variable and pass the needed info as function parameters
because using global variables for this is really bad style!
This also removes the unused OPLMUSDumper class.
2020-01-05 02:02:01 +01:00
Christoph Oelckers
cf105c8720 - gave the Timidity error functions better names and hooked up the WildMidi version. 2020-01-05 01:53:54 +01:00
alexey.lysiuk
2428cc4b1e - fixed compilation with Apple Clang as well
src/utility/basictypes.h:39:23: error: unknown type name 'size_t'; did you mean 'time_t'?
2020-01-05 01:53:50 +01:00
Christoph Oelckers
166e390ad9 - changed MIDI sources so that they do not have to include i_musicinterns.h anymore.
They were already clean of unwanted external references, but including this file made it hard to keep it that way.
This also moves a few useful definitions around to less 'dirty' headers.

# Conflicts:
#	src/rendering/swrenderer/textures/warptexture.cpp

# Conflicts:
#	src/doomtype.h
#	src/sound/midisources/midisource.cpp
#	src/sound/midisources/midisource_smf.cpp
#	src/sound/midisources/midisource_xmi.cpp
2020-01-05 01:53:45 +01:00
Christoph Oelckers
3b5e8f8011 - made WildMidi a library.
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/musicformats/music_xa.cpp
2020-01-05 01:40:41 +01:00
Christoph Oelckers
1816c17ffd - fixed WildMidi. 2020-01-05 01:40:38 +01:00
Christoph Oelckers
f76f3d0e0a - refactoring of WildMidi to have proper instrument management
Not tested yet, it compiles but may not work as-is.

# Conflicts:
#	src/sound/wildmidi/file_io.cpp
2020-01-05 01:40:34 +01:00
Christoph Oelckers
00048ddf7e - started cleanup work on WildMidi code.
# Conflicts:
#	src/sound/mididevices/music_wildmidi_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_wildmidi_mididevice.cpp
2020-01-05 01:38:19 +01:00
Christoph Oelckers
2ddc9ee1f3 - made the Timidity(GUS) device a separate library.
# Conflicts:
#	src/CMakeLists.txt
2020-01-05 01:22:14 +01:00
Christoph Oelckers
f59aa69d95 - cleaned up the includes in timidity.cpp.
# Conflicts:
#	src/sound/timidity/timidity.cpp
2020-01-05 01:22:12 +01:00
Christoph Oelckers
1b1fabd5c2 - cleanup of the TimidityMIDIDevice(GUS) backend code to eliminate the storage in global variables and to remove the dependencies on core ZDoom code.
The organization here is now the same as for the Timidity++ device, i.e. it is the device owning the instruments to give better control over their lifecycle.

# Conflicts:
#	src/sound/timidity/instrum_font.cpp
#	src/sound/timidity/instrum_sf2.cpp
#	src/sound/timidity/mix.cpp
#	src/sound/timidity/playmidi.cpp
#	src/sound/timidity/resample.cpp
2020-01-05 01:22:10 +01:00
Christoph Oelckers
8542d73994 - removed some ZDoomd dependencies from Timidity(GUS) backend
* use std::string instead of FString
* replaced the single use of clamp with std::min/std::max.
* copied MAKE_ID macro into the source.
* use snprintf instead of mysnprintf
* use std::runtime_error instead of I_Error to abort on failed memory allocations.

# Conflicts:
#	src/sound/timidity/common.cpp

# Conflicts:
#	src/sound/timidity/common.cpp
#	src/sound/timidity/instrum.cpp
#	src/sound/timidity/instrum_dls.cpp
2020-01-05 01:22:06 +01:00
Christoph Oelckers
4fccadff7e - made the Timidity++ backend a library, now that it has no dependencies on GZDoom anymore.
# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	src/CMakeLists.txt
2020-01-05 01:21:32 +01:00
Christoph Oelckers
5a3b544ba6 - handled the final piece where Timidity++ had a direct dependency on GZDoom - the error logging function.
This is npw a function pointer so that a simple stdout printout can be used as default, but allows to override it.
Also added the missing timidity_file.h header.

# Conflicts:
#	src/sound/timiditypp/common.cpp
2020-01-04 23:41:22 +01:00
Christoph Oelckers
ebdab4fd23 - moved the CVars out of the Timidity++ backend. 2020-01-04 23:39:51 +01:00
Christoph Oelckers
2dd6c14865 - implemented an abstract sound font reader interface for Timidity++.
The only dependency left on the main GZDoom code are the CVars, which will be dealt with next.

# Conflicts:
#	src/sound/mididevices/music_timiditypp_mididevice.cpp
2020-01-04 23:39:48 +01:00
Christoph Oelckers
9d5f4969e7 - thinned out the FSoundFontReader interface a bit more by moving the file open code into the FSoundFontReader class itself. 2020-01-04 23:39:45 +01:00
Christoph Oelckers
e968ef9ded - moved the instrument set maintenance out of the Timidity++ library into the player class.
This removes the dependency on the sound font manager from the low level library, reducing the direct dependencies to FileReader and SoundFontReader.
2020-01-04 23:39:43 +01:00
Christoph Oelckers
64e0b151fb - removed a few dependencies of the Timidity++ code from the main GZDoom code base.
The big issues, i.e. FileReader and SoundFontReader still need to be handled to make this a standalone library.

# Conflicts:
#	src/sound/timiditypp/configfile.cpp
2020-01-04 23:39:39 +01:00
Christoph Oelckers
4d2d143422 - gave libopen the same treatment and made it its own subproject
# Conflicts:
#	src/CMakeLists.txt
#	src/sound/mididevices/music_opnmidi_mididevice.cpp

# Conflicts:
#	src/sound/mididevices/music_opnmidi_mididevice.cpp
2020-01-04 22:59:26 +01:00
Christoph Oelckers
a4f05f5741 - made libadl its own library subproject.
This is to improve compile times because the MSVC compiler tends to become slow with large lists of source files in a single project.
This new project is still our stripped down copy of libadl, not the original, because that project contains a large amount of baggage we do not need.

# Conflicts:
#	src/CMakeLists.txt

# Conflicts:
#	src/sound/mididevices/music_adlmidi_mididevice.cpp
2020-01-04 22:56:56 +01:00
drfrag
bcbf914f5b - Added I_Error prototypes to doomerrors.h. 2020-01-04 21:44:07 +01:00
Christoph Oelckers
c05e3ebf31 Made several classes trivially copyable,
Many had leftover non-default constructors/ assignment operators, and some were initialized, even though the initialized data was never used.

In case of FCycler this even caused a default setting to be overwritten when used inside FDynamicLight.

# Conflicts:
#	src/g_shared/a_dynlight.cpp
#	src/sound/s_sndseq.cpp
2020-01-04 21:32:10 +01:00
Christoph Oelckers
f09e887a69 - removed redundant include. 2020-01-04 21:32:07 +01:00
alexey.lysiuk
a095ffde39 - fixed compilation of Linux targets
src/../libraries/gdtoa/gdtoa.h:67:19: fatal error: arith.h: No such file or directory
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:06 +01:00
Christoph Oelckers
1556e6620c - move sound files to sound folder.
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:04 +01:00
Christoph Oelckers
81d54959af - sorted sound backend code into subdirectories.
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:02 +01:00
Christoph Oelckers
d9168aeeff - deleted unused mus2midi.cpp file.
# Conflicts:
#	src/sound/i_music.cpp
2020-01-04 21:31:59 +01:00
Christoph Oelckers
040cb17370 - moved third party library projects to a subfolder to reduce size of the root.
# Conflicts:
#	CMakeLists.txt
#	libraries/glslang/OGLCompilersDLL/CMakeLists.txt
#	libraries/glslang/OGLCompilersDLL/InitializeDll.cpp
#	libraries/glslang/OGLCompilersDLL/InitializeDll.h
#	libraries/glslang/glslang/CMakeLists.txt
#	libraries/glslang/glslang/GenericCodeGen/CodeGen.cpp
#	libraries/glslang/glslang/GenericCodeGen/Link.cpp
#	libraries/glslang/glslang/Include/BaseTypes.h
#	libraries/glslang/glslang/Include/Common.h
#	libraries/glslang/glslang/Include/ConstantUnion.h
#	libraries/glslang/glslang/Include/InfoSink.h
#	libraries/glslang/glslang/Include/InitializeGlobals.h
#	libraries/glslang/glslang/Include/PoolAlloc.h
#	libraries/glslang/glslang/Include/ResourceLimits.h
#	libraries/glslang/glslang/Include/ShHandle.h
#	libraries/glslang/glslang/Include/Types.h
#	libraries/glslang/glslang/Include/arrays.h
#	libraries/glslang/glslang/Include/intermediate.h
#	libraries/glslang/glslang/Include/revision.h
#	libraries/glslang/glslang/Include/revision.template
#	libraries/glslang/glslang/MachineIndependent/Constant.cpp
#	libraries/glslang/glslang/MachineIndependent/InfoSink.cpp
#	libraries/glslang/glslang/MachineIndependent/Initialize.cpp
#	libraries/glslang/glslang/MachineIndependent/Initialize.h
#	libraries/glslang/glslang/MachineIndependent/IntermTraverse.cpp
#	libraries/glslang/glslang/MachineIndependent/Intermediate.cpp
#	libraries/glslang/glslang/MachineIndependent/LiveTraverser.h
#	libraries/glslang/glslang/MachineIndependent/ParseContextBase.cpp
#	libraries/glslang/glslang/MachineIndependent/ParseHelper.cpp
#	libraries/glslang/glslang/MachineIndependent/ParseHelper.h
#	libraries/glslang/glslang/MachineIndependent/PoolAlloc.cpp
#	libraries/glslang/glslang/MachineIndependent/RemoveTree.cpp
#	libraries/glslang/glslang/MachineIndependent/RemoveTree.h
#	libraries/glslang/glslang/MachineIndependent/Scan.cpp
#	libraries/glslang/glslang/MachineIndependent/Scan.h
#	libraries/glslang/glslang/MachineIndependent/ScanContext.h
#	libraries/glslang/glslang/MachineIndependent/ShaderLang.cpp
#	libraries/glslang/glslang/MachineIndependent/SymbolTable.cpp
#	libraries/glslang/glslang/MachineIndependent/SymbolTable.h
#	libraries/glslang/glslang/MachineIndependent/Versions.cpp
#	libraries/glslang/glslang/MachineIndependent/Versions.h
#	libraries/glslang/glslang/MachineIndependent/attribute.cpp
#	libraries/glslang/glslang/MachineIndependent/attribute.h
#	libraries/glslang/glslang/MachineIndependent/gl_types.h
#	libraries/glslang/glslang/MachineIndependent/glslang.y
#	libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp
#	libraries/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
#	libraries/glslang/glslang/MachineIndependent/intermOut.cpp
#	libraries/glslang/glslang/MachineIndependent/iomapper.cpp
#	libraries/glslang/glslang/MachineIndependent/iomapper.h
#	libraries/glslang/glslang/MachineIndependent/limits.cpp
#	libraries/glslang/glslang/MachineIndependent/linkValidate.cpp
#	libraries/glslang/glslang/MachineIndependent/localintermediate.h
#	libraries/glslang/glslang/MachineIndependent/parseConst.cpp
#	libraries/glslang/glslang/MachineIndependent/parseVersions.h
#	libraries/glslang/glslang/MachineIndependent/pch.cpp
#	libraries/glslang/glslang/MachineIndependent/pch.h
#	libraries/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpContext.h
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
#	libraries/glslang/glslang/MachineIndependent/preprocessor/PpTokens.h
#	libraries/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
#	libraries/glslang/glslang/MachineIndependent/propagateNoContraction.h
#	libraries/glslang/glslang/MachineIndependent/reflection.cpp
#	libraries/glslang/glslang/MachineIndependent/reflection.h
#	libraries/glslang/glslang/OSDependent/Unix/CMakeLists.txt
#	libraries/glslang/glslang/OSDependent/Unix/ossource.cpp
#	libraries/glslang/glslang/OSDependent/Windows/CMakeLists.txt
#	libraries/glslang/glslang/OSDependent/Windows/main.cpp
#	libraries/glslang/glslang/OSDependent/Windows/ossource.cpp
#	libraries/glslang/glslang/OSDependent/osinclude.h
#	libraries/glslang/glslang/Public/ShaderLang.h
#	libraries/glslang/glslang/updateGrammar
#	libraries/glslang/spirv/CMakeLists.txt
#	libraries/glslang/spirv/GLSL.ext.AMD.h
#	libraries/glslang/spirv/GLSL.ext.EXT.h
#	libraries/glslang/spirv/GLSL.ext.KHR.h
#	libraries/glslang/spirv/GLSL.ext.NV.h
#	libraries/glslang/spirv/GLSL.std.450.h
#	libraries/glslang/spirv/GlslangToSpv.cpp
#	libraries/glslang/spirv/GlslangToSpv.h
#	libraries/glslang/spirv/InReadableOrder.cpp
#	libraries/glslang/spirv/Logger.cpp
#	libraries/glslang/spirv/Logger.h
#	libraries/glslang/spirv/SPVRemapper.cpp
#	libraries/glslang/spirv/SPVRemapper.h
#	libraries/glslang/spirv/SpvBuilder.cpp
#	libraries/glslang/spirv/SpvBuilder.h
#	libraries/glslang/spirv/SpvPostProcess.cpp
#	libraries/glslang/spirv/SpvTools.cpp
#	libraries/glslang/spirv/SpvTools.h
#	libraries/glslang/spirv/bitutils.h
#	libraries/glslang/spirv/disassemble.cpp
#	libraries/glslang/spirv/disassemble.h
#	libraries/glslang/spirv/doc.cpp
#	libraries/glslang/spirv/doc.h
#	libraries/glslang/spirv/hex_float.h
#	libraries/glslang/spirv/spirv.hpp
#	libraries/glslang/spirv/spvIR.h
#	src/CMakeLists.txt
2020-01-04 21:30:08 +01:00
drfrag
bdcb9fcbcd - Version 3.84. 2019-12-16 12:18:17 +01:00
alexey.lysiuk
1ca7786650 - added 'damageonland' property to terrain definition
This property helps to replicate vanilla Hexen behavior of damaging player right after touching lava floor

https://forum.zdoom.org/viewtopic.php?t=66512
2019-12-12 20:35:44 +01:00
Christoph Oelckers
d56e519bc7 - do not allow summon CCMD to spawn abstract classes 2019-12-12 20:35:42 +01:00
drfrag
e4c1b1413e - Replaced the useless 160x200 scale preset with widescreen 356x200. 2019-12-12 12:57:35 +01:00
Fabian Greffrath
78ace538a6 do not expect user input if stdin is redirected
If GZDoom is built on a POSIX system without the GTK frontend and not
run from a KDE session, an IWAD picker is presented on the terminal
and expects the user to select a game wad. However, if stdin is
redirected, this won't work, so start with the default IWAD instead.
2019-12-12 11:44:06 +01:00
drfrag
efb3465921 - Add option to reset controls to defaults. 2019-12-07 22:23:02 +01:00
alexey.lysiuk
73e6da259e - handle mirroring in MNTR sprite renaming
https://forum.zdoom.org/viewtopic.php?t=66583
2019-12-07 19:47:32 +01:00
alexey.lysiuk
d37ebc65f0 - updated xBRZ scaler to 1.8
Removed all C++17 features: std::clamp(), attribute [[likely]], terse static asserts, ...

https://sourceforge.net/projects/xbrz/files/xBRZ/xBRZ_1.8.zip/download
2019-12-07 00:42:45 +01:00
Chronos Ouroboros
ab617c3a91 Fixed the JIT's OP_VTBL check not checking if it's already at the start of the code. 2019-12-07 00:42:41 +01:00
alexey.lysiuk
f463cf3e73 - fixed wrong display of Hexen AC for SBARINFO
Do not use BasicArmor's save percentage when no armor present
Applied change from 34c2c65bb6 to old status bar definitions
2019-12-01 10:59:12 +01:00
Christoph Oelckers
fd4473d7d2 - fixed: AActor::Revive did not restore flags8. 2019-12-01 10:59:05 +01:00
ZZYZX
0953f11a04 Normalize mouse events received by the modder through EventHandlers 2019-11-30 15:15:28 +01:00
alexey.lysiuk
e67e6b21c0 - added ability to force internal alternative HUD
Set hud_althud_forceinternal CVAR to disable unwanted HUD customizations
2019-11-26 16:48:08 +01:00
alexey.lysiuk
1a4f62c54f - added ability to set custom alternative HUD
Use GAMEINFO key 'althudclass' to specify own class derived from AltHud

https://forum.zdoom.org/viewtopic.php?t=66422
2019-11-26 16:47:54 +01:00
Rachael Alexanderson
ed654150eb - add cvar 'cl_customizeinvulmap' - changes the invulnerability… (#972)
* - add cvar 'cl_disableinvertedcolormap' - changes the invulnerability sphere to instead be a regular desaturated colormap that transitions from deep blue to pale yellow

* - add menu option for cl_disableinvertedcolormap

* - added customization for invulnerability colormap

* - fixed custom colormap being calculated incorrectly

* - disable custom invulnerability map before the main game loop

# Conflicts:
#	src/d_main.cpp
2019-11-26 14:53:19 +01:00
alexey.lysiuk
7160219b63 - exported several Wads.GetLump...() methods to ZScript
* GetLumpName() returns 8-characters lump name
* GetLumpFullName() returns full name with path and extension
* GetLumpNamespace() returns lump's namespace
* GetNumLumps() returns total number of lumps

https://forum.zdoom.org/viewtopic.php?t=66285
2019-11-25 18:16:42 +01:00
Player701
d7542a8cd9 - Implemented scale parameter for BaseStatusBar::DrawString
# Conflicts:
#	src/g_statusbar/shared_sbar.cpp

# Conflicts:
#	src/g_statusbar/shared_sbar.cpp
2019-11-25 12:10:58 +01:00
drfrag
0228a596de - Allow joystick input in the background by default. It's always allowed for XInput controllers and they work as DInput ones with DInput support disabled.
Besides on SDL1 they always worked like that.
2019-11-22 19:44:22 +01:00
alexey.lysiuk
21079752ba - fixed missing checks for function calls from DECORATE
State functions could call ZScript code with incompatible self pointer, e.g. weapon's function could be called with self pointed to player pawn
DECORATE scripts that contain such errors are no longer accepted

https://forum.zdoom.org/viewtopic.php?t=66429
2019-11-21 18:04:03 +01:00
drfrag
4977e6af1f - add native FlipLineSideRefs(line)
- FlipLineSideRefs should only work on single-sided lines
(patch by Rachael)
2019-11-16 14:01:47 +01:00
drfrag
74aa1763e6 Revert "- no, we do not want to use global variables to pass parameters around..."
This reverts commit 26a782031c.

Not applicable and caused lighting problems with models.
2019-11-16 13:35:23 +01:00
PaulyB
787f06d7f3 Added 'NoKeyboardCheats' option to IWADINFO
This is useful for IWADs that do not want to use the hardcoded engine cheats. This can still be overriden with the 'allcheats' CVAR
2019-11-13 19:34:44 +01:00
Rachael Alexanderson
3c030527af - cl_blockcheats added to 'nocheat' check 2019-11-13 19:34:41 +01:00
Rachael Alexanderson
4878da381b - new zscript function 'SetLineVertexes(line, v1, v2)'
- scriptify 'FlipLine' completely using new function, remove native version

# Conflicts:
#	src/maploader/postprocessor.cpp
2019-11-13 19:34:39 +01:00
3saster
7b454ef6c2 Added 'nocheats' CVAR (#969)
This CVAR disables all classic cheats (i.e. keyboard cheats). This prevents keypresses from being eaten due to attempting to read cheats
2019-11-13 19:34:34 +01:00
drfrag
44aeb56932 - add 'FlipLine' to 'LevelPostProcessor'
(patch by Rachael)
2019-11-13 19:34:28 +01:00
alexey.lysiuk
05f36cafc8 - extended level post-processing with special string arguments
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:26 +01:00
alexey.lysiuk
dca15d56c8 - extended level post-processing with thing IDs
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:23 +01:00
alexey.lysiuk
814483f5b8 - level post-processor cleanup
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:21 +01:00
alexey.lysiuk
7f1166e833 - level post-processor can now add new things
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:18 +01:00
alexey.lysiuk
05f0b76f8e - extended level post-processing with specials and arguments
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:16 +01:00
alexey.lysiuk
09e7fe5fb4 - extended level post-processing with editor numbers and angles
# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:13 +01:00
alexey.lysiuk
20098ca90b - added things related getters to level post-processing
New functions cover existing interface only
Unsigned integers are now used instead signed for indices and bitfields

# Conflicts:
#	src/maploader/maploader.cpp
2019-11-13 19:34:11 +01:00
drfrag
91859bc6fa - added generic level post-processing script class
It was extracted from LevelCompatibility class, and native code was moved accordingly
(original patch by _mental_)

# Conflicts:
#	src/compatibility.cpp
2019-11-13 19:33:49 +01:00
drfrag
033f0ca43e Revert "- add 'flipline' function to levelcompatibility"
This reverts commit 1a85206983.

Revert "- implement the following functions under LevelCompatibility:"

This reverts commit 6537eca669.
2019-11-13 19:31:42 +01:00
alexey.lysiuk
29e4f34de6 - improved handling of return value mismatches
Prohibit returning more values than declared in function
The exception is a void function returning one value, but only for compatibility with old scripts

https://forum.zdoom.org/viewtopic.php?t=66341
2019-11-13 19:29:45 +01:00
Player701
f2202cca4f - Fixed erroneous "Return type mismatch error" when returning value of derived type 2019-11-13 19:29:42 +01:00
Chronos Ouroboros
7bc42a30be Fixed mixins. 2019-11-06 17:51:00 +01:00
alexey.lysiuk
4e5ffb5db9 - fixed: IfGame else branch was ignored in MENUDEF
https://forum.zdoom.org/viewtopic.php?t=66282
2019-11-06 17:50:57 +01:00
Christoph Oelckers
a487829932 - fixed bad variable name for lump filter 2019-11-06 17:50:54 +01:00
Christoph Oelckers
fb14f39d88 - fixed: lump filters without any dot in the name did not work. 2019-11-06 17:50:51 +01:00
drfrag
2e336b756a - Fixed stretching for 256 and 240 pixels tall skies in software. 2019-11-02 21:13:15 +01:00
Chronos Ouroboros
9403fa2f48 Fixed a bug in the flagdef processing code. 2019-11-02 10:48:09 +01:00
Chronos Ouroboros
8b52477cd5 Added mixins for classes. 2019-11-02 10:48:05 +01:00
alexey.lysiuk
85fe6c5aaa - adjusted collision detection for item pickups
Use vanilla condition for a thing with MF_SPECIAL flag to fix inability to grab it when item's top is at the same height as sector's floor from it can be picked up

https://forum.zdoom.org/viewtopic.php?t=60181&start=88#p1122935
2019-10-31 17:40:03 +01:00
drfrag
3e0fa5cc1b - Bumped ZScript version to be the same as in GZDoom as Graf suggested. 2019-10-31 17:37:54 +01:00
drfrag
9ea43c4b14 - Fixed taking screenshots in menus with Space when Sys_Rq is set as screenshot key.
Thanks randi!
2019-10-31 17:05:33 +01:00
alexey.lysiuk
015eb3404a - fixed radius attack that may inflict damage twice
https://forum.zdoom.org/viewtopic.php?t=66191
2019-10-28 12:14:32 +01:00
drfrag
46ebeeb7d5 - After the ill-fated 3.83 this is 3.83a. 2019-10-27 19:45:24 +01:00
Christoph Oelckers
2ec4331afe - sort CVAR output in config alphabetically instead of randomly dumping them in their internal order. 2019-10-27 14:07:04 +01:00
Chronos Ouroboros
2351ae8317 Fixed ZScript's Screen.DrawLine using the wrong color when drawing pure black. 2019-10-26 23:09:25 +02:00
alexey.lysiuk
edcc0dc4ab - fixed usage of uninitialized object in BlockLinesIterator
DBlockLinesIterator::check was used by FMultiBlockLinesIterator before it was constructed

https://forum.zdoom.org/viewtopic.php?t=66224

# Conflicts:
#	src/scripting/vmiterators.cpp
2019-10-26 12:15:00 +02:00
drfrag
0907972c2f Revert "- allow the language table to supersede the title patches, if appropriate"
This reverts commit 2b51e8d5dd.

# Conflicts:
#	src/g_hub.cpp
#	src/g_level.cpp
#	src/p_setup.cpp
#	src/wi_stuff.cpp
#	src/wi_stuff.h
#	wadsrc/static/zscript/ui/statscreen/types.zs

Revert "- fixed: The wbstartstruct that gets passed to the level summary screen needs to be static"

This reverts commit 4a563f449d.

# Conflicts:
#	src/g_level.cpp

Revert "- Fixed compilation."

This reverts commit 149a294a49.

# Conflicts:
#	src/g_level.cpp

Revert "- Fixed game finales not being shown after the intermission."

This reverts commit 55af0b11c6.

All this didn't make sense without localization and caused problems with intermissions and endings, it was incompatible with the old code without the level refactor.
2019-10-25 16:23:42 +02:00
alexey.lysiuk
d2fe30cd93 - added Visual Studio debugger visualization for several types 2019-10-24 13:25:22 +02:00
alexey.lysiuk
cde65bbfe9 - removed hardcoded width limit for screenshots
https://forum.zdoom.org/viewtopic.php?t=66204
2019-10-24 13:25:19 +02:00
Chronos Ouroboros
632708bccb Fixed dynamic arrays as function arguments. 2019-10-24 13:25:16 +02:00
drfrag
68569d14c3 - Change how the 'randi' cheat works. 2019-10-23 11:52:49 +02:00
alexey.lysiuk
62d3f61bac - do not accept read-only variable as out argument
https://forum.zdoom.org/viewtopic.php?t=66179
2019-10-22 10:59:34 +02:00
alexey.lysiuk
c9641ce335 - fixed variable's stack offset for implicit dynarray clearing
https://forum.zdoom.org/viewtopic.php?t=66187
https://forum.zdoom.org/viewtopic.php?t=66189
https://forum.zdoom.org/viewtopic.php?t=66198
2019-10-22 10:59:31 +02:00
Chronos Ouroboros
93d111ef29 Fixed Vector2/3 out parameters in the ZScript compiler. 2019-10-22 10:59:28 +02:00
alexey.lysiuk
ef06ef5977 - added explicit clearing of global VM stask
When exception is thrown from JITed code, VM stask isn't cleared during unwinding
It needs to be clear explicitly to avoid memory leaks and references to destructed objects on shutdown

https://forum.zdoom.org/viewtopic.php?t=66172

# Conflicts:
#	src/dthinker.cpp
2019-10-22 10:59:25 +02:00
Christoph Oelckers
5ded0aadf0 - fixed GetLineX/GetLineY ACS implementation
# Conflicts:
#	src/p_acs.cpp
2019-10-22 10:59:16 +02:00
Christoph Oelckers
f15a52b1e7 - when adding some minmum lateral movement to trigger collision detection, do not just set Vel.X but actually use a vector pointing in the proper facing direction of the actor. 2019-10-22 10:59:13 +02:00
Christoph Oelckers
1170e07124 - fixed: MF8_RECREATELIGHTS must be processed in pause mode as well.
When issuing a netevent from the console the game is in pause mode, and if this removes a light it would have crashed the game.
2019-10-22 10:59:09 +02:00
alexey.lysiuk
9aff83cfdc - implicitly clear local dynamic arrays
https://forum.zdoom.org/viewtopic.php?t=62710
2019-10-20 12:30:00 +02:00
drfrag
b52ac9b556 Revert "AsmJit update"
This reverts commit 275ecb2623.

This had to be reverted because it breaks exception handling which is a critical problem.
With the updated code any exception thrown inside code that had a JITed call stack would crash.
2019-10-20 11:34:23 +02:00
alexey.lysiuk
a6eb3f3016 - added access check for state functions
Private functions cannot be called from derived classes anymore

https://forum.zdoom.org/viewtopic.php?t=66158
2019-10-19 16:47:59 +02:00
alexey.lysiuk
7132b1a67c - fixed SPC music looping after update to GME 0.6.2
Why was the default player setup changed at all?

https://forum.zdoom.org/viewtopic.php?t=65863
2019-10-18 11:19:27 +02:00
Christoph Oelckers
e2387d0741 - fixed: The dynamic lights must be initialized before the first frame is ticked.
Otherwise they only show up after the first frame.

# Conflicts:
#	src/p_setup.cpp
2019-10-17 11:10:19 +02:00
Major Cooke
62b3ed7d75 Fixed CheckBossDeath not checking for actor replacements.
- A_BossDeath relies upon this function in particular.
- This completes CheckReplacee's purpose, allowing for varied actors to count as one particular actor, such as a Fatso for map07 and avoid lowering the walls until they are all dead.
2019-10-15 22:57:55 +02:00
drfrag
80442db4fe - Yet even more missing null pointer checks, PB still crashed. 2019-10-15 14:45:52 +02:00
alexey.lysiuk
8c110541b1 - fixed crash with DMSS_INFLICTORDMGTYPE flag and no inflictor
https://forum.zdoom.org/viewtopic.php?t=66110
2019-10-14 12:18:11 +02:00
alexey.lysiuk
d5451fd281 - added dynamic loading of FluidSynth 2.x
# Conflicts:
#	src/sound/mididevices/music_fluidsynth_mididevice.cpp
2019-10-14 12:01:03 +02:00
drfrag
af566f2d52 - More missing null pointer checks. 2019-10-14 11:49:06 +02:00
drfrag
0a9b20062a - Fixed compilation on non Windows platforms. 2019-10-13 12:54:16 +02:00
alexey.lysiuk
5691d1d3b9 - made GL nodes loader more resilient to broken data
https://forum.zdoom.org/viewtopic.php?t=66086

# Conflicts:
#	src/p_glnodes.cpp
2019-10-13 11:44:43 +02:00
drfrag
7ae0df931e - Added the 'quickunsetslot' command to unset the quicksave slot. 2019-10-09 16:01:58 +02:00
drfrag
cc22109e95 - Fixed capped tall skies not working (Heretic and Hexen). 2019-10-09 13:10:52 +02:00
drfrag
302b9a768a - Fixed sky stretching for the new freelook limit. 2019-10-09 13:10:35 +02:00
drfrag
d48a886f8b - Added missing null pointer checks to fix the PB crash. 2019-10-07 20:36:08 +02:00
drfrag
d200c171ca Revert "- Fixed bad NULL return value in AActor::StaticSpawn."
This reverts commit d5352fa550.

In master AActor::StaticSpawn now can't return NULL but there are still some null pointer checks.
2019-10-07 20:04:00 +02:00
drfrag
d5352fa550 - Fixed bad NULL return value in AActor::StaticSpawn.
Fixes crash with PB.
2019-10-07 11:50:42 +02:00
drfrag
4a8d216f94 - This is version 3.83. 2019-10-06 21:11:48 +02:00
drfrag
8227e795c5 - Fixed crash with quicksave rotation enabled (read out of array bounds). 2019-10-04 17:07:39 +02:00
Alexander
a44f80c19d add m_quickexit option for quick exit in game menu
Default: off (false)

When this option is enabled (true), then exiting the game from
main menu and by menu_quit command doesn't require confirmation
and doesn't play sound.

# Conflicts:
#	wadsrc/static/menudef.txt
2019-09-30 21:38:51 +02:00
Rachael Alexanderson
6537eca669 - implement the following functions under LevelCompatibility:
GetNumMapThings, GetMapThingPos, GetMapThingAngle, SetMapThingAngle

# Conflicts:
#	src/maploader/compatibility.cpp
2019-09-28 15:01:23 +02:00
Rachael Alexanderson
1a85206983 - add 'flipline' function to levelcompatibility
# Conflicts:
#	src/maploader/compatibility.cpp
2019-09-28 14:56:12 +02:00
Christoph Oelckers
fd072db274 - adapted the PSX XA decoder from EDuke32 as a music format in GZDoom.
Libsndfile cannot decode this format but tries to play these files as regular WAVs and turns them into noise (Both are in a RIFF container.)

# Conflicts:
#	src/sound/musicformats/music_xa.cpp
2019-09-28 14:20:29 +02:00
Christoph Oelckers
09d26a9e64 - moved a few CCMDs from i_sound.cpp to s_sound.cpp. 2019-09-28 14:20:26 +02:00
Christoph Oelckers
bd3e8c0a99 - split off all music code from s_sound.cpp
# Conflicts:
#	src/CMakeLists.txt
#	src/fragglescript/t_func.cpp
#	src/fragglescript/t_load.cpp
#	src/g_level.cpp
#	src/g_levellocals.h
#	src/g_shared/a_dynlight.cpp
#	src/intermission/intermission.cpp
#	src/p_saveg.cpp
#	src/posix/cocoa/i_main.mm
#	src/s_sound.cpp
#	src/win32/st_start.cpp

# Conflicts:
#	src/win32/st_start.cpp
2019-09-28 14:20:21 +02:00
drfrag
c12d5795d2 - Block the scale factor for low detail mode. 2019-09-25 12:33:24 +02:00
alexey.lysiuk
6a3b50c561 - fixed potential resetting of bindings
Quitting GZDoom during initialization could lead to unbound game controls

https://forum.zdoom.org/viewtopic.php?t=65945
2019-09-25 11:58:03 +02:00
drfrag
7f3616e8d8 Added low detail mode (160x200) to the preset scale modes.
UI looks horizontally stretched tough.
2019-09-25 11:46:55 +02:00
alexey.lysiuk
2e87aef815 - fixed C++ compilation flags applied to C files
This had an effect on 32-bit targets without SSE support
2019-09-24 13:51:06 +02:00
alexey.lysiuk
1871350c59 - fixed crash when setting sound pitch on non-existing channel
This applies to a lack of free channels, -nosound command line switch, missing OpenAL library, sound initialization failures, ...

https://forum.zdoom.org/viewtopic.php?t=65926
2019-09-23 15:10:58 +02:00
drfrag
9a3d87cafb - Added PrtSc key support for Linux and MacOS, at least in theory. 2019-09-22 22:55:44 +02:00
drfrag
a1e19657f9 - Added support for PrtSc and cosmetic changes. 2019-09-22 19:34:56 +02:00
Alexander
6535f837b7 implement taking screen shots in menus
# Conflicts:
#	wadsrc/static/zscript/ui/menu/menu.zs
2019-09-22 12:45:32 +02:00
drfrag
55af0b11c6 - Fixed game finales not being shown after the intermission. 2019-09-21 14:27:13 +02:00
Christoph Oelckers
6d69785838 - fixed uninitialized variable.
# Conflicts:
#	src/gamedata/fonts/font.cpp
#	src/v_text.cpp
2019-09-21 12:33:00 +02:00
drfrag
734225e67f - Fixed compilation. 2019-09-20 22:20:08 +02:00
Christoph Oelckers
a82ee857e5 - fixed a few warnings.
# Conflicts:
#	src/scripting/vmthunks.cpp
2019-09-20 22:20:05 +02:00
alexey.lysiuk
9b84a97a1d - fixed compilation with MSVC
src\gamedata\resourcefiles\resourcefile.h(77): error C4716:  'FResourceLump::FillCache': must return a value
2019-09-20 22:18:36 +02:00
Christoph Oelckers
3aa615e960 - extended lump injection to allow injecting data into a PWAD's directory, not just the IWAD.
# Conflicts:
#	src/w_wad.cpp
#	src/w_wad.h
2019-09-20 22:18:33 +02:00
Christoph Oelckers
8980ff688c - generate a hash identifier for each loaded resource file.
This is not useful by itself but can be used for adding new features later, e.g. mod-wide compatibility settings or file specific lump replacement or injection.

# Conflicts:
#	src/resourcefiles/resourcefile.cpp

# Conflicts:
#	src/resourcefiles/resourcefile.cpp
2019-09-20 22:18:29 +02:00
drfrag
b5bb5fa0bd - Fixed another crash in the software renderer now with transparent sprites (Stronghold STR12), it's a bit hacky and now you get a white flash instead. 2019-09-17 18:48:31 +02:00
Christoph Oelckers
f25dadbaf2 - fixed: sector lights could access the sector before it was set. 2019-09-16 18:42:07 +02:00
Marisa Kirisame
ca35bdc33c Fix for LineTrace not setting its starting sector based on its offset. 2019-09-16 01:28:11 +02:00
drfrag
400444f7df - Fixed savegame slot selection for real: wrong check and ancient bug. 2019-09-16 01:01:40 +02:00
drfrag
974d11a161 - Fixed savegame slot selection bug. 2019-09-15 15:56:28 +02:00
drfrag
ca537d716b - Disable models by default only for the classic software renderer with the r_models_carmack CVAR. Performance is not affected in SoftPoly. 2019-09-15 12:54:59 +02:00
drfrag
2f425dbc72 - Disable models by default for the software renderer as they make it much slower. 2019-09-14 18:44:39 +02:00
drfrag
9ee78de8fe - Fixed crash drawing fog boundaries in the software renderer hopefully this time for real. Based on Rachael's "do a texture check when drawing fog borders" commit. Now it crashes somewhere else tough. 2019-09-13 18:47:35 +02:00
Conn O'Griofa
457dc8b5a9 Use signal handler to invoke call_terms() before exit when possible
It's not advisable to rely on atexit() to invoke SDL_Quit(), as it
causes a segmentation fault on exit for the SDL2 KMSDRM driver due to
a conflict with the Mesa drivers* which upstream Mesa may not elect to fix.

The issue can be resolved by replacing the atexit() call with a signal
handler that will interrupt the D_DoomMain() and D_DoomLoop()
functions, then invoke call_terms() within the main thread before exiting.

We can leave the atexit() hook intact to handle edge cases such as abnormal
process exit, or exit methods which do not produce signals such as Alt+F4 or
window close via GUI (neither of which are possible in a KMS context, so
should not affect KMSDRM sessions).

Fixes a segmentation fault/uninterruptible application hang on exit
for all KMS targets, including Raspberry Pi 4B, 3B and Intel i965.

* See: https://bugzilla.libsdl.org/show_bug.cgi?id=4530 and
https://lists.freedesktop.org/archives/mesa-users/2019-March/001519.html
2019-09-12 23:34:17 +02:00
drfrag
b2aa973396 - Fixed warnings. 2019-09-11 14:34:09 +02:00
Marisa Kirisame
aa06b2f62c Squashed commit of the following:
commit 6ecd831eb45a8258995c02664450c3ca8cfe5b48
Merge: a4fb1f61c afbd7f7a2
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sun Jul 28 22:02:19 2019 +0200

    Merge branch 'master' of github.com:coelckers/gzdoom into f3dfloor_export

commit a4fb1f61c0532d3a6051d4c1fca4ac72ec33e060
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Fri Jul 12 15:43:25 2019 +0200

    Renamed EFFloorType enum in ZScript to the more descriptive EF3DFloorFlags

commit 9ad1c3b5625d53c06229be2a94d44fa0f36f41fd
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sun Jul 7 20:25:31 2019 +0200

    Add bounds checks to Get3DFloor/GetAttached

commit dd2a7956a887b92ed24ce5e79f10b1a445664d6c
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sun Jul 7 17:13:44 2019 +0200

    Correct handling of 3d floor plane texture getting.

commit 9b748287892c8fdee9ac67019bf1f66bc4b69eab
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sun Jul 7 16:14:45 2019 +0200

    Implemented requested changes to F3DFloor exports.
    * Getters for ffloors/attached arrays.
    * Getter for 3D floor top/bottom texture.

commit 6a1482bb0637a70890629e4c13e8759c7a3673f3
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sat Jul 6 13:42:52 2019 +0200

    Renamed exported extsector pointer in Sector struct to something more descriptive.

commit 7c6783d43b898cbd7a01fb2191fd401ed8e8c300
Merge: ff64e04b2 8d36f0a0c
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Mon Apr 29 12:40:44 2019 +0200

    Merge branch 'master' into f3dfloor_export

commit ff64e04b251f23325d2f72bc25c59f34b4cab6fa
Merge: a90947392 5b6bae409
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Sun Apr 21 16:56:18 2019 +0200

    Merge branch 'master' into f3dfloor_export

commit a90947392a27eb1c2dac7005614592ec2f410274
Author: Marisa Kirisame <marisa@sayachan.org>
Date:   Mon Feb 4 17:47:25 2019 +0100

    Export F3DFloor structure and related data.
    Small changes to Trace code to better use this struct.
2019-09-11 14:18:28 +02:00
drfrag
4aa8243adc - Allow disabling mirrors for the GL renderer as some maps abuse them and portals are much slower in the old renderer. Also reduce the number of default recursions since in software mirrors are less demanding. 2019-09-10 14:52:31 +02:00
Christoph Oelckers
d1859d363a - give P_ExplodeMissile a damage type when being called from P_DamageMobj 2019-09-09 16:49:22 +02:00
Christoph Oelckers
5999d7508f - rename sprite names with '^' in the hires namespace. 2019-09-09 14:43:33 +02:00
drfrag
ccadafb5df - Disabled enhanced nightvision by default, some mods use a different effect. 2019-09-08 21:43:10 +02:00
drfrag
38d6008149 - Missed this. 2019-09-08 10:06:31 +02:00
Christoph Oelckers
f95f0257b0 - reinstated the old scriptwait implementation as a compatibility option.
Daedalus's MAP19 needs this.
2019-09-07 12:44:43 +02:00
drfrag
e94d18ab02 - Change how render cull sliders work: only allow reasonable values. 2019-09-06 20:58:59 +02:00
drfrag
6879817cd8 - Enabled gl_sprite_distance_cull and added slider to menu. 2019-09-04 22:31:56 +02:00
drfrag
ba835a14a4 - Added GL version of sprite distance culling. 2019-09-04 22:14:44 +02:00
drfrag
d47af90a56 - Enabled gl_line_distance_cull and added slider to menu. 2019-09-04 17:13:11 +02:00
drfrag
2b27cb0bba - Fill the gaps with the sky or ceiling texture. 2019-09-04 16:39:51 +02:00
Rachael Alexanderson
47c51f437e - make GL version of line distance culling use a separate CVAR, which, for now, is turned off. 2019-09-03 13:47:42 +02:00
Rachael Alexanderson
373870787f - activate r_line_distance_cull in the hardware renderer
# Conflicts:
#	src/gl/scene/gl_bsp.cpp
2019-09-03 13:19:01 +02:00
Christoph Oelckers
358718de05 - removed the playernum parameter from CheckLocalView
This was always used with 'consoleplayer' which really is the only thing making sense here. But this is a part of the global state which should be avoided in play code.

In particular, this makes no real sense in case of secondary maps where it should always return false.

# Conflicts:
#	src/fragglescript/t_func.cpp
#	src/g_inventory/a_keys.cpp
#	src/p_acs.cpp
#	src/p_mobj.cpp
#	src/p_user.cpp
#	src/r_data/r_interpolate.cpp
#	src/r_data/r_interpolate.h
2019-09-02 21:17:19 +02:00
alexey.lysiuk
79eadafa6b - fixed initial setup for dynamic light actors
They are attached and actived explicitly during usual actor initialization sequence
Postponed processing applicable to so called user dynamic lights must be skipped for them
RECREATELIGHTS flag handling for dynamic light actors had the opposite effect of deactivating them

https://forum.zdoom.org/viewtopic.php?t=65683
2019-09-02 13:58:49 +02:00
Jan Engelhardt
02ca2b7c4a Make the build work with fluidsynth 2.x. 2019-09-01 00:09:15 +02:00
alexey.lysiuk
f212220dcd - do thinker profiling of internal dynlights only when they are present
There is no point to output zero calls and/or handle such case in profiling stats calculation

# Conflicts:
#	src/dthinker.cpp
2019-09-01 00:05:31 +02:00
drfrag
99c7be3f2e - Fixed compilation for non windows targets. 2019-08-31 19:23:06 +02:00
alexey.lysiuk
338e599de8 - fixed: saving game to read-only file was erroneously reported as succeeded 2019-08-29 20:21:26 +02:00
hdr88
f27afdb0d2 Add current, max and average velocity as stat (#912)
* Add current, max and average velocity as stat

# Conflicts:
#	src/p_setup.cpp
#	src/p_tick.cpp

# Conflicts:
#	src/p_setup.cpp
#	src/statistics.cpp
2019-08-28 21:51:55 +02:00
alexey.lysiuk
a2d52f4958 - added ability to specify deprecation messages in ZScript
It's an optional extension of deprecated keyword:
    deprecated("2.4", "use ModernFunction instead") int OldFunction();
    deprecated("3.5", "use ModernVariable instead") int OldVariable;

Usage of such members will produce the following report:
    Script warning, ":zscript.txt" line 123:
    Accessing deprecated function OldFunction - deprecated since 2.4.0, use ModernFunction instead
    Script warning, ":zscript.txt" line 456:
    Accessing deprecated member variable OldVariable - deprecated since 3.5.0, use ModernVariable instead

# Conflicts:
#	src/scripting/zscript/zcc_compile.cpp
2019-08-28 21:49:20 +02:00
Vitaly Novichkov
ff78550895 GME update with bug-fixes
- True fix for infinite loops [please verify!]
- True fix for KSS silence
- Fix for HES distorted and unstable/random tempo
2019-08-26 00:51:45 +02:00
Christoph Oelckers
4cae269d83 - changed license of portal.cpp to GPLv3
- list Eternity Engine as a source of some code in the main README.
2019-08-26 00:38:13 +02:00
Marisa Kirisame
7792a435d7 The wrong pointer was passed to ProcessMidPrint, which resulted in a crash. 2019-08-21 15:03:04 +02:00
drfrag
d299576eb0 - Fixed vanilla light mode being available for GL2 when it's not supported without shaders. 2019-08-21 14:17:59 +02:00
drfrag
45abf1a5c9 - Added support for up to 4 DirectInput joysticks at the same time for fake splitscreen. But with more than 32 buttons per device they will overlap as before and you'll get wrong labels. 2019-08-21 14:06:29 +02:00
Petr Kobalicek
275ecb2623 AsmJit update
# Conflicts:
#	.gitignore
2019-08-20 13:08:18 +02:00
Marisa Kirisame
b08ba350d3 Allow custom status bars to override notifications, centered prints and chat prompt.
# Conflicts:
#	src/c_console.cpp
#	src/ct_chat.cpp
2019-08-20 13:06:52 +02:00
drfrag
f63f833ed1 - Consolidated C_MidPrint and C_MidPrintBold. 2019-08-20 13:06:48 +02:00
drfrag
488627d3b2 Revert "- Changed default GL sprite billboard mode to X/Y axis."
This reverts commit 5b76d7563b.
2019-08-20 10:17:25 +02:00
Christoph Oelckers
e7d5b85234 - changed colors for crosshair health display to keep this in line with other health indicators on the HUD.
Use green for 100% health, not 200% and move toward blue for higher health.
2019-08-19 00:25:05 +02:00
Hugo Locurcio
1c8c8224be Improve crosshair health color to be more informative
With `crosshairhealth 2`, the crosshair will now
go from white to yellow, then yellow to red as the player's health
decreases. As the player's health increases up to 200, the crosshair
will also go from white to green to indicate overheal.
This is similar to the implementation in games like Xonotic.

The old behavior (`crosshairhealth 1`) is still the default.
2019-08-19 00:25:03 +02:00
Christoph Oelckers
0b1b78c725 - fixed the PR.
# Conflicts:
#	src/g_game.cpp
2019-08-19 00:25:00 +02:00
cuttlefish
a516b2c872 - Converts keyboard turnspeeds into global CVars
# Conflicts:
#	src/g_cvars.cpp
2019-08-19 00:24:57 +02:00
Christoph Oelckers
20e574058e - removed the internal WildMidi player object cleanup code.
This was solely meant for the original WildMidi player but got seriously in the way of how this code gets used by GZDoom. In GZDoom the player object is owned by the MIDI devive which should be the only instance which is allowed to destroy it.
2019-08-19 00:24:54 +02:00
Christoph Oelckers
163d26ff2b - fixed bad default alpha for 3D floors.
This is a byte value, therefore the default must be 255, not 65536.
2019-08-19 00:24:51 +02:00
Christoph Oelckers
ac484634b3 - fixed attached dynamic light setup.
This was only run on a state change and missed every external light change.
Any place which wants to flag a light change now only will set a flag and at the end of the thinker loop all flagged actors will be processed.
For performance reasons this was merged with the P_RunEffects iterator loop.

# Conflicts:
#	src/p_effect.cpp
#	src/p_effect.h
#	src/p_tick.cpp

# Conflicts:
#	src/p_mobj.cpp
2019-08-18 21:33:42 +02:00
drfrag
6b20de2b63 - Block scaling for the classic software renderer, it didn't work and caused some serious glitches. 2019-08-18 13:07:24 +02:00
alexey.lysiuk
7dd227bde0 - added missing space character to script parser's message 2019-08-17 13:29:42 +02:00
alexey.lysiuk
f2e034b969 - added check for multiple parsing of the same MAPINFO
Warning message is issued when such case is detected

# Conflicts:
#	src/g_mapinfo.cpp
2019-08-17 13:29:40 +02:00
alexey.lysiuk
3eb96eeeff - remove '... is already the default skill' error 2019-08-17 13:29:37 +02:00
drfrag
9639956fa4 - Now the quicksave slot must be selected explicitly like in original Doom. 2019-08-16 17:28:34 +02:00
alexey.lysiuk
7b8754c740 - added ability to enter main menu from credits screen via controller
There was only one way to enter main menu (by pressing Escape button) from the last intermission screen after episode's end
Controller's buttons that are usually assigned to this action, Start and Back by default, now open main menu as well

https://forum.zdoom.org/viewtopic.php?t=65632
2019-08-16 12:25:40 +02:00
Rachael Alexanderson
35d0bcb1d5 - fix typo 2019-08-16 12:25:36 +02:00
alexey.lysiuk
12dee6ca91 - fixed doubling of deprecation warnings for ZScript code
https://forum.zdoom.org/viewtopic.php?t=65617
2019-08-15 21:12:10 +02:00
drfrag
54d0ed23e9 - Fixed compilation. 2019-08-15 12:48:11 +02:00
alexey.lysiuk
728390ce48 - exposed xBRZ scaler options as CVARs
Added 5 xbrz_... CVARs to control various settings of upscaling process

Added xbrz_colorformat CVAR for buffered (zero) and unbuffered (any other value) color format
The first one requires a restart because settings are applied once to a precalculated buffer
The second one has reduced performance with ability to apply settings on-the-fly
2019-08-15 12:43:49 +02:00
alexey.lysiuk
e93d8395bc - updated xBRZ scaler to version 1.7
https://sourceforge.net/projects/xbrz/
https://sourceforge.net/projects/xbrz/files/xBRZ/xBRZ_1.7.zip

https://forum.zdoom.org/viewtopic.php?t=65596
2019-08-15 12:43:45 +02:00
alexey.lysiuk
6b70620bb9 - removed type punning from xBRZ scaler integration
it was a hack that wouldn't work with xBRZ 1.7
2019-08-15 12:43:41 +02:00
drfrag
67fb719a7c Revert "- Now the quicksave slot must be selected explicitly like in original Doom."
This reverts commit 9f0d5ac113.

Else you'd need to select it twice.
2019-08-14 14:17:39 +02:00
drfrag
b3c4e24b58 - Fall back to D3D for software on systems without GL2 support. 2019-08-13 22:04:05 +02:00
drfrag
9f0d5ac113 - Now the quicksave slot must be selected explicitly like in original Doom. 2019-08-13 21:15:09 +02:00
drfrag
1f7c241eb8 - Changed how the old quicksave works. Now you select the slot using quicksave like in original Doom. 2019-08-13 20:32:41 +02:00
Christoph Oelckers
13ee3e3484 - added checks for the special hacky quicksave marker. 2019-08-11 18:51:35 +02:00
Christoph Oelckers
d13499d2b7 - fixed the extremely long standing bug that Lost Souls didn't reacquire their target when slamming into something.
This was one of that annoying old design mistakes where Doom and Heretic features were poorly merged together. The Heretic Gargoyle uses very similar coding but performs a subtly different action when actually hitting another actor. This different action was made the default, even for the Lost Soul.
It has now been changed that both monsters use their original action, being distinguished by an actor flag. For compatibility with custom definitions Heretic's behavior, which has been the default in ZDoom will be the preferred one. The one of the Lost Soul can be reactivated by a flag.
2019-08-11 14:28:51 +02:00
alexey.lysiuk
e4ef998dc2 - exposed Append() method to ZScript dynamic array
https://forum.zdoom.org/viewtopic.php?t=65570
2019-08-11 00:09:51 +02:00
Christoph Oelckers
1161a17f00 - do not blur the background for portrait-less conversations.
- Fixed the mHasBackdrop flag. (drfrag)

# Conflicts:
#	wadsrc/static/zscript/ui/menu/conversationmenu.zs

# Conflicts:
#	src/menu/menu.cpp
2019-08-10 12:47:41 +02:00
Christoph Oelckers
d6e7e68bfa - fixed: The frozen state was not reset when the global level variable was reset.
# Conflicts:
#	src/g_level.cpp
2019-08-09 13:16:27 +02:00
drfrag
2c014e63ac - Unicode fix.
(patch by Graf)
2019-08-09 13:16:24 +02:00
Christoph Oelckers
d9f3fdd293 - fixed handling of the "ouch" face.
This depended on order of execution, taking the health values to compare from variables which were not synchronized properly.
Now both the last and current health being used here are being retrieved in the same place so that further changes cannot break this again.

But here it worked. (drfrag)
2019-08-09 13:16:22 +02:00
Christoph Oelckers
61a849b439 - fixed an inconsistency with missiles bouncing off actors.
They exploded when hitting a side but not when hitting top or bottom. Changed so that they always explode now.
2019-08-09 13:16:19 +02:00
Christoph Oelckers
15cf157877 - removed the ActiveSequences counter.
It was only used to avoid traversing the list if all sequences were paused which is an exceptional situation.
On the other hand, the way it counted was not correct so rather than fixing it it seemed more appropriate to remove it entirely.

# Conflicts:
#	src/g_levellocals.h
#	src/s_sndseq.cpp
2019-08-09 13:16:17 +02:00
Christoph Oelckers
9a4959c82e - fixed incorrect write barrier in sound sequence code.
# Conflicts:
#	src/s_sndseq.cpp
2019-08-09 13:16:14 +02:00
Christoph Oelckers
f6234d08fa - optionally disallow showing the autor's name
# Conflicts:
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
#	wadsrc/static/zscript/ui/statscreen/statscreen.zs
2019-08-07 13:42:05 +02:00
Christoph Oelckers
78fa0a6f95 - added option to print a map author's name on the summary screen
For now only with font-printed map names. Allowing this with titlepatches will require more work and an option to disable.

# Conflicts:
#	src/g_level.cpp
#	src/gamedata/g_mapinfo.h
#	src/gi.cpp
#	wadsrc/static/zscript/ui/statscreen/statscreen.zs
2019-08-06 18:46:23 +02:00