NBlood / Rednukem / PCExhumed - r11559
8b1ff9315 | [Evan Ramos] Merge remote-tracking branch 'eduke32/master'
48c8d3b4b | [Evan Ramos] SW: Remove pre-release software warning
aee713b59 | [Evan Ramos] Synchronize file extensions for GRP scanning between Duke 3D and SW
This way running both from the same folder won't invalidate the cache.
ba2dc6978 | [Evan Ramos] SW: Add forgotten call to FreeGroupsCache()
f8286c718 | [Evan Ramos] SW: Fix warning: function 'MNU_ClearFlags' is not needed and will not be emitted [-Wunneeded-internal-declaration]
0e9331843 | [Evan Ramos] SW: Fix music volume slider
7c9331a21 | [Evan Ramos] SW: Add FOV slider
3e9cbdd65 | [Evan Ramos] SW: Add "Game Saved" message
c1db471dd | [Evan Ramos] SW: Fall back gracefully if map mirror tags are not fully correct
1fe56a764 | [Evan Ramos] SW: Instrument Saveables with debug_break
c19a28c85 | [Evan Ramos] SW: Add PanelSpriteFunc values to saveables
07df0ebb7 | [Evan Ramos] SW: Afraid that we should disable almost all kinds of SOs in multiplayer for now, due to possible jitters. Currently leaving remote-controlled SOs.
bb3ead12e | [Evan Ramos] SW: Call FunctionKeys from getinput only if the latter is called from faketimerhandler. This should fix the timing of playing an RTS file's sound and sending the corresponding message.
5e14c8f90 | [Evan Ramos] SW: Fix aiming in coop view
00ed85d50 | [Evan Ramos] SW: Don't interpolate a non-remote sector object controlled by the player. Make sure looking up/down is still smooth.
5ea24e827 | [Evan Ramos] SW: Disable interpolation of sector objects that don't move as smooth as possible in multiplayer
cac10455d | [Evan Ramos] Store sector object interpolation data in saved game
8a4c9ba0e | [Evan Ramos] Remove the preceding sprite interpolation functions, not needed anymore
95485ac55 | [Evan Ramos] SW: Let's make use of interpso.*. Still need to do a few more things.
b7dbf6221 | [Evan Ramos] Add Sector Object interpolation menu toggle; Still having no impact.
d3c0b9e1e | [Evan Ramos] SW: Add the currently-unused interpso.* files, enabling interpolation of sector objects as whole groups of points and sprite angles.
The following goals are intended to be achieved with this code:
- Make it easy to let the user toggle sector object interpolation.
- Interpolate the angles of sprites carried by sector objects.
- Use the right amount of samples for interpolating a sector object,
depending on the players' locations, as done in the checks within
DoSector. Unfortunately, modifying DoSector itself to
unconditionally call MoveSectorObjects(sop, synctics) technically
changes the way sectors move (in the logical sense), and was
found out to make a specifically constructed user map unbeatable.
- Make it easy to disable interpolation of a whole sector object in
case of a need. This is especially important if such an object
is controlled by a player in multiplayer, mostly since this
isn't compatible with the way player prediction is working.
9ea0503b0 | [Evan Ramos] SW: Add the currently unused InterpolateSO option. A known issue, which also applies to existing settings like the voxel toggle, is that its value gets written to the saved game, and when such a game is loaded, the its value gets overwritten by the one in the saved game. Options should move to settings.cfg later, anyway.
c7125c9dd | [Evan Ramos] SW: Add the oangdiff field to USER struct as suggested by Hendricks, and use it in MovePoints. This will be used for interpolating the angles of sprites carried by SOs soon.
999a491c7 | [Evan Ramos] SW: Interpolate the player's bob_z, based on suggestion by Striker. Using pp instead of ppp seems to work better with prediction.
2b1a271cb | [Evan Ramos] sw/src/network.cpp: Disable most of the packet transmission debug messages unless NET_DEBUG_MSGS is defined
c3773c20d | [Evan Ramos] sw/src/draw.cpp: Import from Duke3D the Polymost shadow drawing hacks
dbf1e3736 | [Evan Ramos] sw/src/network.cpp: Fix waitforeverybody in Master/Slave modes. This uses SVN r1135 and r1143 as a reference.
6f4e76862 | [Evan Ramos] sw/src/network.cpp: Fix sending of messages in Master/Slave. Thanks Dynamo for spotting the bug.
4a8175566 | [Evan Ramos] sw/src/draw.cpp:analyzesprites: Interpolate other players' sprites, in a similar manner to what's done in Duke3D (with the addition of the angle).
There seem to be some jitters with this, mostly in Master/Slave mode.
Decreasing PAKRATE in mmulti.cpp might also increase the frequency
of this occuring in Peer-2-Peer mode.
989cc96df | [Evan Ramos] sw/src/jsector.cpp:JS_DrawMirrors: Make camera oscilation less dependent on the frame rate. It would probably be better to update this from the game loop side, like in Duke3D, but it's still better than the preceding situation.
9d6c8da02 | [Evan Ramos] SW: Q16.16 refinements in DoPlayerDeathFollowKiller.
1f5442791 | [Evan Ramos] SW: Add GetDeltaQ16Angle.
4c71e46e3 | [Evan Ramos] Add PedanticQ16AngleFloor to sw/src/game.h and use it in DoPlayerTurn
0c6a86e0b | [Evan Ramos] SW: Remove drive_oangvel from PLAYERstruct. We can use local variables instead.
b2b278767 | [Evan Ramos] SW - Hopefully a better way to decide if getinput should call DoPlayerTurn/DoPlayerHorizon while input is tied to the frame rate: Introduce the new player flags PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM. Set PF2_INPUT_CAN_TURN if DoPlayerTurn can be called outside of getinput. Similarly set PF2_INPUT_CAN_AIM if DoPlayerHorizon can be called in this manner. getinput will only call DoPlayerTurn/DoPlayerHorizon if PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM is set. These flags are reset right before the call to the player's current DoPlayerAction function.
For one example in which this assists, it's not always the
case that DoPlayerDeathFollowKiller may call DoPlayerTurn,
even if we assume that pp->input.q16angvel is never zero.
dd867e71f | [Evan Ramos] SW: Temporarily lock angle and horiz right upon player death
f2d8af9bc | [Evan Ramos] sw/src/draw.cpp:drawscreen: Don't interpolate while the game is paused
bcddc01a9 | [Evan Ramos] sw/src/game.cpp: Remove unused ReloadPromptMode variable
3cdeeab05 | [Evan Ramos] Minor SW cleanup: Have a single declaration of GamePaused within game.h. Do the same with ReloadPrompt.
30eb858f8 | [Evan Ramos] SW: Migrate the player's RevolveAng field to Q16.16 format. This fixes truncations of q16ang in MovePlayer. One known fixed issue is a minor micro-shaking effect, reproduced while standing on a non-moving SO (e.g., the bus in level 1). The latter is also related to the use of camq16ang.
Based in idea on patch from mjr4077au.
82c02f420 | [Evan Ramos] sw/src/draw.cpp:drawscreen: Use GetQ16AngleFromVect for pointing at a remote-controlled SO. In case PedanticMode == FALSE, this leads to small improvements with aiming at the car in EXAMPLE.MAP.
bdd4cd86f | [Evan Ramos] Add GetQ16AngleFromVect wrapper function to sw/src/game.h
9bdb87cea | [Evan Ramos] Add gethiq16angle and the getq16angle wrapper to the engine
c8887525e | [Evan Ramos] SW: Lock angle and horiz right after teleporting to sprite
1a3c9e3a1 | [Evan Ramos] sw/src/draw.cpp:drawscreen: Removing the check that pp->sop_control is non-null seems to resolve the newly introduced interpolation issue for looking up/down while controlling a sector object. We can also remove the PF_DEAD test, since game.cpp:getinput should lock any kind of aiming.
src/src/game.cpp:getinput: We now, however, need to further
lock turning here while controlling a sector object.
5e6acf23d | [Evan Ramos] SW: Ensure the player's rendering angle is in sync with a rotating sector. This re-introduces the angle interpolation in drawscreen while sector object interpolation is in use.
A side-effect of this is that looking up/down is now less smooth
while controlling a sector object (e.g., a turret).
966e9bdb5 | [Evan Ramos] sw/src/track.cpp:MovePlayer: We also need to update pp->camq16ang here. Note that this angle is currently not interpolated, as done for the sector.
bf31bc298 | [Evan Ramos] sw/src/track.cpp:MovePlayer: Missed this in preceding interpolation fixes
ab8aee8e3 | [Evan Ramos] sw/src/track.cpp: If interpolation is enabled, also cover the SO's midpoint. Fixes aiming at a remote controlled SO.
2e2e0e3af | [Richard C. Gobeille] audiolib: fix buffer overflow crash
a868d2a0e | [Richard C. Gobeille] Duke3d: block horiz input while the player view is returning to center
dc46c60e9 | [Evan Ramos] Duke3D: Disable dead code in implementation of undocumented SE 128
Avoids warning: bitwise or with non-zero value always evaluates to true [-Wtautological-bitwise-compare]
7ea9abc4e | [Evan Ramos] KenBuild: Fix redundant sqr/ksqr functions
a7820e669 | [Evan Ramos] KenBuild: Fix -Wformat warnings
53dec9835 | [Evan Ramos] Link with -pthread when building with clang on Windows
52cad3a8e | [Evan Ramos] fix16: Add FIXMATH_FUNC_ATTRS to relevant function definitions
Avoids warning: missing exception specification [-Wmissing-exception-spec]
365d3c941 | [Evan Ramos] screentext: Change TEXT_* from enums to #defines
Avoids warning: bitwise operation between different enumeration types is deprecated [-Wdeprecated-enum-enum-conversion]
5f2229f6d | [Evan Ramos] ENet: Move ENET_PROTOCOL_COMMAND_FLAG_* to ENetProtocolCommand
Avoids warning: bitwise operation between different enumeration types is deprecated [-Wdeprecated-enum-enum-conversion]
781a84e7c | [Evan Ramos] debugbreak.h: Use FORCE_INLINE macro instead of attributes
Avoids warning: 'gnu_inline' attribute without 'extern' in C++ treated as externally available, this changed in Clang 10 [-Wgnu-inline-cpp-without-extern]
96a29cecf | [Evan Ramos] BuildGLErrorCheck: Avoid C++20 -Wvolatile warning
9bf7e41be | [Evan Ramos] Replace deprecated is_pod with is_standard_layout && is_trivial
8c39e5970 | [Evan Ramos] compat.h: Add CXXSTD definition for C++20
7053134e4 | [Richard C. Gobeille] Remove GitLab CI/CD configuration
Synthesis builds are now kicked off with a post-commit hook.
22a0cc6d6 | [Richard C. Gobeille] MSVC: remove LIBXMP_CORE_DISABLE_IT preprocessor definition
This seems to fix memory corruption issues with .xm playback... ???
0b14f61b4 | [Richard C. Gobeille] engine, audiolib: clean up most SDL_MAJOR_VERSION checks so they're relative to version 2
9462774c9 | [Richard C. Gobeille] engine: comment the reason SetWindowGrab exists
d15855499 | [Richard Gobeille] Fix trains not moving spawn points with higher indexes than player count.
74da38c9c | [Richard C. Gobeille] Duke3d: use timerGetPerformanceCounter() instead of timerGetHiTicks() for CON performance profiling
0fb637fd9 | [Richard C. Gobeille] Duke3d: move gameHandleEvents() (and therefore system event pumping) back to directly in the main loop
I'm hoping this is OK now that the issues with SDL and GetClipCursor() have been worked around.
0f6a696a6 | [Richard C. Gobeille] engine: bypass SDL_SetWindowGrab on Windows
0f6398abd | [Richard C. Gobeille] Duke3d: make CON_GETFLORZOFSLOPE and CON_GETCEILZOFSLOPE TROR aware
a73e8e6e9 | [Richard C. Gobeille] engine: add yax_getflorzofslope() and yax_getceilzofslope()
28f04d094 | [Richard C. Gobeille] Duke3d: restore previous version of VM_ASSERT macro for compilers other than MSVC
dfb6ed351 | [Richard C. Gobeille] engine: make cliptestsector() (used by clipmove(), etc) TROR aware
This is intended to help with issues where enemies get stuck in thin TROR layers.
329c25d4b | [Evan Ramos] screentext: Guard new !(o & RS_TOPLEFT) behavior behind TEXT_VARHEIGHT
f978d49b2 | [Evan Ramos] Menus: Use MF_Minifont struct for shadowminitext and creditsminitext
597dbfa25 | [Richard C. Gobeille] audiolib: revert Vorbis handling to standard memory allocation instead of cache1d
297e5e2d1 | [Richard C. Gobeille] engine: clean up classic mode sloped sprite drawing a little
99ca1255d | [Richard C. Gobeille] Duke3d: flip CON_USE_COMPUTED_GOTO dispatch macro logic around so the branch is taken less often
85bf4c04b | [Richard C. Gobeille] Duke3d: change random_angle hack in CON_MOVE to match CON_AI
4022d4405 | [Richard C. Gobeille] Duke3d: zero player return_to_center when setting horizRecenter to false
94bdfe1a2 | [Richard C. Gobeille] Duke3d: convert several more VM error checks into VM_ASSERT statements
9d4880776 | [Richard C. Gobeille] Duke3d: VM_ASSERT fix
1284ab266 | [Richard C. Gobeille] audiolib: minor XMP support cleanup
Ditches the struct full of unused members.
797ee637a | [Richard C. Gobeille] audiolib: minor cleanup to the dummy playback functions used when missing support for a format
0af5a215a | [Richard C. Gobeille] VS project: add driver_alsa.h and driver_alsa.cpp
8914e7b6a | [Richard C. Gobeille] Revert "Update libxmp-lite"
This reverts commit dd86318e14f78f2e428e747aa4c3dcfb360b1204.
60625fb39 | [Richard C. Gobeille] audiolib: bring MV_ReleaseVorbisVoice() in line with the other MV_ReleaseVoice() functions
b1cbe0267 | [Richard C. Gobeille] audiolib: factor common code from MV_AllocVoice() and MV_VoiceAvailable() into new MV_GetLowestPriorityVoice() function
687dde700 | [Richard C. Gobeille] audiolib: this commit is literally nothing but "auto"
7b8dc310f | [Richard C. Gobeille] audiolib: useless formatting
edf0962c6 | [Richard C. Gobeille] audiolib: skip voices without rawdataptr set
This shouldn't really ever happen, but I'm trying to figure out an elusive crash.
65c367a9f | [Richard C. Gobeille] Revert "Duke3d: set .horizRecenter when handling SK_CENTER_VIEW"
This reverts commit ef06d8c3dba3e4ccf9388bf31404ab23ebdcb37e.
78c8593ed | [Richard C. Gobeille] Duke3d: replace VM_CONDITIONAL macro with a lambda
7ad1cf177 | [Richard C. Gobeille] Duke3d: this is intended to fix an issue where CON VM errors within a CON_FOR loop could cause an infinite loop
e6fefb59d | [Richard C. Gobeille] Duke3d: add a few missing VM_ASSERT checks
543d0ac23 | [Richard C. Gobeille] Fix playback hang in Windows MME MIDI driver
711f59f8e | [Richard C. Gobeille] engine: add mutex_try()
Not used anywhere yet.
9e682b35d | [Richard Gobeille] Duke3d: interpolate player view angle when dead
1374c8b3a | [Richard Gobeille] ALSA code cleanup/standardization
0b0e9923c | [Richard Gobeille] Merge branch 'AudioLib_ALSAMIDI' into 'master'
audiolib: Import ALSA MIDI support from JFAudioLib and patch through the menu system as appropriate.
See merge request terminx/eduke32!5
79e457cbe | [Richard Gobeille] source/audiolib: Initial commit of ALSA MIDI code from jfaudiolib, with EDuke32 audiolib-specific changes as required.
02aae9426 | [Richard C. Gobeille] Duke3d: fix OOB memory access in CON_FOR
ef06d8c3d | [Richard C. Gobeille] Duke3d: set .horizRecenter when handling SK_CENTER_VIEW
This seems so obvious that I almost think I intentionally left it out before, but I can't remember why I would have.
5b3b3a140 | [Richard C. Gobeille] Duke3d: zero .horizAngleAdjust and .horizSkew after checking playerquitflag instead of before
I don't think this actually makes a difference, but it's more consistent.
ee44e834a | [Richard C. Gobeille] Duke3d: zero .horizSkew in P_DoJetpack()
da5d130c9 | [Richard C. Gobeille] Duke3d: fix bug with sound device configuration menu
This fixes an issue where the values for the options in the device configuration menu weren't being populated when entering the device configuration menu from the in-game sound menu (F4) without having entered the regular sound menu by navigating to it through the main menu first.
46c0b1b3e | [Richard C. Gobeille] Duke3d: zero player .horizRecenter, .horizSkew, and .horizAngleAdjust in P_ResetPlayer()
c1bc5e421 | [Richard C. Gobeille] audiolib: add nullptr checks to MV_ReleaseXMPVoice(), MV_ReleaseFLACVoice(), and MV_ReleaseXAVoice()
38bb54b75 | [Richard C. Gobeille] audiolib: disable mus_xmp_interpolation cvar and hard-code XMP interpolation to XMP_INTERP_NEAREST
Both linear and spline interpolation seem to be broken with some of the .xm tracks in Ion Fury.
3e43bed62 | [Richard C. Gobeille] Duke3d: allow SE_14_SUBWAY_CAR to move STAT_PLAYER sprites
af5d96cab | [Richard C. Gobeille] Duke3d: hoist checks for ST_2_UNDERWATER outside of loops in SE_14_SUBWAY_CAR processing
71a7f4a79 | [Richard C. Gobeille] Duke3d: remove interpolation fixups from subway
These aren't needed anymore after Striker's patch to improve overall interpolation.
0c956619d | [Richard C. Gobeille] Duke3d: fix APLAYER radius damage distance calculation regression
b8c077170 | [Richard C. Gobeille] audiolib: slightly clean up fix16 usage for volume
6ad4f7ba0 | [Richard C. Gobeille] audiolib: fix crash when a configuration file contains mus_xmp_interpolation but multivoc isn't initialized when the cfg is parsed
f70802932 | [Richard C. Gobeille] Get rid of FIXMATH_NO_OVERFLOW
We're explicitly using the functions that rely on the overflow detection functionality, so this will never be useful to us.
67bc82c57 | [Richard C. Gobeille] audiolib: reset rawdataptr to nullptr in MV_ReleaseVorbisVoice()
This also resets wavetype to FMT_UNKNOWN in MV_CleanupVoice(), and moves the resetting of a few structure members common to different voice types there.
472cb8416 | [Evan Ramos] Game-side locale stuff: save menu, TEXT_NOLOCALE, ':' captions
ef469091b | [Evan Ramos] G_ScreenText: Replace alloca with dedicated heap buffer
8ae26a42b | [Evan Ramos] Fury: Disable drawing color correction menu tiles
b545e719b | [Evan Ramos] Menus: Draw title bar text with y-centering
(No difference with Duke.)
18125453f | [Evan Ramos] Fury: Shrink menutext zoom and introduce ypadding
1d6a45627 | [Evan Ramos] Fury: Remove orientation 16 from hardcoded text drawing
4c89f58cf | [Evan Ramos] screentext: Change behavior when RS_TOPLEFT is not set
Add internal standardhalfheight and tilesizx
9558d76e2 | [Evan Ramos] TileFont
5260da850 | [Evan Ramos] Locale
26f683cad | [Richard C. Gobeille] audiolib: work around crash when ov_read fails
13a90f046 | [Richard C. Gobeille] Duke3d: fix level warp and skill cheats in the cheat menu
613565b7c | [Richard C. Gobeille] audiolib: call ov_clear before telling cache1d the block of memory can be reused!
39bed3e89 | [Richard C. Gobeille] audiolib: minor optimization to MV_SetVoiceMixMode()
0aabd7f55 | [Richard C. Gobeille] Mapster32: disable error message printed when m32help.hlp is missing
f9d0f1186 | [Richard C. Gobeille] Clarify clipupdatesector() log message a bit
198d5bcee | [Richard C. Gobeille] Derp...
Probably actually fixes #4. Regardless, I want to note that this is really sub-optimal.
fca35e8eb | [nukeykt] Properly display non power of 2 floor aligned sprites in 2d mode
0f5414e94 | [Richard C. Gobeille] Fix G_PlaySoundWhileNoInput()
734dddbea | [Richard C. Gobeille] Fix crash with CONs that only define one skill
c2ed7ae28 | [Richard C. Gobeille] Fix really stupid error with CON_NULLOP branch detection
e6a2bcc71 | [Richard C. Gobeille] Fix a crash with tabledivide64()