• v10 e16546db12

    Indev450 released this 2026-09-17 14:53:40 +02:00 | 23 commits to Saturn since this release

    Improvements/Features

    • Accessibility: Added "Auto Acceleration" feature (Port from hostmod by Tyron (https://mb.srb2.org/threads/hostmod.26649/))

    • Accessibility: Added "reducevfx", similar to Ring Racers this "tones down" or disables certain effects (Feel free to suggest more things if we missed anything!)

    • Added flipcammode toggle for using local flipcam settings instead of player flag "flipcammode"

    • The player setup menu now will display 3D models if they are enabled and exist

    • The Server Join Info screen now has a new option to allow only loading a servers Addons and Gamestate instead of joining the server

    • Display information about addon types loaded on server when joining

    • Added option to hide finished players from minimap

    • Added option to hide skin name from stat display

    • Added toggles to disable Controller Rumble and LED changes when the game is out of focus

    • Added support for using custom SDL2 mappings

    • Updated OpenGL Dithering shader so it now properly scales with resolution like intended

    • Replay search now strips colours from demo titles, so you can properly search for replays that contained names with colours like server names

    • Calling P_PlayRinglossSound from lua will now print a warning since it is prone to desynching
      ; (Fixing that may cause a lot more frequent desynchs with vanilla and old Saturn versions, so we opted to notify lua scripters to use alternatives instead)

    • When the game crashes, the Crash message box now contains a button that will bring you to the github issue page to report the crash issue

    • Saltyhop now adds to player spriteyoffset instead of completely overwriting it

    • Ported lua profiler from Ring Racers. Toggled with "lua_profile n", where n is number of ticks to sample (higher value - less flickering but more "averaged out" result)

    • Added visual "stair jank" togglable effect, can be enabled/disabled in Saturn Options -> Player Distortion menu, or with "stairjank" and "stairjanksfx" cvars

    Optimizations

    • HWR_ProcessSeg: ported software renderers code to skip rendering inner sides that are "joined" to other fofs (speedup on maps with lots of FOFs)

    • Use doomednum lookup when spawning/respawning mapthings (faster levelload)

    • Avoid constant memory allocations for OpenGL drawnodes (small speedup on maps with many translucent fofs)

    • Replaced custom rounding function with standard lib function for OpenGL clipping (faster and portable)

    • Simplify detecting Mobj hooks in hooklib which gives a slight speedup in some cases

    • Improved performance of CV_Findvar and CV_FindNetVar, should lead to better performance with a lot of lua scripts and allows for slightly faster server join

    • Improved performance of the VHS effect in OpenGL while also making it visually more consistent across different resolutions

    • LTO is now enabled by default, this should lead to more speedups, can be disabled with NOLTO compile flag

    • Optimized Lump Caching (https://github.com/Indev450/SRB2Kart-Saturn/pull/217)
      ; Added a lumpnumber cache using hashtables (implemented using Verstable https://github.com/JacksonAllan/Verstable),
      this significantly speeds up everything lump related and may give a big performance boost in some cases
      ; Replaced wad start/end folder aatree lookup with hashtable lookup as well
      ; Removed longname code, which was unused to save on memory and unnecessary work

    • Various smaller code optimizations in many places

    • Port some lua optimizations to BLUA (https://github.com/Indev450/SRB2Kart-Saturn/pull/223)

    • Netcode fixes, cleanups and optimizations
      ; Reordered packet handling a little, so common/important packets get checked first
      ; Pass node number to SV_AddWaitingPlayers (saves iterating through all 128 net nodes every time a player joins) lifted from Ring Racers
      ; Moved all packet handling to the packet handlers
      ; Fixed some packet types not being correctly handled
      ; Fixed double byte-swap in SV_MakeTic (srb2-legacy port)
      ; Fixed wrong clamp for realfirsttic that was too early
      ; Merged SendNameAndColor & SendWeaponPref
      ; Cleanup PT_ClientJoin
      ; Cleanup SV_AddWaitingPlayers

    • Optimize K_CheckOffroadCollide

    • Reorder layout of seg_t struct a bit, improves performance

    Fixes

    • Fixed an issue that sometimes falsely caused replays to think a map was not loaded

    • Fixed the replayhut scroll bar disappearing when you have A LOT of replays

    • Fixed capslock behavior in addons menu

    • Fixed the addon download bar going out of bounds in some cases

    • Fixed the minimap angle display colour being always Green for skins that use non default startcolor

    • Fixed an issue that caused the Server Info screen to display empty player names in some cases

    • Fixed intermission screen displaying whitescreen in some cases

    • Fixed a regression which rendered Controller input broken when using multiple Controllers of the same type on Windows

    • Prevent autoload from loading addons that contain map data (to prevent crashes and desynchs from accidentally adding unwanted addons to the auto/postload list)

    • Fixed the doomednum lookup mismatching in some cases, which may caused some synch issues when loading a netsave

    • Prevent offroad particle effects from spawning when being mid-air during saltyhopping

    • Fixed the "alias" command crashing if no previous aliases were registered

    • Fixed desynchs caused by "Got_Saycmd" not skipping null terminator when message has maximum length

    • Changed the Error for nodeless maps to be more useful

    • Removed Keepmusic "Resuming" due to countless issues with it

    • Fixed issues where player fading got applied erroneously to other players when you were spectating in netgames

    • Fixed a rare crash in R_DoPlayerFade when viewplayerdist is too low

    • Fixed issues with Flashpalettes in software and OpenGL paletterendering using random garbage as flash palettes, should the current Palette not provide any or not enough Subpalettes

    • Fixed use-after-free issue with colormaps which may caused random crashes and memory corruption

    • Fixed potential memory corruption within Masterserver handling due to not using thread safe memory allocations, also fixed some memory leaks as well

    • Fixed a memory leak when saving to the config file in some cases

    • Fixed a memory leak when printing the OpenMPT version

    • Fixed a memory leak in AATree string trees (SRB2Classic port)

    • Fixed super rare underflow within FixedHypot if input is -2147483648

    • Fixed sky dome VBO leak

    • Fixed parts of the PNG info text for screenshots not being null terminated leading to buffer overflows in some cases

    • Fixed issues with zip/pk3 file handling due to not handling non null terminated names

    • Fixed issues checking for map markers due to not handling non null terminated names

    • Fixed myhashfgets-related buffer overflows in dehacked

    • Fixed an issue with the VHS effect that in some cases caused one of the "bars" to not appear on some resolutions

    • Fixed addons added with "-file" not using an optimization to look in addon/downloads folders first

    • Fixed "listemotes" calculating incorrect number of pages

    • Fixed some issues when fetching replay dates

    • Fixed undefined behaviour with the addon download progress bar

    • Fixed W_MakeFileMD5 printing incorrect time

    • Fixed P_MakeMapMD5 printing incorrect time

    • Fixed writing out of bounds while writing filenames for D_ParseFileneeded

    • Fixed reading out of bounds while checking for new target in director

    • Fixed "Update_MS" checking against an uninitialized value in some cases

    • Fixed and issue that may caused battle points to not show up in certain cases

    • Fixed lua enumlib sprintf function reusing va list which could lead to issues

    • Fixed demoname becoming garbage when replay restarts/rewinds

    • Fixed "timedemo" not accounting for level and addon loading, thus showing incorrect measurements in many cases

    • Fixed a crash for super tiny resolutions

    • Fixes for lua archival ("Do not archive table values for nil keys" SRB2 port)

    • Fixed decompression warning when starting a server (SRB2Classic port)

    • Fixed compiling with Valgrind support

    • Software: make R_DrawWallColumn being able to render "holey" textures, fixes certain textures inhibiting a "melted" appearance

    • Software: Fixed an overflow in visplane handling

    • Software: Fixed an overflow in R_InitViewMapping with high resolutions

    • Software: Fixed types for drawseg sprite clipping being too small, may fix some clipping issues

    • Software: added a hack to prevent certain maps from "flickering" due to bogus height walls from faulty maths

    • Added an I_Error for dedicated servers should they somehow end up in the main menu

    • Fixed g_in_exiting_signal_handler not being async safe thus was probably doing nothing before

    • Fixed SIGINT/SIGTERM (CTRL+C/alt-f4) signals causing all kinds of issues when closing the game due to calling I_Quit asynchronously

    • Fixed the I_Quit recursion detection on non DEDICATED builds

    • Removed a hack for Nvidia GPUs running under linux xwayland (If you should have blackscreen issues please consider updating your GPU drivers or open an Issue again)

    • Fixed potentially a lot of issues due to uninitialized garbage being used in some places

    • Fixed overwriting first player's name when joining with multiple local splitscreen players. (resolves #151)

    • Fixed weird gap in opengl options menu

    • Fixed A LOT of other smaller issues, hopefully fixing a bunch of random crashes and desynchs with it

    • Attempt to fix a plethora of buffer overflows when trying to connect to a server that does not exist

    • Fix buffer underflow within holepunching

    • Detect kill signal when printing signal from signalhandler

    • Fallback to srb2back instead for intermission background in some cases

    • Fix parent process being killed before child per interrupt/terminate signals

    • Opengl: only enable stencil testing during level render (fixes issues on some Nvidia GPU's)

    • Fix potential null pointer deref in P_MobjFloorZ/CeilingZ, and in P_LineOpening

    • Fix HWR_RenderPolyObjectPlane (fixes the rotating skybox thing in Zero Space)

    • Fix ArchiveTables crashing in some cases after printing error message

    • EnsurePlayerNameIsGood: Remove trailing whitespace, instead of just failing on it

    • Some fixes for bad player info on joining servers.
      -- Send local player info once per local splitscreen player, rather than n^2 times (where n is the number of local splitscreen players).
      -- Since the packet requires four names to be sent every time you join a server, send dummy names for local splitscreen players who aren't connecting, instead of your actual cvars (no data leakage you didn't ask for!)

    • Fix crash that could be triggered by leaving an empty line in renderer.txt

    • Fix potential buffer underflow in portal handling

    • Ensure serverinfo "application" is null terminated

    • Replace all sprintf with snprintf (better memory safety)

    Technical/Compilation

    • Fixed CMake builds (Thanks a lot P-AS! Thanks a lot Bijman for the base patch!)
      ; Tested on MacOS and Linux
      ; Windows may work but untested and unsupported

    • Fix snacpending stuff and move all of it behind PARANOIA define

    • Add "HAVE_IPV6" to passtrough compiler flags

    • Added "USEJEMALLOC" make flag to link against "jemalloc" allocator

    • Explicitly set "std=gnu17" as we require it for a lot of extensions

    • Add support for OpenBSD

    There may be more fixes or changes forgotten about. We've been hard at work and the last update was almost a year ago!
    Thank you all so much for all the support and the spirit on keeping Srb2Kart alive. This includes Blankart and other community projects!

    PR's

    Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v9.2...v10

    Downloads