-
SRB2Kart Saturn - v10 Stable
released this
2026-09-17 14:53:40 +02:00 | 23 commits to Saturn since this releaseImprovements/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
- Fixup CMake, but simpler by @alufolie91 in https://github.com/Indev450/SRB2Kart-Saturn/pull/220
- CMake fixes cherry-picked from srb2-legacy by @P-AS in https://github.com/Indev450/SRB2Kart-Saturn/pull/221
- Optimze Wad Lumps by @alufolie91 in https://github.com/Indev450/SRB2Kart-Saturn/pull/217
- Netcode fixes, cleanups and optimizations by @alufolie91 in https://github.com/Indev450/SRB2Kart-Saturn/pull/219
- Addon download info by @Indev450 in https://github.com/Indev450/SRB2Kart-Saturn/pull/224
- Speed up CV_Findvar & CV_FindNetVar with hashtable by @alufolie91 in https://github.com/Indev450/SRB2Kart-Saturn/pull/225
- Some optimizations and fixes for BLUA from LUA by @alufolie91 in https://github.com/Indev450/SRB2Kart-Saturn/pull/223
Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v9.2...v10
Downloads
-