August 2020
-
split getactorvar/setactorvar instructions
Show details
These are actually fairly commonly used, so I'm not sure why I bothered with having them the other way before.
-
remove INTERNAL ERROR messages from Gv_GetVarIndex() and Gv_GetArrayIndex()
Show details
This is only ever used for refreshing pointers to certain special gamevars and for checking if variables in savegames exist in the currently running script--it doesn't need to print errors to the console.
-
inline the array get/set functions
-
get rid of separate check for common gamevar types before the switches in getvar__ and setvar__
Show details
It wasn't any faster.
-
move bounds check out of SetArray()
-
#if 0 out weird runtime check for array writability in SetArray()
-
optimize VM_GetStruct()
Show details
I've heard several times that functions with a single exit point are faster, but profiling showed that removing the intermediate variable and returning directly from the switch wins here.
-
rework PlayerLabels[] to use the LABEL_SETUP macro
-
hook up MicroProfile counters to track the number of event executions
Show details
Also lowers MICROPROFILE_MAX_COUNTERS to 256.
-
get rid of dynamic allocation for input_t inside playerdata_t
Show details
At some point years ago I switched the input_t struct inside the player struct to use dynamic memory allocation for some reason. This changes that back--input_t is only 20 bytes and dynamically allocating it saves at most a couple hundred bytes of memory. Pointless.
-
more work on updated savegame format
-
update spriteext_t structure
Show details
Like DukePlayer_t, I do not intend to modify this structure again in a way that breaks backwards compatibility, unless 100% absolutely necessary.
-
optimize out millions of calls to getzrange
-
savegame format update WIP
-
General
Make reading of picanm from ART files robust if picanm_t is extended
Show details
Backported from NBlood.
-
General
Fix applying sprite[].yoffset to models
Show details
Backported from NBlood.
-
Add FX_StartDemandFeedPlayback3D
Show details
Backported from Rednukem.
-
Fix regression causing the last heat seeker to be a normal missile
Show details
It was caused by the fix for crashing when firing outside the map. Also port said fix to the bunny rockets.
-
Don't try to open device if it isn't in
Show details
the list as returned by ALSADrv_MIDI_ListPorts. Opening a device with ALSA_PortID == 0 might technically be successful even if not present.
-
General
Audio / Duke3D: Modify alsa_mididevinfo_t to manage memory use of
Show details
the "name" field on its own. Also make sure that the for loop in Menu_RefreshSoundProperties isn't accessing copies of the objects, including temporary copies of the "name" strings. It could be managed in a better way, but this should be usable for now.
-
General
ALSA MIDI: Improve implementation as per discussions in terminx/eduke32!16.
Show details
* Don't call ALSADrv_MIDI_ListPorts() from driver_alsa.cpp. There is no need to do this as ALSADrv_MIDI_Init() just connects to the client and port specified and succeeds or fails accordingly. * Remove nullDevice vector from driver_alsa.cpp. Calculate whether returned vector from ALSADrv_MIDI_ListPorts() is null or not within game's menu and handle accordingly. * Remove static declaration of validDevices from driver_alsa.cpp. Vector is of no use inside of driver_alsa.cpp and is only required game-side. * Return declaration of devices found back to ALSADrv_MIDI_ListPorts() and return whether it's empty or not. * Declare alsadevices as an empty non-constant in menus.cpp, then populate from Menu_RefreshSoundProperties() in menus.cpp. This allows us to fill alsadevices with an empty vector if no devices found and allows a user to plug new MIDI devices in and have the game find them without restarting the game.
-
Do free driver name strings duplicated using Xstrdup
-
Refuse to initialize if Client:Port pair isn't in the list
-
Fix potential crashes in menu if no ALSA MIDI device is found
-
add runtime check to 81c5c99ec517ad8422a5c4caa33c38639c3b9a56
-
Fix blocking OOZ and OOZ2 not transporting the player upwards
Show details
This fixes terminx/eduke32#105
-
Apply pogokeen's fix for hightile texture seams in polymost.
July 2020
-
Fix tilescreen drawing for Polymer renderer.
Show details
According to pogo in a previous commit, GL_TEXTURE_2D is deprecated. However, polymer cannot draw the tiles in the tilescreen correctly without enabling it first, else it shows white boxes instead. This fixes terminx/eduke32#93
-
prevent hash lookup on empty keybinds
Show details
This fixes terminx/eduke32#98
-
Fix faulty call to getzrange() in player jump code
Show details
This fixes terminx/eduke32#45
-
FORCE_INLINE mutex_lock() and mutex_unlock(), make mutex_try() actually work
-
return length from printf-style functions
-
add an additional layer of camera vec3_t position smoothing across frames
Show details
This is intended to mask a slight jitter that occurs when strafing and turning at the same time as a result of turning being decoupled from movement.
-
testing an alternate version of calc_smoothratio_demo() that returns values based on fractional tics
-
only allow doubled up game updates if we're behind at least 2 tics
-
remove the do {} while (0) from the VM_ASSERT macro
Show details
This makes the macro less flexible, but I'm not sure that using __builtin_expect within the loop is doing what I want. I guess I should fire up godbolt.org...
-
re-enable EDUKE32_PREDICT_TRUE and EDUKE32_PREDICT_FALSE
-
remove a few instances of EDUKE32_PREDICT_FALSE
-
remove "printtimes" console command
Show details
This information is pretty much useless compared to using the profiler.
-
#define EDUKE32_UNREACHABLE_SECTION as debug_break() in DEBUG builds
-
split [get/set][wall/sector] into separate opcodes for direct access through VM_GetStruct()/VM_SetStruct()
Show details
This makes them match [get/set]actor.
-
General
Remove etcpak
-
replace outdated "gamepad" terminology in menu with "controller"
-
make frag[] in DukeStatus_t unsigned
-
add STR_REVISION to CON_QGETSYSSTR
Show details
It returns the binary's revision string without the "r".
-
allow setting the scale for the mouse axes to 0
-
update the types of the player's .horizAngleAdjust and .horizSkew to match current usage
-
remove dead function prototype
-
more fix16 cleanup
Show details
There's an optimization or two in here, but tbh I just like deleting shit.
-
don't invalidate TILE_SAVESHOT until after G_ReadGLFrame() and don't set the cache1d entry lock byte to the unlocked state until the data has actually been used