Commit graph

772 commits

Author SHA1 Message Date
drfrag
004b48d62f - Blind attempt at adding support for 4 XInput controllers. 2020-01-13 13:19:34 +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
alexey.lysiuk
a7796b8ffb - fixed debugger visualization for FSoundID 2020-01-06 14:38:54 +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
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
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
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
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
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
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
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
81d54959af - sorted sound backend code into subdirectories.
# Conflicts:
#	src/CMakeLists.txt
2020-01-04 21:32:02 +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
d2fe30cd93 - added Visual Studio debugger visualization for several types 2019-10-24 13:25:22 +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
a1e19657f9 - Added support for PrtSc and cosmetic changes. 2019-09-22 19:34:56 +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
alexey.lysiuk
95f0f7eadd - cleaned up language detection leftovers
# Conflicts:
#	src/posix/sdl/i_system.cpp
2019-07-17 18:14:53 +02:00
drfrag
c3482b75fc - Make joystick input in the background CVAR controlled. 2019-07-03 20:52:03 +02:00
Magnus Norddahl
fc38b6bbf9 - fix querying for the wrong interface when the UNICODE define is set 2019-06-30 21:41:28 +02:00
Magnus Norddahl
36b7a7d189 - remove dead code 2019-06-30 21:41:25 +02:00
drfrag
ed0890c7b6 - Allow acquiring DirectInput joysticks in the background for fake splitscreen. 2019-06-28 02:47:42 +02:00
Magnus Norddahl
4cd535b3b6 - add vid_hdr cvar that enables higher than 8bpc output for monitors that support it
# Conflicts:
#	src/v_video.cpp
#	src/win32/win32glvideo.cpp

# Conflicts:
#	src/gl/renderer/gl_postprocess.cpp
2019-06-20 20:48:42 +02:00
Christoph Oelckers
b473fc936c - consolidated the 3 atterm implementations.
Each platform had its own copy. Why?

# Conflicts:
#	src/CMakeLists.txt
#	src/dobjtype.cpp
#	src/g_mapinfo.cpp
#	src/g_statusbar/sbarinfo.cpp
#	src/i_net.cpp
#	src/menu/menudef.cpp
#	src/p_setup.cpp
#	src/posix/cocoa/i_video.mm
#	src/posix/i_system.h
#	src/posix/sdl/i_main.cpp
#	src/r_utility.cpp
#	src/s_advsound.cpp
#	src/s_sound.cpp
#	src/v_video.cpp
#	src/win32/i_input.cpp
#	src/win32/i_system.h

# Conflicts:
#	src/CMakeLists.txt
#	src/doomtype.h
#	src/i_net.cpp
#	src/posix/sdl/i_system.cpp
#	src/win32/i_system.cpp
#	src/win32/win32video.cpp
2019-06-10 20:52:02 +02:00
drfrag
dd4807a6ee - Added new great icons by Tormentor667. 2019-05-30 00:05:02 +02:00
Christoph Oelckers
52b8c02fdf - use the Unicode version of GetCommandLine for the crash log. 2019-05-14 19:09:24 +02:00
alexey.lysiuk
d85fb785eb - fixed missing command line in crash reports
https://forum.zdoom.org/viewtopic.php?t=64149
2019-05-14 19:09:22 +02:00
Christoph Oelckers
f026198a8d - set a Unicode capable font for the Windows console.
The default raster font only contains the OEM 437 code page which is quite useless.
2019-05-14 18:42:33 +02:00
Christoph Oelckers
b14a48d2dc - fixed Windows startup.
* the window class name was still ASCII, thanks to some totally pointless and ultimately dangerous type cast to LPCTSTR which rendered all type checks ineffective.
* use wWinMain instead of WinMain so that a Unicode argv gets created. For whatever reason, the ANSI startup leaves this variable empty.
* added a 'disablecrashlog' CCMD for Windows. It is a lot more useful with a debugger present to get the standard crash notification from the system which allows opening a debugger than the crash log and no option to open a debugger.
2019-05-14 17:20:30 +02:00
Christoph Oelckers
163d3395b8 - fixed crash log display.
This still contained pieces where a multibyte string was passed through SendMessage and WM_SETTEXT. All these have been replaced with SetWindowTextW.
This commit also removes the never used crash log upload code and all associated assets because it is extremely unlikely that such a feature will ever be implemented.
2019-05-14 17:20:17 +02:00
Rachael Alexanderson
9b8ec98f78 - fix building in 32 bit windows 2019-05-14 17:16:15 +02:00
Christoph Oelckers
9030289e1e - use the Unicode version of Windows's clipboard functions. 2019-05-14 17:10:00 +02:00
Christoph Oelckers
4c9e6853b1 - made Windows backend parts of the console Unicode capable.
# Conflicts:
#	src/c_console.cpp
#	src/v_font.cpp
#	src/win32/i_system.cpp
2019-05-14 17:05:40 +02:00
drfrag
77498e2740 Revert "- Applied some Blzut3 patches to compile with MinGW."
This reverts commit ad5959b827.

Compilation with vanilla MinGW is broken since the changes to the HQ resize modes anyway.
2019-05-14 16:32:39 +02:00
Christoph Oelckers
8d157f3ced - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.

# Conflicts:
#	src/rendering/hwrenderer/postprocessing/hw_postprocess.h
#	src/win32/base_sysfb.cpp
#	src/win32/i_main.cpp
#	src/win32/win32basevideo.cpp
#	src/win32/win32glvideo.cpp

# Conflicts:
#	src/version.h
#	src/win32/i_main.cpp
#	src/win32/i_system.cpp
#	src/win32/optwin32.h
#	src/win32/win32gliface.cpp
#	wadsrc/static/language.enu
2019-05-14 16:17:05 +02:00
drfrag
411169bc46 - fixed: GetDisplayDeviceName must always pick a valid monitor.
There is no default here, so if vid_adapter is invalid for whatever reason the engine would crash without a defined setting.
(patch by Graf)
2019-05-02 17:28:25 +02:00
Christoph Oelckers
3158826ec0 - removed the automatic system language detection for Windows.
Default language is now always American English, just like on Linux and macOS.

# Conflicts:
#	src/g_cvars.cpp
#	src/gamedata/stringtable.cpp
#	src/textures/texturemanager.cpp

# Conflicts:
#	src/win32/i_system.cpp
2019-04-29 17:42:54 +02:00
alexey.lysiuk
0d968d0943 - replaced all usages of insecure vsprintf() function 2019-04-28 22:58:48 +02:00