• v10.1 75d24743c1

    alufolie91 released this 2026-09-27 21:29:09 +02:00 | 7 commits to Saturn since this release

    Small hotfix release for v10.
    Since this contains some changes relating to vanilla compatibility, if you are a server owner running a server with Saturn, please ensure to update it to avoid any potential issues!

    Features/Improvements

    • Added useprefcolor, useprefcolor2, useprefcolor3, useprefcolor4 commands, when executed they change your skin color to your character's preferred color (note that it will not keep track of you changing skin, if you do then you will need to run the command again)

    Fixes

    • Fixed CMake builds compiling the Phobos build by default (oopsie)
    • (Hopefully) Fixed issues with selecting Controllers for splitscreen players from within the menu
    • Fixed some weird issues with Controller assignments
    • Fixed an issue that caused the option to bind the "Turn right" control to not not appear for splitscreen players in the controller setup menus
    • Fixed some item related desynchs (most noticeable on Sewer System) with vanilla clients that was caused by fixing a bug (This will desynch players on Saturn v9-v10 as well, so please update!)
    • Fixed "Modulative" blendmode in software renderer
    • Fixed chat netxcmds being the wrong size at times when sending a chat pm
    • Fixed some issues with mid-textures in OpenGL (see https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2843 for more information)

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

    Downloads
  • 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
  • v9.2 8cf2395d42

    alufolie91 released this 2025-12-06 17:37:49 +01:00 | 640 commits to Saturn since this release

    Improvements/Features

    • Emotes: Change autocompletion behavior to work like console (if there are multiple suggestions, you can now instantly cycle between them when pressing TAB)
    • Emotes: Allow suggesting emotes if currently typed part matches inside emote, not only at beginning
    • Emotes: If there is only 1 emote suggestion and user presses enter, autocomplete emote
    • Emotes: Added support for console chat
    • Emotes: Don't suggest autocompletion with only one character after the ":"
    • Emotes: Add "listemotes" command, to list the currently loaded emotes in console
    • Added "locatelump" command, to search for if a lump exists by name
    • Lua Votescreens: Add 'time per frame' argument for hud.setVoteBackground (If time_per_frame is set, each frame will last this amount of tics, default value is 2)
    • Added an option to show the current song credits in the pause menu, toggable with "pausesongcredits" or in the Saturn HUD options
    • Controller: Make Controller Rumble strength user changeable, ranges from 0.25 - 4 (changeable with "rumblestrength" or in the controller config)
    • The server info screen now shows the servers game speed/difficulty instead of "Cheats"
    • The server info screen will display player names with the players skin colour, on supported Servers (v9.2+)
    • Cameras are now completely exposed to lua not just hud hooks
    • Freecam now is allowed during "awayview" (Check Plinko or Train Rush maps)
    • Player Afterimage "Ghosts" will now have additive blending applied during sneaker boosts, similar to speed lines, when "playerblendeffects" is enabled
    • Added a toggle to let the console print on the title screen "consoleprintinmenu"
    • Menu: The Time Attack menu will now display the currently selected Skin´s stats

    For more information about the Lua changes, be sure to check the LUASTUFF documentation!

    Optimizations

    • Opengl: Add a fast early return check for lines with same front and backsector but without a middle texture
    • Opengl: Fix up spherefrustum culling and use it to cull sprites that are out of our view (improves performance especially on maps with precip)
    • Opengl: Avoid adding sprites again to sectors that already had sprites added in some cases
    • OpenGL: Optimized some "float" maths in a lot of places
    • OpenGL: Batching: use polygon hash signbit to detect skywalls/horizonlines (improves performance on some maps)
    • Software: Clip sprites that are out of our view (improves performance especially on maps with precip)
    • R_ProjectSprite: make fake floor sprite clipping work with sloped fake floors/ceilings
    • Check for Kart specific/commonly used mobjs first in a lot of places in mobj handling
    • Simplified and fixed up some usage of std vectors (should reduce memory usage in some cases)
    • Slightly optimized a distance calculation that is used within rendering in some cases
    • Save some maths in R_Prep3DFloors
    • Removed some interpolation related fields from mobjs that were effectively uneeded
    • Many smaller optimizations

    Fixes

    • LoadMobjThinker: Revert faulty local player check (fixes a nasty crash that in some configurations lead to a crash when trying to join a server with more than 4 players racing)
    • Check if mobj was actually spawned before setting "islocal" (fixes some random crashes from any lua spawned mobjs that got instantly removed again)
    • Fixed a rare crash that could happen when you get stuck on server join until you timeout, due to title screen patches being freed while they were still in use
    • Reverted SDL2 libraries on windows, again.... as it still caused random audio issues. This will break the right "Alt Gr" key for non US keyboard layouts when using the "Native keyboard layout" option again. (If you don't care about audio issues and need the ALT GR key to function, feel free to keep the old SDL2.dll file) - We´re currently looking for and trying alternative options for the Sound System
    • OpenGL/Software: Fix portals (and its contents) being culled in some cases they shouldn't be
    • HWR_BlendMidtextureSurface: Fixed a major performance regression due to incorrect flag handling (most noticeable on "Sunset Beach" map, from BigOMaps)
    • Blua: attempt emergency garbage collection on file IO operations if they fail (ex if a faulty script keeps opening files constantly but never closes them, this will make sure they will be closed if too many are open)
    • Fixed a rare race condition with server list search that may lead to crashes
    • Emotes: Only print 'too many frames' warning if we actually get non-empty frame
    • Emotes: Fix autocomplete messing up emote in few cases
    • Emotes: Fix emotes being slightly offset in chat log
    • Fixed an issue that lead to old server browser entries to still appear when refreshing the server browser (or re-opening it)
    • Fixed an issue that caused the server browser refresh button to list less and less servers when hitting it multiple times
    • Fixed replays not properly checking if a map was loaded in non 1.0 replays, leading to a game quit with error
    • Fixed an issue that caused the game to get stuck in a weird limbo state when a replay fails to load
    • Fixed an issue that let you open non existent replays in the replay hut
    • Fixed Time Attack ghosts sometimes crashing the game when resetting a Time Attack attempt
    • Fixed an issue that caused freecam to be reset if your "displayplayer" went to spectate in replays
    • Fixed a rare crash when closing the replayhut
    • Fixed the encore toggle in the level select appearing when not having encore unlocked
    • (Hopefully) fixed issues with the addon menu sometimes not refreshing or getting stuck on a warning screen
    • Fixed an issue that broke menus when calling the "map" command from within menus
    • Fixed an issue that caused the game credits to free the Hud item patches for the Roulettebox
    • Fixed an issue that prevented splitscreen players from entering their name, and changing player 1s name instead on the player setup screen
    • Fixed Localskin menus not instantly disappearing from the options when you toggle the "Show Localskin Menus" option
    • Fixed an issue that caused the console to sometimes flicker during gif recording
    • Fixed some instances of faulty strings being passed to W_GetXForName functions
    • Fixed some Grammar
    • Some fixes for mobj interpolation
    • Fixed a memory leak when searching for iwads on startup
    • K_GetScreenCoords: Fixed a signed integer overflow
    • HWR_ProcessSeg: Fix cliphigh signed integer overflow
    • hw_batching: Fix signed integer overflow in polygon hash calculation
    • G_DoPlayDemo: Fixed an unitialized value warning
    • r_draw_span: Removed "threads.h" include, use c++11 "thread_local" keyword for thread local storage (hopefully fixes compile on some platforms)

    Special thanks to Mompi for bug hunting and providing feedback for this release!

    Note: be sure to update all DLLs again, this is important!

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

    Downloads
  • v9.1 bcf876a4c4

    alufolie91 released this 2025-11-17 19:03:51 +01:00 | 795 commits to Saturn since this release

    The hotfix curse strikes again!

    • Fixed an issue that prevented the game from connecting to Servers, getting stuck on the loading bar in some cases

    • Fixed an issue that caused the intermission time to sometimes be longer or shorter and or mismatched between clients and servers (Also caused some wonky visual issues in some cases)

    • Fixed an issue that caused some user config files in the "luafiles" folder to not be loaded

    • Fixed Dedicated build compile

    • Reverted SDL2 back to 2.28.5 and SDL_Mixer back to 2.0.4 on Windows builds
      ; This caused numerous issues such as:
      ; Certain Controllers were unusable
      ; Issues with sound looping and pitching
      ; Game being unable to properly close on quit
      *This was originally intended to fix issues with certain Keyboard layouts such as portuguese
      *We now provide a DLL with a fix applied for only the Keyboard issues, more information can be found at https://github.com/Indev450/SRB2Kart-Saturn/pull/213

    Be sure to update all DLLs again, this is important!
    Sorry for the inconvenience and thanks for your patience!

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

    Downloads
  • v9 84a3503262

    alufolie91 released this 2025-11-16 19:35:47 +01:00 | 817 commits to Saturn since this release

    Happy 7th Anniversary Kart!

    This is a massive update again, so massive we couldnt even fit every single change into this changelog!
    Much thanks to everyone who helped with this release and every Saturn release!

    Make sure to update ALL DLL files if you are on Windows (Important!)

    • Completely overhauled the software renderer
      ; Ring Racers's partial software multithreading has been ported, for a massive performance boost
      ; implemented column buffering/flushing system (from eternity engine/dsda-doom) for even more performance gains!
      ; A massive amount of fixes have been ported over from Ring Racers to make the software renderer super stable and fix some visual issues
      ; Ported srb2classics software screen blitting, massively speeds up software rendering
      ; A lot of fixes and optimizations from srb2classic have also been ported over for even better performance
      ; Secbright now also works with the software renderer*
      *Note: the cvar name has been changed to "r_secbright", which will reset on updating to Saturn v9 the first time) credits @ Chromaticpipe
      ; Software is now able to cut cyan pixels on flats, like opengl (toggable with "softwarecyancut", enabled by default)
      ; A lot of smaller optimizations and big fixes from us have also been implemented
      ; Most issues with skies have been fixed (most notable on Gachacup)
      ; Software now is able to draw non-powers-of-two width textures (fixes some repeating textures)
      ; Flat alignment has been mostly fixed and is now consistent with opengl (see slopes on Stardust Speedway)
      ; The game is now able to handle resolutions up to 8192x8192 since alot of static screen buffers now get allocated dynamically (also improves performance on lower resolutions)
      ; Fixed rotating polyobject interpolation for the software renderer
      ; Fixed issues with extra 3d floors in the software renderer (fixes issues on Phoenix´s new map with the lava)
      ; Fix FOF slopes briefly glitching on level load in software mode

    • A Information screen about the server will now be displayed when you try to connect to a server (much thanks Chromaticpipe!)
      ; This is similar as the one seen in SRB2/classic and displays information like current map and players
      ; A packet has been implemented to send over the current map thumbnail to display when no addons are loaded (Thanks srb2classic!)
      ; Can be toggled with "serverinfoscreen"

    • Musicdefs have been exposed to lua
      ; this allows for things like custom music popups, music search, etc.

    • Added support for chat Emotes, inspired by Radio Racers!
      ; Emotes can be static or animated, and can be hosted and seen by other users using Saturn v9 and above
      ; more info https://github.com/Indev450/SRB2Kart-Saturn/pull/187

    • The game will now NOT reload every single texture in the game when an addon is loaded, instead it will only reload ones that changed
      ; Massively reduces the initial lag on server join

    • Filesearch has been massively sped up (especially on Windows builds)
      ; Filesearch now omits looking for addons in certain folders, a blacklist has been implemented for this purpose (this will completely disallow loading addons from folders like, screenshots, logs, replays, much thanks to toaster for revisiting and improving the initial implementation of this!)
      ; This has an even greater effect if you have alot of replays and logfiles
      ; Windows builds now use Windows native functions to check if a file is a folder during file traversal, which speeds up fileloading as well as the addon menu and replay hut (thanks @ GenericHeroGuy for the tip!)
      ; Optimized addon load on startup as well as autoloading and postloading handling
      ; Skip checking for replacement maps on startup if no extra wad files were loaded during startup
      ; Lump searching has been opimized for faster addon loading (thx srb2classic!)
      ; Use hash checks for W_CheckNumForName, slightly speeds up patch caching

    • A lot of fixes for the Netcode have been implemented
      ; Store last ticcmd in a buffer rather than in netcmd (this fixes a 1 tic input delay) many thanks to @ Chromaticpipe and @ P-AS for investigating this, credits to srbclassic
      ; ipv6 support technically has been fixed, but is disabled (due to potential issues with vanilla compat)
      ; A lot of fixes from srb2classic have been ported over, this should fix some crashes and weird issues
      ; Try to fix nodes being occupied if connection didnt receive any acks (potentially fixes issues where some players cannot join the server after getting timeout)
      ; Just drop the connection instead of I_error if connection gets lost
      ; Simplified NetXCmd client distribution

    • Added an Accessibility options menu
      ; This includes all Accessability options to be in one place
      ; If you got any more ideas for Accessability options, feel free to suggest some!

    • Added an Game Focus options menu
      ; This includes everything game focus related
      ; Things like toggling music playing if the game is unfocused, mouse visability, etc.

    • Makefiles have been completely rewritten and now display better information as well as being easier to modify

    • Due to a massive amount of internal code changes CMAKE builds are currently NOT supported (sorry macOS users), but this will be fixed shortly!

    • Build instructions have been updated accordingly on the git page readme.

    • A dedicated server build now can be build with DEDICATED=1 make flag
      ; This strips the game of a lot of unecessary things not needed for dedicated server operation
      ; This effectively also removes the SDL2 dependancy
      ; much thanks to srb2 and srb2classic!

    • The codebase has been adjusted to be completely compliant with GNU c23
      ; This fixes any issues with newer GCC versions, as well as simplifies a lot of code

    • Zlib has been replaced with Zlib-ng on Windows builds
      ; This slightly speeds up loading pk3 files

    • The game now can be easily compiled with LTO by passing USELTO=1 to make
      ; This massively improves CPU performance in some cases (but some older GCC compilers may have issues with it)
      ; 64bit! Windows releases are compiled with LTO, backtraces have been fixed

    • Clang support has been fixed up and now can be forced with USECLANG=1
      ; Some desynchs and issues specific to clang have been fixed

    • Port "Lite Steer" from RR (allows keyboard/dpad players to do a shallower turn by holding down the "down" key during steering)

    • Lua votescreens now can be changed during intermissions and will instantly take effect

    • Added a mute command to mute specific players in chat "/mute <name|node>"

    • A new MusicCredits box style has been added, this displays a small box on the top of the screen (changeable with "songcredits")

    • Changed the colouring of the inputdisplay to better match the rest of the Colour hud

    • Make level titlecard be affected by colour hud

    • Add option for smallminimapplayers to only downscale non-displayplayers icons (changeable with "smallminimapplayers")

    • Replays now get sorted in the replay hut, folders first and then by date

    • Port RR´s gamma correction + split gamma and brightness settings

    • Filenames in the addons menu and levelselect now are able to scroll if they are long

    • Ported HEPII(I)s smooth position number scaling (changeable with "postitionanimation")

    • Added Ring Racer's camera slope pitch behaviour (pitches the camera up/down on slopes) toggable with "cam_pitch" or in the camera options

    • Make a toggle for using angleturn in replays (more accurate camera "steering" to real gameplay, may be stuttery)

    • Add option to center text in chat "chatcentertext"

    • Don't reload level on gamestate resend (speeds up resynching alot!)

    • Reload from spawnsectors/spawnlines/spawnsides when making a savegame (should speedup sending the savegame and reduce joinlag)

    • Added a workaround for mobjs to not trigger certain sector specials for synch reasons on local addons (This will be automatically checked be the game when a mobj is spawned from a locally loaded addon, but can also be manually set by setting the mobj "islocal" field to true)

    • Added a configurable same sound limit, this limits the amount of times each sound can be played at once, configurable with "samesoundlimit" and in the Accessability menu

    • Add -curl-proxy and -curl-header CLI arguments

    • Midi and Music volume have been merged, so midis will now have a properly set volume

    • The game will now also print the current SDL_Mixer version to the log

    • Linux builds now use an even more accurate system for sleep, should improve stutters and stability if a frameratecap is used (thx srb2classic!)

    • Add -workdir (This adds a new command line parameter that allows you to specify the working directory of Kart exactly. It's mostly equivalent to -home, but it doesn't automatically add DEFAULTDIR at the end of it, giving better control where Kart loads and stores it's data.)

    • Use (maybe) faster distance and sight functions for hud hooks (maybe better perf for nametags, mine minimap lua, etc)

    • Raised size of sectors considered "too small" for precip, this should reduce the number of weather mobjs on some maps and thus improving performance

    • Rewrite screen capture code for GIFs (much thanks GenericHeroGuy!) improves and speeds up gif recording!

    • Replaced every strcmp, stricmp and strcasecmp with the fastcmp functions (this should speed up game start, addon load and other things from benchmarking those functions are around 50-100% faster!)

    • Sound precache: add option to keep sounds cached but not precache them (unlike precaching them all, this will not preload every sound, but keeps them loaded after they played once, to reduce sound related stutter while using less memory)

    • Added toggle for frameskip

    • Send R_GenerateBlendTables number crunch to parallel thread (faster startup)

    • Add NOHOLEPUNCH flag to disable holepunch entirely

    • Add USEUBSAN compiler flag to compile with Ubsan support

    • OpenGL now will omit drawing the "final screentexture" twice when the game is set to the native desktop resolution, giving a nice performance improvement!

    • Opengl mipmaps have been visually improved, port from Srb2 (credits BlueStaggo)

    • OpenGL: use non power of two screen textures if GL_ARB_texture_non_power_of_two is supported (might fix some performance issues on certain gpu drivers, thanks eternity engine!)

    • Slightly optimized OpenGL texture precaching (faster levelload)

    • Optimized opengl horizonline check even more

    • Added backwards compat support for ogl 2.1 fbo extensions (this should allow some older gpus to also make use of the FBO downsampling)

    • Added a wireframe mode to opengl, can be toggled with "gr_wireframe" (useful for testing and debugging some things)

    • Skip interp distance checks if we dont use interpolation

    • A LOT of stuff have been optimized. WAY too much to list everything, performance should be quite a bit better across the board!

    • Lua string to number conversions now are consistent between platforms (Thanks Windows!), this could potentially fix some desynchs

    • Fixed level things not being interpolated when you join a server midgame or after resynching

    • Added a search bar to the in-game server browser

    • Added a lot of safety for failed memory allocations (ex usage of G_BuildMapTitle)

    • Fixed some issues when toggling Paletterendering mode

    • Fix displayplayers.iterate hang when multiple viewports view the same player (port from Ring Racers)

    • Fix potential NULL deference if memory runs out during cURL request

    • Fixed some issues with mumble, like passing garbage value to it outside of levels, and restoring positional sounds for displayplayers

    • Use SDL_GetDesktopDisplayMode instead of SDL_GetCurrentDisplayMode (maybe fixes some hangs when switching resolutions/game startup)

    • Potentially fixes a crash with minimap heads drawer

    • Added a hack to fix cyan floors in GBA RR from disappearing in OpenGL

    • Fixed directional light stuff not working

    • Added a workaround for lua menu controls while spectating (exposes forward/backwards cmd->buttons inputs, exposes cmd->driftturn, if some menu relies on angleturn or sidemove those still wont work)

    • fwrapv gets passed to compiler again, this is to make the behaviour of interger overflows consistent between platforms and compilers (fixes compiler and platform specific desynchs)

    • Do not access memory on misaligned addresses

    • Fix multitagged FOF intersections in the renderers

    • Moved camera slidemove stuff behind "ifndef NOCLIPCAM", might give some slight performance gain (please report if there are any issues with camera behaviour against walls now)

    • Cleaned up Colormap from Sidedef loading code (please report any issues with broken colormaps)

    • Moved Sprite scale and offset stuff resets into R_ResetMobjInterpolationState (small speedup since we dont need to do an extra loop iterating through all thinkers now)

    • Saved alot of memory allocations and pointless interpolation on dedicated servers (slight performance gain)

    • Fixed an off-by-one in M_FindFirstMap

    • Fixed a potential crash in opengl texture loading code

    • Made lua string to number conversion consistent between platforms (fixes some potential desychs with some lua scripts between windows and linux)

    • Raise compiler cpu target from "nocona" to "x86-64-v2" for 64bit windoze builds (so the compiler has more stuff for optimizing them), needs some testing if there is still anyone left playing with a cpu from before 2009

    • Fixed "invert encore" sector special being broken due to the game checking the wrong sector special (needs testing in encore if there are any unintended side effects, old behaviour kept for compat reasons)

    • A lot of sound code cleanup and fixes

    • Fixed a rare hang in opengl during levelload

    • Fix OpenGL flash palettes ignoring saturation

    • Fix brightness issues with blend textures in Pallette Rendering

    • Fix custom addon directory being ignored when downloading addons, port from srb2classic

    • Fixed a compiler warning with newer CURL versions

    • fixed an issue that caused the replay hut to crash after opening the server browser shortly before

    • Fixed alot of issues related to replays, especially replay name input

    • Fixed some issues with the maptitle that gets sent to the Master Server, other clients and discord bots (now the game should send the proper name instead of omitting random parts)

    • Force disable fbo if it fails to create (prevents issues such as blackscreens or crashes)

    • Allow freecam to work with first person

    • always interpolate weather when using interpolation

    • Fixed issues with level interpolation jittering during objectplace (thanks Chromaticpipe!)

    • Change wheel input display "sensitivity" (Should make shallower turns visible)

    • Removed apng support, due to being non functional anyways

    • Don't double print kitchen sink message to log

    • Ensure deterministic order for P_Random stuff passed as arguments (fixes a bunch of desycnchs between different platforms clang/arm etc)

    • Re-added frawpv compiler flag for the same reasons

    • Fail loudly if sdl window/renderer/gl context creation fails

    • Fixes for lib_cvRegisterVar (the Lua version of CV_RegisterVar)
      _ Some fixes for lua userdata and cmds

    • Give midtextures filtering without ugly borders + Clean up padding code (credits BlueStaggo)

    • HWR_PrecacheLevel: disable sprite precaching (speeds up levelload, didnt do much in practice)

    • Call NetKeepAlive during Opengl Texture precache (hopefully prevents timeouts during levelloads on some hardware)

    • Kill off MSVC support completely

    • Fixed an issue that caused the game to get stuck in a "limbo" state in rare cases

    • m_menu: add textinput special case for playername string - fixes name going out of bounds of the input box

    • Fixed issues with moving fofs and weather floor detection (also optimize by only updating it twice per second)

    • Fixed up the native keyboard handling, it now shouldnt have any issues with deadkeys, etc anymore (console key is also hardcoded now, so it never changes its placement between different keyboard layouts)

    • Renderer: port some texture skewing fixes from SRB2 (fixes some issues with fof texture skewing in opengl mode)

    • SDL2: use SDL_GetSystemRAM() to get total RAM

    • Fixed some issues with printing CECHO texts to the console

    • Z_Zone: memory issues such as "Z_CheckHeap" should now give alot more useful information on errors/crashes

    • Don't force directsound for sdl versions from 2.26.5 on windows (should fix sound issues from updating sdl and sdl_mixer hopefully)

    • Cleaned up and optimized some parts of controller handling

    • Update vote background if hud.setVoteBackground was called on vote screen

    • Removed the P_FinishMobjs hack from savegame loading (might fix some join desynchs and issues)

    • Fixed ALOT of smaller issues and undefined behavior in the codebase (hopefully this fixes some wonky and random issues)

    • The controller led on supported conrtollers will now reset on each levelload (and on the titlescreen) to account for levelpalettes

    • Fixed the replayhut being unable to display records if you have more than 32767 replays

    • Turnsmoothing splitscreen support

    • Opengl: fixed vertical aim being slightly off when using software prespective (credits srb2classic)

    • Optimized image conversions and player sprite rotation by not constantly reallocating memory (use a dynamically resizing memory pool instead)

    • Fixed an issue that caused the HUD to flash when recording gifs

    • OpenGL: removed opengl adjusted "extra segs", should speed up levelloding and rendering a little while also reducing memory usage slightly (no visual difference from all my testing and comparing)

    • Some fixes, cleanup and improvements to the signal /crashlog handler (credits StarManiaKG!)

    • Opengl will now fail loudly if a required opengl function is not availible (instead of randomly crashing midgame, allows us to better help you with potential issues!)

    • Changed the behavior of the mouse cursor to be like RR 2.4, this means the game will not grab the mouse cursor anymore and instead just hides it if its in the game window (toggable from game focus options menu!)

    • Pressing the "freecam" toggle button during spectating will reset your camera back to the player start position on the map properly

    • Added "Gif dynamic delay", this has different modes (changable with "gif_dynamicdelay" or in the gif options menu), this fixes gif recordings being sped up in some cases

    • Fixed up the help command (thanks Chromaticpipe!)

    • Updated Discord RPC (Windows)

    • Updated libbacktrace (Windows 64-bit)

    • Updated sdl2_mixer to 2.8.1 (Windows)

    • Updated SDL2 to 2.32.10 (fixes issues with native keyboard input with certain layouts) (Windows)

    What's Changed

    Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v8.3...v9

    Special thanks (in no particular order) to:
    Blankart
    srb2classic
    srb2-legacy
    Kart-Krew (Thanks for making such a great game!)
    eternity engine
    DSDA-Doom
    Woof

    Downloads
  • v8.3 2049353647

    alufolie91 released this 2025-07-27 23:21:55 +02:00 | 3142 commits to Saturn since this release

    This is just a Bugfix release for Saturn v8
    No big new features here yet!

    What's Changed

    Fixes

    Improvements

    • Borderless window toggle by @chromaticpipe in https://github.com/Indev450/SRB2Kart-Saturn/pull/193
    • When a gamestate resend with the new resynch system took to look, it will now be aborted. Fixes issues where the game believed it was always already sending the gamestate to someone and as a result was unable to properly resynch players
    • Added a toggle to disable Quake Screenshakes, toggable with "quakescreenshake"
    • Z_CheckHeap errors now should display more useful information for us to debug instead of just 420
    • Windows builds are now shipped with minimal debug symbols, to give us better crash reports so debugging issues will be easier for us (This is why the executables are slightly larger now :p)

    New Contributors

    Much thanks to everyone who reported Issues and sent Contributions! c:

    Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v8.2...v8.3

    Downloads
  • v8.2 1e15816057

    alufolie91 released this 2025-05-25 18:54:31 +02:00 | 3200 commits to Saturn since this release

    Improvements / Features

    • Better handling of Votescreen Background Scaling
      see: https://github.com/Indev450/SRB2Kart-Saturn/pull/171

    • Allow music credits to show in the main menu and intermission

    • You can now set a seperate framerate cap for when the game is unfocused (the lower framecap will take precedence)
      set with "fpscapbackground" or in the Game Focus Options menu

    • Pressing the "freecam toggle" button now (attempts) to teleport the camera to player spawn when in spectator mode

    • Moved "ledpowerup" cvar into "gamepadled" cvar, now called "Mobjcolor"
      Instead of only using the players mobj colour when youre in invul or grow state, this will always use your player mobjs colour
      This allows for effects like from Acrobatics to also affect your Gamepad LED colour

    • In server settings, setting "gamestate attempts" to 0 will now disable the new Resynch system, setting "resynch attempts" to 0 will disable the vanilla resynch system (this only works for servers!)

    • For dedicated servers, gamestateresendattempts "0" and resynchattempts "0" inside server console
    • If you save your config with a custom name this now will also be backed up by the game!

    Fixes

    • Fixed minimap angle display being inverted in encoremode
    • Fixed being unable to save replays when using "manual save" during the intermission screen
    • Fixed game crashing when attempting to print '%s has no field named %s' for few lua userdata objects
    • Disallowed changing the Player setup grid sorting with the item button, if the item button is bound to the ENTER key
    • Fixed "gameplay modifyieng" addon warning showing "(null)" when autoloading files
    • Fixed 3d models "rollangle" being inverted in gravfip sections
    • Properly fix the Ghost replay resynch hit crash
    • Potentially fixed a crash during http download when you dont have write access to your addon download folder
    • Screentextures now are clamped to the maximum supported texture size reported by your GPU (to prevent crashes/blackscreens in specific setups)
    • Adjusted the amplitude of GL underwater effect to be less nauseating https://github.com/Indev450/SRB2Kart-Saturn/pull/173 (thanks @chromaticpipe ! c:)

    Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v8.1...v8.2

    Downloads
  • v8.1 c68c61975e

    alufolie91 released this 2025-05-11 18:34:08 +02:00 | 3246 commits to Saturn since this release

    We shall never be freed from the hotfix curse!

    Since this is released so shortly after v8, be sure to checkout the v8 changelogs!
    https://github.com/Indev450/SRB2Kart-Saturn/releases/tag/v8

    • Fixed a crash in Record Attack caused by Ghosts and Localskins
    • Fixed a crash during Controller Rumble reset on certain configurations
    • Fixed a crash on maps with playerstarts for 32 Players (a warning has been added since this will still crash vanilla clients)
    • Fixed a potential crash in the colorlut calculation (shoutouts to Hanicef for the fix!)
    • Fixed an issue that caused 3D Models to tank performance heavily
    • Fixed an issue that caused the "Colourized Sneakertrails" option to be skipped when scrolling through Saturn Options
    • Changed behaviour of "Colourized Speedlines"
      "drift only" wont alternate between uncolored and drift color anymore
      "normal" wont alternate between uncolored and playercolor anymore
    • All unlockables will be unlocked when using the modkartdata now (be wary, modkartdata will be always loaded when any gameplay modifying addon is loaded)
    • Added "nofork" launch parameter, which disables process forking (useful for debuggers like GDB)

    v8.1 Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v8...v8.1

    Downloads
  • v8 7e31536ff9

    alufolie91 released this 2025-05-10 18:06:36 +02:00 | 3260 commits to Saturn since this release

    After a long time of working and testing, we are happy to finally release the most extensive update to Saturn yet!
    Huge thanks to all the Contributers for the massive amount of contributions!
    Aswell special thanks to Sunflowers Garden and everyone who helped test and ensure this release is as stable as possible and providing much helpful feedback!

    This releases goal is to address most if not all regressions ever introduced in Saturn, aswell as many vanilla annoyances and bugs and generally improving code quality.

    Important Notice: Due to changes in the resynch system, going forward, v7 Saturn will be unable to make use of the new resynch system when hosting a Server on v8 and future versions! (v7.1 and onwards will remain compatible)
    For self compilers: if you update from an existing repo please compile with "make -B" to avoid any issues

    Features

    • Replaced the spectator camera with a proper freecam system (similar to Ring Racers)
      The "demo camera" system has been completely reworked for this
      You are now able to pass through walls, floors and ceilings. no more getting stuck on certain maps and you can explore freely!
      This also allowed to add a freecam toggle so you can just freely control your camera while INGAME (useful for screenshots that should include you, etc)
      Camera float and sink button are now rebindable
      You can now strafe in spectator/freecam mode (extra rebindable buttons), so you can have a full fps style control scheme for fancy camera action!
      Gamepad now has seperate controls for gameplay and camera things (ex: turn ingame with left stick, but in spectator strafe with left stick and turn with right stick)
      you can also go into freecam state when the game is paused and explore the map during it!
      (the spectator movement has been disabled locally in a vanilla compatible fashion, this does indirectly fixes some spec desynchs, but only clientsided, means, you will now no longer cause desynchs when you go into spec, but players on vanilla/other clients or older versions of saturn will still be able to cause desynchs)

    • Added an "offline" / "local" ping system similar to Ring Racers
      "mindelay" sets the minimum delay you wish to have (ex. a value of "2" always tries to make you have 2 frames of delay)
      this allows you to practice offline with online lag, or simply smooth out unstable online ping
      "serverlagless" toggles the listen server "Gentlemans Ping Agreement" system
      this makes the listen server serverplayer have a simulated ping of the player with the lowest ping on the server
      the pingnumber on the ping display will be "purple" tinted if the local ping system is active

    • The ping display numbers are now colourized according to your current ping if colorized hud is enabled (blue, green, yellow, red, ?!).
      Localdelay have their own colour as well

    • The game now uses its own seperate savegame when any gameplay modifying addon is loaded
      This allows statistics to be saved even in modded netgames
      This allows you to time attack with any addon, without ruining your vanilla times
      No more need for an external savegame (those are now unsupported)

    • This allowed us to improve and add many things to the game Statistics
      Game now keeps track of:
      Total Playtime
      Record Attack Playtime
      Race Playtime
      Battle Playtime
      Total matches played
      Time you've been targeted by SPB
      Time you've spun out
      Your total race wins
      Your total podium placements
      Your total item hits
      Your total item self-hits
      Your total sink hits
      The amount of times you got sinked
      Your total respawns
      Two new pages have been added to the Statistics screen to accomidate this

    • Added a toggle to colourise speedlines
      option 1 only makes them have player colours when going a certain speed, aswell as rainbow during invul
      option 2 does this and also adds colourisation depending on your current driftboost level
      option 3 is like option 2 but only applies driftboost level colours
      If enabled, they now also spawn when someone has picked up and eggbox and is about to explode

    • Added a toggle to keep the visual driftsparks while in air and drifting "airdriftsparks", also in Saturn Options

    • Added support for rotated hud patches (patch = v.cachePatchRotated(name, rollangle)) (Thanks Anonimus! c:)

    • Added a spinout effect for player minimap icons (Thanks Anonimus! c:)
      minimapspinout
      Toggable with "spinoutroll" or in Saturn HUD Options menu.

    • Added a Player angle indicator to the minimap
      this comes in 2 styles: "dot" and "headlight" similar to MKWii (Thanks Chearii and Superjustinbros c:)
      kart0202

    • Added a new Dial speedometer (thanks Chearii c:)
      432032382-d96eba0d-a619-4180-b56b-87a787e010ba

    • Added support for SRB2.2s blendmodes (thanks Chearii c:)
      this allows for cool effects like:
      409058096-c5aa8b79-1efc-411b-9a62-b653c574a35f
      kart0026
      (examples to show whats possible)
      for more information see https://github.com/Indev450/SRB2Kart-Saturn/pull/158 and the SRB2 wiki

    • Added a few blendeffects to certain player effects toggable with "playerblendeffects"
      they apply when going really fast or during sneakerboost
      they apply to things like boostflames, speedlines, invul sparkles and more!

    • Added a toggle to colourise speedtrail flames "sneakertrailcolor" (Thanks Nepdisk! c:)

    • Added a two new options for the input display, intended for use with controllers, which will show your stickinputs (note: due to limitations with vanilla compat, accurate stick inputs can not be get from other online players or during replays) (Thanks Nepdisk! c:)
      This comes in 2 styles, "SRB2" and "StickGFX" (Thanks jin c:)
      kart0206

    • add support for multiitem patches, toggle with "multiitemicon" (Thanks Spee, jin and Nepdisk! c:)
      kart0205
      "K_ITSHO2", "K_ITSHO3" for 2x and 3x sneakers
      "K_ITBAN2", "K_ITBAN3", "K_ITBAN4" for 2x, 3x and 10x bananas
      "K_ITJAW2" for 2x jawz

    • Added a toggle for a "fancy" roulette animation, like xitemlib's by minenice
      This can be found in Saturn Options > Saturn HUD > Animated Roulette

    • Added a toggle to make dragged bananas "jitter" like in old kart betas
      This can be found Saturn Options > Bananadrag Jitter

    • Trailing items now properly support rotating on slopes

    • Added a toggle to make thrown bananas and eggboxed rotate midair
      option 1 just makes them rotate midair but stay upright on the ground
      option 2 does the above but keeps them also rotated on the ground (similar to Ring Racers)
      This can be found in Saturn Options > Sprite Distortion > Rotate Bananas on throw

    • Added "listmapthings" and "listunusedsprites" commands
      listmapthings shows all freeslotted mapthings and also duplicated mapthings
      listunusedsprites lists every unused freeslotted spite

    • A lightlevel field has been added to mobj struct, which either allows to add/subtract from a mobjs current sector lightlevel, or with the FF_ABSOLUTELIGHTLEVEL frameflag, is able to set a lightlevel directly

    • Added cv_palette and cv_palettenum, so palettes can be changed midgame
      Subpalettes do not work properly in OpenGL with paletterendering disabled, so palettenum will NOT work there

    • Added a command "gr_glinfo" to list all opengl extensions the current GPU supports (useful for debugging) (Thanks xyzzy c:)

    • Added support for "Tweakmaps"
      they work like encore palettes, but lumpnames end with a "T" instead of "E" and will be used in regular races instead

    • Hold "Custom 3" to ???

    nugdance

    Improvements

    • Complete refactor of LUA Hooks (port from SRB2)
      This greatly improves lua hook performance

    • NetXCmds are now getting delayed instead of being dropped when the NetXCmd buffer is full (credits to Hanicef, port from SRB2)
      This should allow scripts any size to work without issues (waits are no longer needed)
      This may also help prevent you from becoming "green sonic" on netgame join sometimes

    • Using the connect or map command while a menu is active now closes the menu

    • Removed the forcing of specific characters in the ip adress box, you can now also use shift + insert on it (well and write whatever in it as well)

    • Made the tcp/udp code more verbose and it should now print actually useful errors

    • The Saturn resynch system has been changed internally to better detect clients that can use the gamestate resend system
      This should reduce massive lag on mass desynchs and potential other issues
      This makes v7 clients be unable to use the gamestate resend when the server is hosting v8 and newer (however v7.1 and v7.2 are fully compatible with this)

    • Huge Patch and Texture refactor
      This should hopefully fix random patch related crashes (due to alot better memory and reference management)
      Patch dimensions do not need to be casted with SHORT anymore (unless their pointing to an unconverted doompatch)
      multiple new purgetags have been added for better memory management and tracking
      for caching patches please use "PU_PATCH" now , for caching sprites please use "PU_SPRITE" now
      Should improve performance, esp in Opengl, quite alot due to better cache handling (no more aatrees)
      as a result memfree now shows all patch related things seperately

    • Many Optimisations to sprite drawing and sprite rotation features

    • Refactored spritescales and offsets; now should be easier to hardcode effects with those without messing up lua

    • Fixed some issues with OpenGL Models and sprite rotation features
      Rollangle now properly works, as well as Sloperoll
      Models now don't "snap" to the ground they are on anymore, but instead roll "smoothly", similar to sprites
      this also fixed issues with some models being incorrectly tilted and rotated on some slopes (ex: dropshadows)

    • Better sloperotation for dropshadows, they now dont copy the rotation from their source mobj

    • Refactored OpenGL library handling, should result in slight speedup due to less overhead, also makes it easier to use in code

    • Refactored OpenGL texture update handling
      This should hopefully result in less stuttering on some maps

    • Screentexture sizes now are split in width and height (this should make OpenGL screenshots on very high resolutions a little bit faster, maybe slight performance boost too?)

    • The game will no longer draw the final screen texture twice if you´re playing the game at your native desktop resolution leading to a significant speedup in some cases (It's needed for some things when you run the game at a lower resolution than your display resolution)

    • Fix up texture precaching + add Opengl texture precaching

    • "fovchange" now works in software renderer

    • Added a faster R_PointOnSide which is used to speed up bsp traversal in rendering

    • Optimized "R_Subsector" by skipping fofs without planes in planelightlevel recalc (interp flicker hack)

    • Optimized opengl horizonline checking by checking for them on mapload

    • A lot of work has been done to the software renderer, to fix a few visual bugs, and to finally get it to a "stable" state

    • scr_depth cvar has been changed to gr_texturedepth and will now apply changes without having to restart the game

    • Unglobalised save/demo buffer and passed it through functions instead
      This should make joining safer and less prone to desynchs or crashing
      same applies to the improved resynch system

    • Made internal replay data handling a lot safer
      This should hopefully fix any issues like:
      The game randomly crashing if you stay too long on a map with many players
      Allows dedicated servers to completely disable replay recording
      Broken replays that crash on load
      Ghost data crashing in many cases

    • Fixed a rare crash that could occur if you get hit during resynching, or a hit causes a desynch

    • Allocate some extra buffer for demo recordings (should hopefully prevent all crashes on any replay settings when the replay gets too long)

    • Players that get 'NO CONTEST' can save replays now too

    • Seperate thinkerlist for precip thinkers;
      This saves alot of useless iterations in every thinker loop and improved thinker performance a lot on maps with weather
      Weather floor calculations have been optimized and now only occur for weather mobjs you actually see (this saves A LOT of time on maps with many moving floors)

    • Some optimizations to _GetZAt functions (they are used A LOT)

    • Optimizations to P_CheckPosition
      Alot of R_PointInSubsector are now skipped if the mobj being checked didnt move
      Now skips iterating the blockmap in search for polyobjects if there are no polyobjects present on the map (suprisingly good performance improvement)

    • Added a faster "P_CheckSightFast" to use with non gameplay addons like nametags (not synchsafe!)

    • New folder structure similar to SRB2/Ring Racers
      Gifs and Screenshots now have their seperate folders (can also be changed from data options)
      Game now creates an Addons folder (DOWNLOADS folder unchanged)

    • New improved logging system
      instead of always replacing the log at every game start, the game now seperatly saves a new log everytime
      the current/latest log can be found as "latest-log" in the kart folder
      This allows to get logs for things without anyone having to worry about already having restarted their game

    • Use the new textinput system for addon search (makes it being able to copy paste text in there etc.)

    • Using this for the ip connect box also now allows server adresses up to 64 characters to be input

    • Made more stuff in the menus support lowercase text which were missed before

    • Changes to controller rumble
      Being in invul or hyudoro state while in offroad makes the rumble alot less intense now
      Brakedrift rumble now gets added to other rumble states instead of just being used when nothing else rumbles
      Dragging items now rumbles aswell (soft pulse rumble)
      Spinout rumble now becomes gradually softer the closer your spinout time is to run out

    • Added toggles to make the botton right position number be half as big and to disable the animation during overtaking, "postitionanimation" and "smallpositionnumber"
      They can be found in Saturn Options > Saturn HUD

    • Split the position number and ra wheel hud offsets so they can be moved seperately

    • Added a toggle to disable the camera turnaround on timeover "cam_timeover"

    • Menu sliders now show the actual number value

    • Crashlogs now also show the actual map name if it is available

    • Added changable saltyhop height "hardcodehopheight" or in the sprite distortion menu

    • Changed "playestretchfactor" to be a CV_FLOAT again and made it use a slider in the menu

    • Added a toggle to change how saltyhop affects playerrotation "hardcodehoproll" or in sprite distortion menu

    • Changed the button to add addons to autoload from "Right Shift" to the "END" key to prevent players from accidentally adding things to autoloading
      The Addon menu now also displays a small hint that you can press a button to autoload files lol
      NOTE: it is heavily recommended using autoload/postload instead of using addfilelocal in any scripts since it will make sure certain addons will only get loaded after ALL server addons have been loaded, this should prevent alot of issues that may potentially cause crashes or desynchs!

    • You can now scroll faster with Page up/down in the replay hut

    • The replay hut will now show dates of replays (if it can get a date lel)

    • Added "inputdisplay" option for lua hud enable/offset stuff

    • The item button now can be fully used in the skin selection menu to change the skin sorting and revert the skin to the default color

    • Added a new menu for game focus options and moved all according toggles into that

    • Added a toggle to make the game always grab and hide the mouse cursor when in focus "alwaysgrabmouse"

    • Added a toggle to vertical up and down look "verticallook" when holding forward or backward while standing still (toggable per splitscreen player, also in camera options)

    • Made camera lookback momentum changable per splitscreen player

    • Better handling of votescreens
      game now checks for votescreen replacements and if the widescreen background has not been changed/supplied it will fallback to the replaced non widescreen one
      (this allows older votescreen replacements or ones that dont supply widescreen ones to work in widescreen resolutions without just showing the vanilla votescreen)

    • Add interpolation related stats to perfstats (Thanks chromaticpipe c:)

    • Added a "Proxy Makefile" to be able to compile the game from the root repo folder (Thanks chromaticpipe c:)

    • Deprecated "addskins" command
      "addfilelocal" should be used instead

    • /pm code has been slightly refactored and should now show player names in full

    • Completely refactored player camera handling

    • Refactored A LOT of gamepad code

    • Refactored the automap and added a minimap generator "port from Ring Racers" invoke with "minigen" command

    • Refactored musicdef handling

    Fixes

    • Fixed an issue that caused MASSIVE performance drops when having the gamma setting changed from default

    • Fixed an issue that caused the OpenGL Palette rendering postprocess shader to be applied twice

    • Fixed the splitscreen "DONTDRAWFORP" flags being broken

    • 5000th attempt at fixing issues with OpenGl "sprite shadows" (the weird ones) having wrong colors

    • Fixed a few OpenGL culling issues using more accurate maths (ex disappearing wall in SRB2 Silent Night)

    • Ported over the new skydome code from SRB2 which fixes a few minor visual issues in skyboxes

    • Made Sprite drawers in both renderers safer so they should be less likely to crash

    • Made an optimization in software that was added before actually doing something

    • A lot of fixes to interpolation (fixes camera jitter in replays)

    • Fixed an issue that sometimes changed the minimap to some random patch when you added an addon while ingame

    • Fixed some potential undefined behaviour by faulty float to int conversion when framecap was set to "unlimited"

    • Fixed an issue that caused player spriteoffsets to be constantly reset if saltyhop was disabled

    • Fixed an issue that caused player spritescales to be constantly reset if gravstretch was disabled

    • Fixed and issue that caused the "slope contrast" effect to be alot weaker than intended when using the "standard" contrast setting

    • (Hopefully) fixed an issue that may crash the opengl renderer colormapped patch drawers randomly (use after free yay)

    • Fixed an issue that may cause the sprite drawdistance to overflow on mobjscaled maps

    • Fixed ghost mobj spritescale and offset interpolation

    • Fixed an regression that caused weird and broken fofs to appear on some maps (that one si-ht lava themed map lel)

    • Fix issues with Saturn resynch not triggering in some cases

    • Fixed using the connect command from console not saving to "Join last server"

    • Hopefully fixed an issue that caused clients to occasionally lock up if they didnt receive a server ack (should hopefully fix some issue like getting stuck on connecting to a server)

    • Clear "acktosend" when initialising a node (should hopefully fix some issue like getting stuck on connecting to a server)

    • Fixed an issue that didn't properly reset Player "Pingtable" values, which might have caused weird lag and wrong ping measurement on netgame joins

    • Fixed a crash that may happened when aborting http downloads

    • Attempt at fixing the annoying bug that sometimes makes direct download crash your server (it will now disconnect from the player that is downloading and throw a warning instead)

    • Added EADDRNOTAVAIL to the tcp error ignore list so the game doesn't "crash" if we dont have a socket for an address family we have disabled

    • Fixed sock_send completely ignoring certain errors

    • Fixed server lan discovery
      Servers that are locally hosted in your network will now actually appear in the serverlist
      Fixed an "EINVAL" error that was supressed all the time

    • Disabled the ipv6 define since it was broken and disabling it means theres less stuff to break

    • Put back networking code into the renderer :blobcatgooglyholditsheadinitshand:

    • Potentially fix "Received a file not requested" error in poor net conditions

    • Reverted cleaning up some "doomcom" netcode related things that may have been problematic in regards to vanilla clients

    • HTTP download improvements

    • Fix crash when using connect command from within replays

    • Reset demo stuff for multiplayer demos when using connect command
      So if smth happens and we cannot connect the game wont be stuck in some weird replay limbo state

    • Fix server listing refusing to list servers on resolution failure

    • Hopefully fixed an issue that made "skipintromusic" continue to play the title screen music

    • Fixed an issue that made "keepmusic" keep no music when the music was stopped

    • Added spbattack music to the keepmusic ignore list

    • Hopefully fixed an issue that made "keepmusic" not work occasionally

    • Hopefully fixed a rare crash in sound conversion code (division by zero)

    • Fixed saltyhop cutting off drift sounds if you disabled saltyhop sound effect

    • Fix music being resumed while in pause when window loses and regains focus

    • Fixed an issue that cause keepmusic to keep music that was not flagged to be kept after respawn

    • Fixed gamecontrols being stuck when opening the pause menu

    • Reverted an optimization to polyobjects that caused desynchs during midgame joins

    • Fixed an issue that caused CONS_Error to cause abnormally high cpu usage when the Message box was active and waiting for Enter input

    • Fixed an issue that caused a wrong camera angle to be set when you switched viewpoints to another player and back during map start

    • Better fix for nights hoop midjoin crash; now the animation plays when midjoining!

    • Fixed a leak with polyobject thinkers

    • Prevent starting replay playback while ingame (this caused MASSIVE issues)

    • Using either demo or timedemo command from the main menu, while the menu is active now closes the menu properly

    • Removed fwrapv from compiler flags (it technically may change behavior of things)

    • Fixed a potential crash with perfstats sampling

    • Fixed an issue that caused menu sliders to cause heavy fps drops when their value was changed from default

    • Fixed an issue that may prevented replays from saving when changing the replay name at the end of a race

    • The replayhut query will now only reset if the replayhud was not open previously (you will now be brought back to the right position in the replay list after watching a replay when using the replay search function)

    • Reverted a few tic related things to behave like vanilla again

    • Fixed an issue that prevented menu sliders from working with CV_FLOAT cvars

    • Fixed a rare out of bounds reads with "playeringame"

    • Highres portraits and the statdisplay now will be handled better on resolutions below 640x400

    • Title screen demos will not run with complex addons (this often caused crashes and weird behaviour)

    • Fixed P_CameraLineOpening

    • Fixed an use-after-free when loading addons after searching addons

    • Fixed a potential crash on startup

    What's Changed

    New Contributors

    Full Changelog: https://github.com/Indev450/SRB2Kart-Saturn/compare/v7.2...v8

    Downloads
  • v7.2 54cbfbe699

    alufolie91 released this 2024-11-05 21:02:38 +01:00 | 4941 commits to Saturn since this release

    Another small bugfix release yay!
    For everyone using Saturn v6 and up it is highly recommended to update since there were a few netsynch issues with versions starting from v6
    esp Server owners!

    NOTE: there is an extra PGO (Profile Guided Optimization" build availible for 64bit Windows, which aims to improve performance even further;
    do note that the non PGO builds also have support for FBO downsampling disabled;
    So if you face issues with the PGO build try the non PGO ones
    (For nix users FBO downsampling is enabled by default since it works around issues with Nvidia GPUs in certain configurations, however if you wish to build without support add "NOSCREENFBO=1" to your compile args

    --Improvements--

    • Refactored postimg screen effects, so they can work with each other (fixes things as underwater/heatwave screen effect not working with encoremode etc.)
    • Moved autoload file loading to game startup again, but check for if autoload files contain skins, lua or soc files, if so, move it to postload automatically to prevent issues in netgames (having both autoload and postload run at mapstart could lead to super long netgame jointimes and "freezes")
    • Optimized OpenGL portal clipping (fixes some visual bugs and better performance)
    • Some optimizations and cleanup to rendering code
    • Some fixes and optimizations to Weather sound calculation
    • Added "shift+insert" shortcut for pasting text
    • Use precalculated minimap stuff for v.drawOnMinimap aswell instead of calculating stuff for it every frame
    • Let director be toggled from spec cam again (going from director/spycam back to spec cam auto disables director now; spec cam control text now also shows director toggle button)

    --Fixes--

    • Fixed mapmusname global in lua being renamed to (*mapmusname) (scripts trying to read just "mapmusname" would break)
    • Fixed off-by-one error in lib_setSfxInfo (some sound addons desynched vanilla clients and vice versa ;funnydeaths etc.)
    • Removed some not vanilla synchsafe "mobjwasremoved" checks and replaced them just will "NULL" pointer checks instead
    • Fixed crashes and other issues with "map ?" (map random) command
    • Fixed A_Lua not removing error handler from lua stack
    • Fixed some rendering issues and crashes in software renderer
    • Fixed "MFE_DRAWONLYFORP" flags being broken
    • Fixed minimap displaying an old minimap on maps that have no minimap (ex touch the jelly)
    • Fixed some issues with "small minimap icons"
    • Fixed being unable to load localskins when the skin limit was reached
    • Fixed being unable to load skins when the localskin limit was reached (oops lol)
    • Added alot more FBO downsampling safety checks to ensure it does not do anything when disabled or not supported
    • Ignore slope rotation distance setting in splitscreen due to bugs + small sprite rotation code cleanup
    • Downgraded lzf lib again due to potential issues on Windoze builds
    Downloads