Commit graph

18591 commits

Author SHA1 Message Date
Christoph Oelckers
5a72e0bfb7 - added a new texture class using stb_image to read a more formats.
This implementation only reads GIF, BMP and PIC formats. No animated GIF support because stb_image does not handle that.
PNG, JPG and TGA are still being handled by the existing dedicated implementations.
PSD and HDR are impractical for reading texture data and thus are disabled.
PnM could be enabled, if its identification semantics were stronger. stb_image only checks the first two characters which simply would falsely identify several flats with the right colors in the first two bytes.

This is more or less a waste product of getting stb_image to work with something actually testable, so it is just provided as-is.
2019-10-06 08:37:23 +02:00
Rachael Alexanderson
5cbb1c86ab - add missing information for the drawers, from the wallsprite code. this reverts a revert.
This reverts commit 338430995e.
2019-10-05 14:51:48 -04:00
drfrag
e6c6b617e2 - Fixed crash with wallsprites in the software renderer for real. 2019-10-05 19:18:00 +02:00
drfrag
338430995e Revert "- fixed a crash in the software renderer that caused wallsprites to crash"
This reverts commit 0dea6fcecc.
2019-10-05 19:18:00 +02:00
alexey.lysiuk
b02ef69d49 - cleaned POSIX compiler arguments for libraries
Removed omission of frame pointers as it makes crash reports much less useful
Modified warning flags to hide annoying reports for external code
2019-10-05 15:02:10 +03:00
alexey.lysiuk
46270326be - implemented str(n)icmp function definitions via CMake macro 2019-10-05 14:47:36 +03:00
alexey.lysiuk
c09f196141 - applied fast math flags to C and C++ files
Avoid copy-paste using CMake macro
2019-10-05 14:41:21 +03:00
alexey.lysiuk
ace677b8a3 - fixed: soundfont selection for FluidSynth was ignored 2019-10-05 11:23:46 +03:00
alexey.lysiuk
7780f774f9 - fixed: mode argument was ignored by utf8_fopen() on POSIX platforms 2019-10-05 11:02:19 +03:00
Dominus Iniquitatis
f13843c8ca Fixed a typo 2019-10-04 17:34:54 +02:00
alexey.lysiuk
9332316c2a - set initial vsync state after creation of framebuffer
https://forum.zdoom.org/viewtopic.php?t=66020
2019-10-04 10:46:52 +03:00
Rachael Alexanderson
0dea6fcecc - fixed a crash in the software renderer that caused wallsprites to crash
(note: there is still a bug with grabbing the texture for these)
2019-10-03 23:32:14 -04:00
alexey.lysiuk
1d9b5cb239 - 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
2019-10-03 12:22:46 +03:00
alexey.lysiuk
ad3327bdf5 - fixed compilation of Cocoa backend
src/posix/cocoa/st_start.mm:63:7: error: redefinition of 'FBasicStartupScreen'
2019-10-02 10:57:39 +03:00
Christoph Oelckers
b0acfc3ce6 - 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.
2019-10-01 23:00:13 +02:00
Christoph Oelckers
5179a69fdb - don't let Vulkan access the vid_vsync variable directly.
Since the FrameBuffers have a SetVsync method anything these last set must count, not the global variable directly.
2019-10-01 20:50:15 +02:00
Christoph Oelckers
b9d4e77214 - eliminate a little bit of redundancy. 2019-10-01 20:13:40 +02:00
Christoph Oelckers
d2c156224b - 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.
2019-10-01 20:04:46 +02:00
Christoph Oelckers
86ab366958 - some reformatting on exit code, mainly to make searching for the content easier. 2019-10-01 19:06:28 +02:00
Christoph Oelckers
f3219ca979 Merge branch 'master' of https://github.com/coelckers/gzdoom 2019-10-01 15:26:57 +02:00
Christoph Oelckers
241a47602b - small fix 2019-10-01 15:24:17 +02:00
alexey.lysiuk
8ff51ca129 - fixed build issues with POSIX targets 2019-10-01 12:06:24 +03:00
Christoph Oelckers
338ae15a4c - 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.
2019-10-01 01:37:21 +02:00
Christoph Oelckers
ff40bcd178 - moced I_DetectOS call into D_DoomMain
This requires the console and was the reason for this strange setup.
2019-10-01 01:02:49 +02:00
Christoph Oelckers
a1a73ef2b3 - 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.
2019-10-01 01:00:37 +02:00
Christoph Oelckers
9f15efc5f5 - also put the Windows system specific exit handlers into atexit's list
Again, these have no place in the game's own uninit code.
2019-10-01 00:51:14 +02:00
Christoph Oelckers
eae593b1f5 - put SDL_Quit into the atexit queue instead of atterm
System exit procedures should not go in there.
2019-10-01 00:44:28 +02:00
Christoph Oelckers
12440bbca3 - new exception class for quitting the game
This will eventually replace the atexit mess, right now it isn't used.
2019-10-01 00:43:12 +02:00
Christoph Oelckers
e7c388dccd - don't throw exceptions before the system isn't initialized
If the window cannot be opened this has no way to report the problem. In this case a message box is needed.
2019-10-01 00:42:21 +02:00
Christoph Oelckers
42a54ef545 - copied the restart cleanup code into its own function 2019-10-01 00:30:44 +02:00
Christoph Oelckers
282047e67c - added a mapping table from DOS-IBM-437 to Unicode
This is for future use, added now so that it won't get lost.
2019-10-01 00:26:07 +02:00
Christoph Oelckers
2a3205200f - reordered a few things in the startup procedure
Mainly done to isolate the calls that actually manipulate the global frame buffer.

