Commit graph

15837 commits

Author SHA1 Message Date
Christoph Oelckers
352365189f - moved the main music classes to ZMusic
What's left is the CD-Audio playback and some global functions.
2019-09-30 02:10:00 +02:00
Christoph Oelckers
6bfa1bf692 - fixed compilation with XCode and silenced several warnings 2019-09-30 01:51:53 +02:00
Christoph Oelckers
2c33e47988 - hooked up a few more CVARs and other values the music backend needs to know about and moved the MusInfo base class into zmusic. 2019-09-30 01:34:16 +02:00
Christoph Oelckers
7c27cd0c57 - 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
2019-09-30 00:02:31 +02:00
Christoph Oelckers
c7b379483e - reordering code a bit to see where the stream must be started. 2019-09-29 22:54:13 +02:00
Christoph Oelckers
d06ec56c2e - a bit of cleanup - moving internal class declarations into the sources.
Now i_musicinterns.h doesn't bleed the entire implementation everywhere anymore.
2019-09-29 22:32:42 +02:00
Christoph Oelckers
b9b706e951 - renamed the configuration file. 2019-09-29 22:03:14 +02:00
Christoph Oelckers
44a6b6e87c - moved all configuration code to zmusic project.
The CVARs are now just getting forwarded without any own logic.
2019-09-29 22:01:19 +02:00
Christoph Oelckers
b7b57b904d - first state of music configuration refactor. 2019-09-29 20:01:57 +02:00
Christoph Oelckers
ab016be6b9 - 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.
2019-09-29 15:10:06 +02:00
Christoph Oelckers
6d7b6fb9fd - moved MIDI format detection and source creation into zmusic project. 2019-09-29 14:47:10 +02:00
Christoph Oelckers
859028b35a - moved the stream sources to zmusic project. 2019-09-29 13:33:09 +02:00
Christoph Oelckers
247346e821 - removed ZDoom dependencies from music_libsndfile.cpp 2019-09-29 13:06:40 +02:00
Christoph Oelckers
cdf2a17c5a - 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.
2019-09-29 12:48:12 +02:00
Christoph Oelckers
b883d27a1f - XA, too. 2019-09-29 01:44:59 +02:00
Christoph Oelckers
dbabc3c0f6 - ... and the raw OPL format. 2019-09-29 01:31:42 +02:00
Christoph Oelckers
dbb4539f4f - gave music_gme.cpp the treatment. 2019-09-29 01:00:15 +02:00
Christoph Oelckers
5eed3dab59 - dependency cleanup in music_dumb.cpp. 2019-09-29 00:41:13 +02:00
Christoph Oelckers
7468c0f36d - 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.)
2019-09-28 23:17:16 +02:00
Christoph Oelckers
d94b63b486 - 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.
2019-09-28 21:04:41 +02:00
Christoph Oelckers
cfe89ef6e6 - 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.
2019-09-28 18:32:25 +02:00
Christoph Oelckers
fc6eba0c26 - more dependency removal, this time from the MIDI devices. 2019-09-28 16:50:00 +02:00
Christoph Oelckers
820cbcc689 - removed all dependencies on ZDoom code from the MIDI sources (including TArray and FileReader.) 2019-09-28 13:59:46 +02:00
alexey.lysiuk
e00a4a53a6 - fixed compilation of Linux targets
src/sound/music/i_musicinterns.h:111:7: error: no template named 'shared_ptr' in namespace 'std'
src/sound/music/i_musicinterns.h:133:7: error: no template named 'shared_ptr' in namespace 'std'
src/sound/music/i_musicinterns.h:152:7: error: no template named 'shared_ptr' in namespace 'std'
2019-09-28 13:32:31 +03:00
alexey.lysiuk
9f190e76e3 - disabled code signing in Xcode by default
It’s impossible to build GZDoom without valid code signing identity with Xcode 11 using a project
2019-09-28 13:32:31 +03:00
drfrag
634ef60c78 - Fixed player sprites not being affected by sector light level in the classic software renderer. 2019-09-28 10:31:27 +02:00
Christoph Oelckers
d8a1005c76 - fixed typo. 2019-09-28 10:04:09 +02:00
Christoph Oelckers
123ed9d01d - 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.
2019-09-28 10:00:22 +02:00
Christoph Oelckers
67169b80e5 - split out the MIDIDevice implementation into its own source file. 2019-09-28 07:47:50 +02:00
Christoph Oelckers
d13766f2ee - fixed a merge error. 2019-09-28 07:47:10 +02:00
Christoph Oelckers
c5f2578ff5 Merge branch 'midi_work_2' 2019-09-28 00:11:54 +02:00
Christoph Oelckers
61bc25d781 - WildMidi also done. 2019-09-28 00:10:39 +02:00
Christoph Oelckers
890db1fbf9 - Timidity++ done. 2019-09-27 22:19:00 +02:00
Christoph Oelckers
1cb668e895 - 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.
2019-09-27 20:08:03 +02:00
alexey.lysiuk
b5e1656c8e - 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’
2019-09-27 10:21:11 +03:00
Christoph Oelckers
ed7b73d8cb - work on GUS MIDI device plus some cleanup
This is not tested yet!
2019-09-27 02:31:27 +02:00
Christoph Oelckers
b3b870d67e - Gave OPN device the same treatment
Also made some improvements to the interface.
2019-09-27 01:51:05 +02:00
Christoph Oelckers
621945905f - same treatment for the OPL Midi player. 2019-09-27 01:01:52 +02:00
Christoph Oelckers
d67fcd3887 - missed an 'else'. 2019-09-27 00:23:49 +02:00
Christoph Oelckers
647abf040b - cleared FluidSynthMIDIDevice of most ZDoom dependencies. 2019-09-27 00:16:32 +02:00
Christoph Oelckers
8d2c67fe95 - 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.
2019-09-26 22:30:07 +02:00
Christoph Oelckers
9b0529b8a3 - removed most dependencies on ZDoom code in ADL Midi device. 2019-09-26 21:29:06 +02:00
Christoph Oelckers
d3df422031 - made the OPL synth backend a separate library. 2019-09-26 20:06:39 +02:00
Christoph Oelckers
b085ac3efb - 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.
2019-09-26 19:33:28 +02:00
Christoph Oelckers
17eac1c57b - removed all ZDoom dependencies from the OPL backend code. 2019-09-26 18:15:23 +02:00
Christoph Oelckers
2aa03e8e8a - 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.
2019-09-26 17:40:39 +02:00
Christoph Oelckers
159b98ea88 - gave the Timidity error functions better names and hooked up the WildMidi version. 2019-09-26 17:22:54 +02:00
alexey.lysiuk
021e548db7 - fixed compilation with Apple Clang as well
src/utility/basictypes.h:39:23: error: unknown type name 'size_t'; did you mean 'time_t'?
2019-09-26 10:56:07 +03:00
Christoph Oelckers
c3f26422df - 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.
2019-09-25 21:47:33 +02:00
Christoph Oelckers
b8824b572f - 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.)
2019-09-25 21:11:00 +02:00
Christoph Oelckers
4ba8da290c - made WildMidi a library. 2019-09-25 19:38:48 +02:00
Christoph Oelckers
a562d69ec3 Merge branch 'wildmidi_cleanup' 2019-09-25 19:21:12 +02:00
Christoph Oelckers
32e1605e17 - fixed WildMidi. 2019-09-25 19:20:22 +02:00
Christoph Oelckers
4369220335 - refactoring of WildMidi to have proper instrument management
Not tested yet, it compiles but may not work as-is.
2019-09-25 17:27:10 +02:00
Marisa Kirisame
8dbddfc365 Fix crash on vulkan with a large number of texture shaders. 2019-09-25 17:46:33 +03:00
alexey.lysiuk
6ab9991e8d - 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 12:21:08 +03:00
Christoph Oelckers
d9e32eb207 - started cleanup work on WildMidi code. 2019-09-24 23:46:27 +02:00
Christoph Oelckers
7962bf189e - made the Timidity(GUS) device a separate library. 2019-09-24 23:43:44 +02:00
Christoph Oelckers
dcef3681d4 - cleaned up the includes in timidity.cpp. 2019-09-24 23:12:38 +02:00
Christoph Oelckers
d557f609cf - 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.
2019-09-24 23:08:56 +02:00
Christoph Oelckers
c107657ea8 Merge branch 'master' of https://github.com/coelckers/gzdoom 2019-09-24 11:08:47 +02:00
Christoph Oelckers
fea0f77905 - 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.
2019-09-24 11:07:32 +02:00
alexey.lysiuk
ca5ca8e974 - fixed C++ compilation flags applied to C files
This had an effect on 32-bit targets without SSE support
2019-09-24 11:53:18 +03:00
Rachael Alexanderson
7ba485f632
fixed the software resized texture warp problem. (#934)
* - almost nearly fixed the software resized texture warp problem.

* - proposed fix for mipmapping issue for previous commit

* - reduce texture allocation for mipmapped warped textures in the software renderer

* - add a check for the resize mode
2019-09-23 22:37:35 -04:00
Christoph Oelckers
66c9f0902b Merge commit '115d1cb182168bb2c8c29a3650dfc33b08e3e6cb' 2019-09-23 15:21:43 +02:00
alexey.lysiuk
7ec33b6b92 - 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:42:03 +03:00
Christoph Oelckers
115d1cb182 - made the Timidity++ backend a library, now that it has no dependencies on GZDoom anymore. 2019-09-23 14:27:43 +02:00
Christoph Oelckers
56e4c8f213 - 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.
2019-09-23 14:14:32 +02:00
Christoph Oelckers
98329311b4 - moved the CVars out of the Timidity++ backend. 2019-09-23 13:58:16 +02:00
Christoph Oelckers
cf6d0c3127 - 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.
2019-09-23 13:53:28 +02:00
Christoph Oelckers
16ab52c5f3 - thinned out the FSoundFontReader interface a bit more by moving the file open code into the FSoundFontReader class itself. 2019-09-23 12:45:26 +02:00
Christoph Oelckers
2cf8cc47df - 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.
2019-09-23 11:27:57 +02:00
Christoph Oelckers
df7a4bb0d9 - 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.
2019-09-23 10:18:19 +02:00
Christoph Oelckers
b3a9884eb1 - gave libopen the same treatment and made it its own subproject 2019-09-23 10:03:18 +02:00
Christoph Oelckers
84cc7cbdd2 - 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.
2019-09-23 10:03:17 +02:00
drfrag
2a642c66be - Fixed ancient ZDoom savegame slot selection bug. When creating new autosaves LastAccessed and LastSaved were not updated accordingly. 2019-09-19 18:43:18 +02:00
Christoph Oelckers
b709a0b6b2 - fixed: sector lights could access the sector before it was set. 2019-09-16 17:34:41 +02:00
Christoph Oelckers
c8c8fecad3 - fixed a few warnings. 2019-09-16 17:30:39 +02:00
Marisa Kirisame
2628dabc31 Fix for LineTrace not setting its starting sector based on its offset. 2019-09-15 21:58:25 +02:00
drfrag
0cbb08ce84 - Fixed crash with mock2.wad in software. 2019-09-14 13:13:55 -04:00
alexey.lysiuk
e48edf6199 - fixed compilation with MSVC
src\gamedata\resourcefiles\resourcefile.h(77): error C4716:  'FResourceLump::FillCache': must return a value
2019-09-13 17:35:31 +03:00
Rachael Alexanderson
836f774b6c - use drfrag's suggested fix of checking for valid texture access, rather than checking whether it is null, when drawing fog boundaries in the software renderer 2019-09-13 09:18:26 -04:00
Christoph Oelckers
587fd75190 - extended lump injection to allow injecting data into a PWAD's directory, not just the IWAD. 2019-09-13 13:55:53 +02:00
Christoph Oelckers
31aa855a51 - 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.
2019-09-13 12:29:17 +02:00
Marisa Kirisame
bcef440511 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 08:19:19 +03:00
Christoph Oelckers
62b0fc5f4e - give P_ExplodeMissile a damage type when being called from P_DamageMobj 2019-09-09 15:41:09 +02:00
Christoph Oelckers
21a621031b - rename sprite names with '^' in the hires namespace. 2019-09-09 10:52:34 +02:00
Christoph Oelckers
76ee658be4 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.
2019-09-09 09:52:33 +02:00
Christoph Oelckers
cbd4479628 - reinstated the old scriptwait implementation as a compatibility option.
Daedalus's MAP19 needs this.
2019-09-07 09:34:50 +02:00
alexey.lysiuk
37fa2e1b67 - 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 12:20:13 +02:00
Jan Engelhardt
f16c09badb Make the build work with fluidsynth 2.x. 2019-08-31 21:47:53 +03:00
alexey.lysiuk
f5d2063613 - 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
2019-08-31 13:20:10 +03:00
alexey.lysiuk
49b790a8f6 - fixed: saving game to read-only file was erroneously reported as succeeded 2019-08-29 14:34:02 +03:00
hdr88
554eb1c813 Add current, max and average velocity as stat (#912)
* Add current, max and average velocity as stat
2019-08-28 20:33:07 +02:00
alexey.lysiuk
98128d9fa3 - 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
2019-08-28 13:37:48 +02:00
Vitaly Novichkov
1a070d12a1 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-25 15:38:39 +03:00
Magnus Norddahl
7d73616fda - release any references to command buffer when flushed 2019-08-25 12:12:29 +02:00
alexey.lysiuk
cc1f18a328 - fixed crash on parsing bad hex number
https://forum.zdoom.org/viewtopic.php?t=65718
2019-08-25 11:21:44 +03:00
alexey.lysiuk
574e079f17 - use own implementation of iswalpha() function
Character classification is no longer affected by quirks of standard library implementation
Lookup table for own function was generated with Python thanks to Unicode Database module from its standard library
Explicitly set locale for POSIX targets was reverted to C

https://forum.zdoom.org/viewtopic.php?t=65641&start=18#p1115930
2019-08-24 20:52:24 +02:00
Christoph Oelckers
48f2105cd1 - moved a few CCMDs from i_sound.cpp to s_sound.cpp. 2019-08-23 21:57:56 +02:00