NBlood / Rednukem / PCExhumed - r12371
---
869d85ea1 | [Evan Ramos] Merge remote-tracking branch 'eduke32/master'
3191b5f41 | [sirlemonhead] SW: Scroll through command history in the same order as original release of the game.
1a120803e | [sirlemonhead] SW: Simplify game's command history to remove a bunch of strcpy()s. Also fixes ASAN error.
9b7bd5ad7 | [Dino Bollinger] Duke3D: Prevent double allocation of qputs strings inside a switch.
Fixes terminx/eduke32#102
2b4fa55fb | [sirlemonhead] SW: Prevent invalid array access in drawoverheadmap()
df7d573e1 | [Dino Bollinger] Duke3D: Do not apply crouch speed modifier when shrunk
Fixes terminx/eduke32#108
39ac4bc84 | [Dino Bollinger] Duke3D: Replace klabs(x) with max(0, x) in overhead sprite computation
Fixes terminx/eduke32#139
458cfc8e9 | [sirlemonhead] SW: Wrap index to sintable with NORM_ANGLE() in PlayerOnLadder() to prevent overflow.
6733535fe | [sirlemonhead] SW: Don't allow backspacing on an empty text input buffer
73aac5b2d | [Dino Bollinger] Duke3D: Disable midi driver menu items when music is off
Changing the values while the music is off is not supposed
to be possible. Disable the menu items for consistency.
b10f9112e | [Dino Bollinger] Engine: Fix problems when changing renderer after having seen a mirror
If the player saw a mirror at some point while playing in Polymer,
his view would get messed up on changing renderer. This fixes that.
Fixes terminx/eduke32#49 and terminx/eduke32#50
1c63be27c | [Dino Bollinger] Duke3D: Do not spawn the dummyplayer sprite when standing on TROR water
Fixes terminx/eduke32#76 and terminx/eduke32#91
1d13a4d4c | [Dino Bollinger] Duke3D: Fix bug that prevents active enemies from crushing the player
Fixes terminx/eduke32#53
028928223 | [Dino Bollinger] Duke3D: Fix usermap not reloading properly after opening newgame menu
Fixes terminx/eduke32#63
d89344059 | [Dino Bollinger] Duke3D: Fix ST 30 sectors playing the wrong sound after save load
Fixes terminx/eduke32#75
f4ec044ea | [Dino Bollinger] Duke3D: Fix GTK window searching wrong path for custom game directories
Also made it respect the user_profiles_disabled file.
Fixes terminx/eduke32#73
891bbb927 | [Dino Bollinger] Alter modeline that causes Vim to complain
ddb266f07 | [Dino Bollinger] SW: Clean up boss music code. Remove unnecessary calls and checks
a29f2436d | [Richard C. Gobeille] mact: don't attempt to decode animation frames at offsets beyond the end of the current page
184e64e76 | [Richard C. Gobeille] Duke3d: make MenuAnimation_t start member uint32_t, remove menu animation reset hacks from demo playback
065284b2f | [Dino Bollinger] SW: Fix Wangulator crashing on launch
65c6a359c | [sirlemonhead] SW: When loading a level from the main menu, try play a wave/redbook music track
a7381d00c | [Richard C. Gobeille] engine: revise ae52bec9e6735770c752e9db538e0eb1782a7daa
8faeab611 | [Dino Bollinger] Mapster32: log application parameters
a1fe4ce21 | [Dino Bollinger] Duke3D: Fix RADLOGO not having the sounds of cineov3
This is required for DukeDC's ending sounds to play.
Fixes terminx/eduke32#12
cd768b4ed | [Richard C. Gobeille] Duke3d: uncomment DYNTILEREMAP_ENABLE, oops
f10a3d972 | [Richard C. Gobeille] Duke3d: rework actor zsum invalidation, skip getzrange for floor sprites in A_CheckNeedZUpdate()
Fixes terminx/eduke32#157
87711a7be | [Richard C. Gobeille] Duke3d: enable camera smoothing when setting player angles from script
Fixes terminx/eduke32#146
ad8def49f | [Richard C. Gobeille] Duke3d: animate menus independently from totalclock
Fixes terminx/eduke32#83
1bc4006f1 | [Richard C. Gobeille] engine: apply 88f90a19 to SDL 1.2 builds
307b51de4 | [Richard C. Gobeille] Duke3d, engine: hijack unused parameter passed to videoShowFrame()
A value of -1 now indicates that the GL state should be preserved.
This is used to fix terminx/eduke32#159
6144f3be2 | [Richard C. Gobeille] engine: fix warnings introduced by e0ee1bfe
f42e32adb | [Dino Bollinger] Duke3D: Update g_animPtr before and after cutscene loops
This will allow all CUTSCENE events to use the ifcutscene command.
Before, only EVENT_CUTSCENE for ANM files could use it.
8d1510221 | [Daniel Gurney] Fix ARM64 Windows build by updating SDL
33e98f55a | [sirlemonhead] SW: Set correct user volume when playing non midi music tracks
d34f542a8 | [Richard C. Gobeille] Duke3d: fix stupid typo/copy & paste error
08e1ac98b | [Richard C. Gobeille] engine: update to SDL 0c4ac33a on Windows
2e8ac3f9c | [Richard C. Gobeille] Revert "Duke3d: MASTERSWITCH counting down before activation blocks re-triggering switches"
This reverts commit 33d4dc3d3f1ff041491ac61a72076a36dcf4572c.
5857f70f1 | [Richard C. Gobeille] engine: fix Polymer rotatesprite texture clamping
Fixes terminx/eduke32#150
6ce050b43 | [Richard C. Gobeille] audiolib: replace linear search for voices by handle with a table
88f90a193 | [Richard C. Gobeille] engine: fix Discord streaming issue
Fixes terminx/eduke32#152
ae52bec9e | [Richard C. Gobeille] engine: remove wrappers around glBindTexture() and glActiveTexture() in favor of explicitly calling polymost_activeTexture() and polymost_bindTexture()
This is better for clarity, I think.
1d10d93d6 | [Richard C. Gobeille] Remove jwzgles stuff from Visual Studio project
d3746e924 | [Richard C. Gobeille] Duke3d: break from CON while loops on VM_RETURN
This should fix terminx/eduke32#16
37da4ebfe | [Richard C. Gobeille] engine: add missing check for r_useindexedcolortextures cvar in polymost_usetileshades()
Fixes terminx/eduke32#153
e0ee1bfe3 | [Richard C. Gobeille] engine: #ifdef out "POLYMOST2" stuff
dcdde6cfe | [Richard C. Gobeille] engine: allocate yax_vsp[] on heap according to map requirement
eb13ca38f | [Richard C. Gobeille] engine: fix usage of GrowArray for osdstrings
9fcccd073 | [Richard C. Gobeille] engine: fix allocator mismatch in GrowArray
d4e36c4f8 | [Richard C. Gobeille] Update Visual Studio projects
Debug is now configured to use AddressSanitizer on 64-bit, and various other build options have been made uniform with each other across all projects. This means 64-bit debug builds built with Visual Studio will only run if the VS ASan dlls are in your PATH, but I believe this is fine as we don't distribute any VS builds.
bc4358b12 | [Richard C. Gobeille] Duke3d: virtual address space bandaid fix
I didn't test this.
691e3fc19 | [Richard C. Gobeille] engine: MSVC build fix
1c760288c | [Richard C. Gobeille] Duke3d: revise dynamic tile mapping
180bede4c | [Richard C. Gobeille] Duke3d: fix overlapping strcpy in startup window
e8470bd29 | [Richard C. Gobeille] Duke3d: CON control over player height and other properties
You're gonna have to talk to me or read the source for full details on usage, sorry. These are also all still liable to change in future builds, either in name or in functionality.
4fdd8dc8c | [Richard C. Gobeille] Duke3d: per-player gravity control through .gravity member of player struct
The default value is 256 (GRAVITATIONALCONSTANT value from USER.CON + 80).
fc8230b54 | [Richard C. Gobeille] Duke3d: add left and right triggers to controller button setup menu, hide start button
37622870d | [Richard C. Gobeille] Duke3d: controller hotplug fixes
78864da31 | [Richard C. Gobeille] Duke3d: controller setup menu cleanup
This is still technically a work in progress, but it's at the point where it's definitely better than things were before.
3b3cd0e0a | [Richard C. Gobeille] Duke3d: aim assist for game controllers
A helpful side-effect of this commit is that several of the previous changes to how screen re-centering etc work can now be deterministic again, which somewhat fixes demo recording and playback. For now, recording a demo will limit input to the game tickrate like it did in the old days.
a57a6e1a5 | [Richard C. Gobeille] engine: update to SDL 814285d6 on Windows
9f75af111 | [Richard C. Gobeille] engine: FORCE_INLINE getclipmask()
d62782030 | [Richard C. Gobeille] engine: __fastcall ksqrt(), move ksqrtasm_old()
d8422c4f1 | [Richard C. Gobeille] engine: remove getkensmessagecrc()
It's beyond useless at this point and nobody ever even ported the assembly to C. I left the actual kensmessage string because I didn't want to remove a copyright declaration from the source code.
3c908cc57 | [Richard C. Gobeille] engine: rename clip_nsqrtasm() -> ksqrt_inline() since that's literally what it is
This is possibly a good candidate for outright deletion.
388457bba | [Richard C. Gobeille] engine: I can think of zero reasons for these to be templates
27c3b5ec8 | [Richard C. Gobeille] engine: don't inline ksqrtasm_old()
a16687ab1 | [Richard C. Gobeille] engine: tweak/"optimize" the C version of nsqrtasm()
Disassembly of the tweaked version versus the original is very similar, but MSVC doesn't seem to want to inline the original version without forcing it. I tested the performance of the change under GCC using a very large loop and the results were in favor of the tweaked version by a negligible margin. FORCE_INLINE was added after the fact.
7d7c1c69c | [Richard C. Gobeille] Duke3d: minor A_GetClipdist() rework
This shouldn't have any impact whatsoever on gameplay. The point was simply to eliminate branches that arrive at the same result, and reduce function calls for cases where they aren't needed (i.e. calling A_CheckEnemySprite() for sprites that are STAT_PROJECTILE).
814a94626 | [Richard C. Gobeille] Duke3d: address a possible performance issue with the newer swing door changes
e8f445f21 | [Richard C. Gobeille] engine: move wallength() helper function from editor into engine
93e249fe7 | [Richard C. Gobeille] Duke3d: fix incorrect sound_t struct member type
This didn't really affect anything because this functionality isn't exposed to CON yet.
4a5e1dbca | [Richard C. Gobeille] Duke3d: boost projectile velocity by the velocity of the projectile's owner when PROJECTILE_MOVED is unset
This is a hack intended to fix an issue introduced back in SVN r7409, where the reduced speed of a projectile during its first tic (required for fixing the issues with projectiles passing through ledges immediately in front of the player) could inadvertently allow the player to do stuff like SR50 into their own RPGs.
8ef01860b | [Richard C. Gobeille] Duke3d: remove unneeded argument from A_GetClipdist()
e4edbb172 | [Richard C. Gobeille] Duke3d: change A_MoveSprite() from taking a ptr to a ref for read-only vector data
cfe32090a | [Richard C. Gobeille] Duke3d: fix hiccup in movement at internal CAMERA1 panning transition points
The way this code works is pretty weird. It seems like the movement hiccup here was caused by intentionally skippping the state of the camera where pData[1] == 0, but I can't find anything else in the code that depends on the value of this field for CAMERA1, and fixing the hiccup causes no issues in any of the setups with panning cameras that I looked at for testing.
2f920c9c7 | [Richard C. Gobeille] Duke3d: smooth security camera view angle
88f1e53cb | [Richard C. Gobeille] engine: update SDL to db5cd8c6 on Windows
b815dca81 | [Richard C. Gobeille] Duke3d: improve menu navigation with controller analog stick
529fb65c9 | [Richard C. Gobeille] Duke3d: fix application of y axis for controllers
This shouldn't depend on the variable turning rates imposed by having run mode enabled or not.
03f813941 | [Richard C. Gobeille] audiolib: don't allow SDL to change the change the playback frequency from what was requested
This sounds good in theory, but in practice it can lead to playback rates beyond what is allowed in the menu and beyond what is supported by e.g. libxmp-lite.
a412a7c8e | [Richard C. Gobeille] Duke3d: simplify menu options to reset the controller layout to default, tweak default layout
76bc19e2e | [Dino Bollinger] Prevent negative bases for powf in videoSetGamma()
Otherwise causes NaN results. Not sure if this algorithm is even doing
what it's supposed to do, but this makes the color correction somewhat
functional again.
ec11cbc72 | [sirlemonhead] SW: Play the theme song at the user's specified volume level
39e8f1852 | [Dino Bollinger] SW: Fix commandline parameter inconsistencies and errors.
45e167f6d | [Dino Bollinger] Duke3d: Fix typo in G_CheckActivatorMotion()
189ed2930 | [Richard C. Gobeille] Duke3d: fix warnings in EDUKE32_STANDALONE build
7784da28d | [Richard C. Gobeille] Amend library build instructions to specify --disable-libc for SDL and remove instructions for SDL_mixer
b0b2ac9bf | [Richard C. Gobeille] engine: update SDL to e13b43ac on Windows
dec2f8b70 | [Richard C. Gobeille] Duke3d: move player jumping_counter check
33d4dc3d3 | [Richard C. Gobeille] Duke3d: MASTERSWITCH counting down before activation blocks re-triggering switches
97620ffbc | [Richard C. Gobeille] Duke3d: remove STATIC prefix from the CON dynamic label preprocessor definitions because it's ugly
This also adds bounds checking to the DYNAMICSOUNDMAP and DYNAMICTILEMAP macros, and reduces the size of the corresponding arrays to something more reasonable.
b4e32467f | [Richard C. Gobeille] Duke3d: preprocessor definitions for extbits, bump extbits up to uint32_t
c7b180ecf | [Richard C. Gobeille] Duke3d: preprocessor definitions for a couple more hard-coded constants
9f7b817b9 | [Richard C. Gobeille] Duke3d: fix a minor refactoring error in the player falling code
I don't think this broke anything, but I noticed it when working on the player height stuff.
bcc1cb0db | [Richard C. Gobeille] engine: update to SDL 2af3f64e on Windows
da291bb1e | [Richard C. Gobeille] Update gamecontrollerdb.txt
bad1649c0 | [Richard C. Gobeille] Duke3d: revise 06d30fafbcac5fb3b3e9b0ea74bf2906cabc7567
15b657827 | [Richard C. Gobeille] engine: move crc16 functions into main engine definitions
52d445555 | [Richard C. Gobeille] editor: artdump tile range support
36416d20d | [Richard C. Gobeille] engine: fix sloped sprite drawing error
fa750c6db | [Richard C. Gobeille] Duke3d: expose gotsector[] to CON for checking to see if a particular sector was drawn during the last frame
f66d2f34e | [Richard C. Gobeille] engine: update gotsector[] in polymer_drawsector()
f6ee47e2b | [Richard C. Gobeille] Duke3d: first pass at implementing rotatesprite position interpolation for the weapons and hands and whatnot
f898677f2 | [Richard C. Gobeille] engine: RS_FORCELERP overrides flags check
b924fabe0 | [Richard C. Gobeille] engine: basic support for rotatesprite position interpolation
This is only really in the engine to avoid codedup across all supported games.
8f6358260 | [Richard C. Gobeille] Mapster32: fix drawing bug with highlighted sectors in 2d mode
55d3b5a28 | [Richard C. Gobeille] Duke3d: update SE enums
fbf4ab594 | [Richard C. Gobeille] Duke3d: ACTIVATOR/MASTERSWITCH parity for SE2, SE3, SE18, SE21, SE31, SE32, and SE36
6111ca311 | [Richard C. Gobeille] Duke3d: remove added distance check from sound playback
This fixes a longstanding bug with the TELEPORTER sound. Unfortunately, I no longer remember what problem this distance check was added to address.
645941b8f | [Richard C. Gobeille] Duke3d: change goofy picnum check I didn't like
ec133d2c2 | [Richard C. Gobeille] Duke3d: pal 23 MASTERSWITCH repeat activation
ab07a4d3a | [Richard C. Gobeille] engine: force feedback support for SDL backend
This is most of the work to support force feedback (rumble) for controllers, but it isn't hooked up to anything yet. Your controller will rumble once during game startup.
0578f9003 | [Richard C. Gobeille] Duke3d: reclaim a ridiculous amount of wasted space in the player struct
This converts the storage for LOOGIE sprite coordinates to vec2_16_t and reduces the storage to 6 sets of coordinates, the max the game uses.
c02417145 | [Richard C. Gobeille] Duke3d: experimental game controller tweak to level the player's view while moving
c435ccbf5 | [Richard C. Gobeille] Duke3d: experimental game controller tweak to weight aiming movement toward whichever axis has the highest input
Enable with the 'in_joyweight' cvar. Values are 1-10, 0 for disabled.
07ac4ecc4 | [Richard C. Gobeille] engine: print game controller s/n to log when initializing controller
9221df25d | [Richard C. Gobeille] mact: minor formatting/cleanup
cc7d7b21d | [Richard C. Gobeille] Duke3d: hide buttons missing from the current controller in the controller setup menu
1c9f53685 | [Richard Gobeille] engine: game controller hotplug support
de0ed7125 | [Richard C. Gobeille] Duke3d: don't show button double press options for controllers in the menu
The support will remain internally, but these aren't useful for the vast majority of users using modern controllers, serving only to overwhelm them with options that are of limited use. This has the bonus of letting the entirety of the standard Xbox controller's buttons fit on one screen without scrolling.
ad6bcb7d5 | [Richard C. Gobeille] engine: add joyHasButton() function to determine whether a controller has a particular button or not
This is needed because not all controllers supported by SDL's game controller API support all buttons exposed by said API, leaving gaps between valid button indexes.
3cd951d7f | [Richard C. Gobeille] Duke3d: reduce default joystick dead zone
d58318a39 | [Richard C. Gobeille] mact: double MAXCONTROLVALUE to effectively increase the max controller axis sensitivity
b2ed09c8a | [Richard C. Gobeille] Duke3d: useless cleanup change to A_DoProjectileEffects()
6cbbf2d91 | [Richard C. Gobeille] Duke3d: increase default scale/sensitivity of the x axis on the right analog stick
7f8532c26 | [Richard C. Gobeille] Duke3d: fix inconsistent controller analog stick input with fluctuating framerate
aba6343b8 | [Richard C. Gobeille] engine: add user-friendly names for the rest of the controller buttons exposed by SDL 2.0.14
c974c5cfb | [Richard C. Gobeille] engine: cap joystick .numAxes and .numButtons to the highest index actually valid for the current controller
Since there's no function to just return the number of valid axes and buttons, I suspect SDL expects us to keep track of which indexes are valid ourselves as the range of valid values may not be contiguous. We aren't doing that yet.
9326d7a32 | [Richard C. Gobeille] Duke3d: add nullptr checks for joyGetName() return values
e5f900e9e | [Richard C. Gobeille] engine: don't return NULL in joyGetName() for valid axes and buttons
Instead, return SDL_GameControllerGetStringForAxis()/SDL_GameControllerStringForButton() for axis and button indexes beyond what is provided by axisStrings[]/buttonStrings[].
115f75158 | [Richard C. Gobeille] engine: update to SDL 2.0.14 on Windows
The ARM64 Windows libraries still need a rebuild.
a3dbdea4a | [Richard C. Gobeille] Duke3d: revise a359877b2a01182f06e1db910c660a654a0727a2
83278aecf | [Richard C. Gobeille] engine: vector type equality operators
7ee31baaf | [Richard C. Gobeille] engine: expand "toggle" console command to also work for cycling through a cvar's allowed range
50f2590b4 | [Richard C. Gobeille] Duke3d: remove extraneous actor bpos updates
These sprites are covered by G_RecordOldSpritePos().
186470142 | [Richard C. Gobeille] Duke3d: fix loogie display bug
8e28ea254 | [Richard C. Gobeille] Duke3d: fix mouse input regression
0072a8ce8 | [Richard C. Gobeille] Duke3d: this isn't necessary because these can never return null...
97445542a | [Richard C. Gobeille] Duke3d: sort menu mouse button setup entries differently and throw the data into a struct
b1629dc7a | [Richard C. Gobeille] engine: slightly simplify texcache_calcid()
It's still terrible.
6e87c186b | [Richard C. Gobeille] engine: update lz4 to a8e888774a5fd2563e6e085e7274465175696476
bb429e8f2 | [Richard C. Gobeille] editor: clamp m32script line drawing color range to 255 instead of 15
c9503fc49 | [Richard C. Gobeille] editor: handle negative color indexes for m32script printext16 the same as the line drawing commands
2363635c2 | [Richard C. Gobeille] engine: bump MAXYDIM to 4320 and fix two marginally related assertions in dorotatesprite()
Note that MAXXDIM and MAXYDIM only really control which video modes will be added to the list of available modes found in the startup window and in-game menu, and that the engine itself hasn't had an arbitrary limit imposed on which resolutions are actually supported for a while now.
6c1e7f6fe | [Richard C. Gobeille] Always pass -latomic when linking on Linux, no longer conditional on IMPLICIT_ARCH
d7bf4d129 | [Richard C. Gobeille] engine: print warning to console when loading maps that contain extra data appended to the end of the file
I think TekWar is the only game that did this, but it's worth detecting since it means even simply re-saving those maps without purposeful changes will break them.
44164e591 | [Richard C. Gobeille] engine: fix backwards EDUKE32_NO_XINPUT getenv check...
ae004ec70 | [Richard C. Gobeille] Duke3d: add ZOFFSET7 preprocessor definition for another hard-coded height offset
fa0c33eeb | [Richard C. Gobeille] Duke3d: demo recording crash fix
Note that this does not fix the player input issue.
fdafd724e | [Richard C. Gobeille] Duke3d: SE_11_SWINGING_DOOR improvements
2207d1f34 | [Richard C. Gobeille] engine: default value for last argument to addclipline()
7974b5428 | [Richard C. Gobeille] engine: change first argument passed to clipinsidebox() to pass by value instead of a ptr, remove separate clipinsidebox() implementation in favor of clipinsideboxline()
71abac33e | [Richard C. Gobeille] engine: fix clipping issue where the player could get squished between a 2-sided blocking wall sprite and a wall in rare instances
438238474 | [Richard C. Gobeille] engine: don't allow pushmove() to push anything out of bounds
b1f476642 | [Richard C. Gobeille] editor: the VS debugger says this is used uninitialized but it's not
Shut up, VS debugger.
7225643e3 | [Jordon Moss] Fix undefined behavior/potential OOB access in ST_21_FLOOR_DOOR. g_AnimateGoal does not take a sector number, it takes an animation index, and caps at 1024, not 4096.
68a114854 | [Jordon Moss] Added seed_krand(int32_t* seed), a function for performing RNG that reads from and writes to a custom seed pointer.
c38987bbb | [Jordon Moss] Move S_DefineSound, S_DefineMusic, and S_DefineAudioIfSupported out of game.cpp and into sounds.cpp, and made CON_DEFINESOUND use S_DefineSound, reducing code duplication.
2d6473e4f | [Dino Bollinger] Duke3D: Fix default SE26 speed if no GPSPEED tile is present.