V_Init alsoi initialized some palette data, which was moved to V_InitPalette and did something entirely different when running a restart as opposed to an initial start.
2019-10-01 00:21:51 +02:00
Christoph Oelckers
a2883cdf39 - added missing return to the GENMIDI loader. 2019-10-01 00:11:41 +02:00
Braden Obrzut
63f2bf7ae3 - Document limitation of TArray and silence warnings about non-trivial types being trivially moved 2019-09-30 20:45:52 +02:00
Alexander
ff9715c080 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.
2019-09-30 20:07:45 +02:00
Alexander
0c2ed71cdd fix bug when down arrow gave no result after mouse move in main menu
Steps to reproduce:
1. Load game.
2. Press any key to bring up the main menu.
3. Move the mouse anywhere out of the menu entries.
4. Press Down arrow.

Expected result: the menu cursor sound is played, the first menu element is selected.
Actual result: the menu cursor sound is played, no menu element is selected.

Repeated Down arrow pressing doesn't give any result, either.

If on step 4 Up arrow is pressed, the last element in the menu is selected.
2019-09-30 20:04:44 +02:00
Christoph Oelckers
9bb8da2533 - fixed the CDDA check to not catch all RIFF files. 2019-09-30 19:57:47 +02:00
Christoph Oelckers
a76cdd0946 - 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.
2019-09-30 19:41:03 +02:00
Christoph Oelckers
83e8e5535d - fixed compilation on Windows. 2019-09-30 18:21:34 +02:00
Christoph Oelckers
2b87941d7d Merge branch 'master' into zmusic_work
# Conflicts:
#	src/sound/music/i_musicinterns.h
2019-09-30 17:48:34 +02:00
Christoph Oelckers
c61e8ada86 - 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.
2019-09-30 03:01:33 +02:00
Christoph Oelckers
2bc72f38cc - renamed a few functions in the public interface of ZMusic. 2019-09-30 02:40:22 +02:00
Christoph Oelckers
02507effe8 - moved the music loader code to ZMusic.
This was the final piece of code reorganization.

What's left is cleaning up the interface.
2019-09-30 02:35:47 +02:00
Christoph Oelckers
c42deda6e6 - cleanup of the remaining music code in the main project 2019-09-30 02:31:12 +02:00
Christoph Oelckers
d0cf21654e - 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.
2019-09-30 02:22:53 +02:00
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