Compare commits

...
2781 Commits
Author SHA1 Message Date
indev 5a44afcd9f Disable multithreading in R_DrawMaskedList 2025-07-01 16:09:18 +03:00
Alug 3c282b5022 this can use min/max 2025-07-01 14:42:28 +02:00
Alug f4d40bd55f "-Wno-aggregate-return" for c++ 2025-07-01 14:38:42 +02:00
Alug 465fea8bb3 "restrict" macro for c++
since it does not have it, use __restrict instead
2025-06-30 12:18:21 +02:00
Alug d47e20b54e those can be const 2025-06-29 11:44:29 +02:00
Alug 4e9f9b7e0e Revert "add "for_each" to srb2 threadpool"
This reverts commit 604bc40021.
2025-06-27 16:38:19 +02:00
Alug 9650139470 Revert "allocate tiltlighting buffer in R_AllocViewMemory again"
This reverts commit b541de4f8c.
2025-06-27 16:38:16 +02:00
Alug 054a40a4b2 Revert "omit realloc and use unique_ptr for our tiltlighting buffer"
This reverts commit e351c1e62a.
2025-06-27 16:38:13 +02:00
Alug 972ee5cf76 remove erronous BACKSLASH
was from when this was a macro lel
edit: screw you comptime
2025-06-26 20:17:33 +02:00
Gustaf Alhäll aef02cb347 Fix one-pixel wide gaps in tall sprites 2025-06-26 20:09:16 +02:00
Alug 36e485b2a3 move gl portalcullsector check back to the right place lel
oopsie
2025-06-26 15:13:54 +02:00
Alug d23c51e707 mark node as restrict again pointonside 2025-06-26 13:22:17 +02:00
Alug 0db437aadd do some more tiny optimizations
-those can all be declared with restrict
-our ternary clamp macro is slightly faster than std::clamp
2025-06-26 13:22:15 +02:00
Alug e351c1e62a omit realloc and use unique_ptr for our tiltlighting buffer
this makes asan shut up, since those effectively clean up after themselves
2025-06-26 13:22:11 +02:00
Alug b541de4f8c allocate tiltlighting buffer in R_AllocViewMemory again
just removes the ugly stuff in the span drawers
needs to be tested a little, but should be fine
2025-06-26 13:21:56 +02:00
Alug 604bc40021 add "for_each" to srb2 threadpool
this exectures something for EACH thread not some abritatrily choosen ones
2025-06-26 13:21:52 +02:00
Alug be8ddebd80 forgor about the new signal handler oop 2025-06-26 00:39:01 +02:00
Alug b2a36850cb Merge branch 'Saturn-Next' into softwarecrap 2025-06-25 12:47:43 +02:00
Alug 8353c1efdd add toggle for software cyan cut stuff
"softwarecyancut"
this is disabled by default, since some vanilla maps were designed around this
also costs a bit of performance (splat span drawers are slooooow)
2025-06-25 12:47:25 +02:00
Alug d19a2e0912 attempt to make fofs in software always cut cyan pixels
if they do contain cyan pixels lel
kinda meh, and needs a toggle
2025-06-25 12:45:14 +02:00
Alug 07432c0381 turn angle stuff into a switch in R_SetupSkyScale 2025-06-25 12:29:58 +02:00
Alug 4fb3b63152 optimize R_StoreWallRange with cut down version of rendersegloop when a seg is untextured
from srb2, its just a cut down rendersegloop with alot less things to check and such
2025-06-23 19:38:57 +02:00
Alug 85b736620a Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2025-06-23 19:26:07 +02:00
Alug 9f770993d4 proper init enterprecise 2025-06-23 19:25:50 +02:00
Alug 4bd02ad325 check if player is local here 2025-06-23 19:25:46 +02:00
Alug 6e7b45d15c simplify R_SetupAimingFrame 2025-06-23 19:25:34 +02:00
Alug 99ebca51d5 use const_cast for colfunccopy
idk its from rr idk why it was like this
2025-06-23 19:23:56 +02:00
Alug 24eb888af3 make skytextures support texture offsets in software 2025-06-23 19:20:20 +02:00
Alug 09ce33abb9 just always clamp the non psprite texture column
this may underflow, which the check in the lööp body does not account for
2025-06-23 19:18:11 +02:00
indev 044ff158a1 SF_HIRES is already handled via spritexscale and spriteyscale 2025-06-23 18:37:57 +03:00
Alug 36c68d055c minor optimizations r_things 2025-06-21 18:07:44 +02:00
Alug ddf7d7cdcb use templates for R_ClipWallSegment
actual slight speedup
2025-06-21 18:07:41 +02:00
Alug 38950d580f fix a clang warning 2025-06-20 09:54:20 +02:00
Alug 707701f317 do palette stuff in st_ticker
cleanup and dont call it in normal ogl at all unless palette render with flashpals is enabled
inspired by Nyan-Doom/Woof
2025-06-20 09:54:17 +02:00
Alug 09507d635b remove now unecessary type cast 2025-06-19 17:41:26 +02:00
Alug ab85d6a693 shut the up -Waggregate-return 2025-06-19 17:41:23 +02:00
Alug 5011b17f88 attempt at optimizing drawcolumn drawers a bit more
inspired by dsda/prboom
seems to be super slighty faster
2025-06-19 15:57:21 +02:00
Alug 7bef45f701 Merge remote-tracking branch 'origin/Saturn-Next' into softwarecrap 2025-06-19 15:50:55 +02:00
indev 40cbce8f9f Merge pull request #178 from Indev450/newmakefiles
Port over SRB2´s makefile rewrites + Port Dedicated server build
2025-06-19 16:47:34 +03:00
Alug 70a70084c9 macrofy ogl function pointer setup
should make it a little less annoying to add new functions
2025-06-17 19:21:09 +02:00
indev b6da6359d3 If gamestate resend took too long, abort resynching 2025-06-16 21:43:54 +03:00
Alug 97075ca5c5 remove some code dupe
starting to like those lambda things
2025-06-13 16:08:06 +02:00
Alug e94737945a fix double sided skies per addline clipping code
fixes greencave skybox
hopefully this is it and doesent break anything else sigh
2025-06-13 08:11:45 +02:00
Alug 57f15e0213 R_GenerateBlendTables can be static 2025-06-13 03:23:31 +02:00
Alug 2eae9b197c port the span and column drawer templates + tilted translucent splat drawer
took the liberty to also carry over our optimizations, this is actually slightly faster than what we had before
2025-06-13 03:23:25 +02:00
Alug 68c7620349 Merge branch 'Saturn-Next' into softwarecrap 2025-06-13 00:53:30 +02:00
Alug 7a3faf34e7 move this into an if else
saves us a little work
2025-06-13 00:20:59 +02:00
Alug d401644447 tweak the sky checks even more
apparently koda has a skybox, and checking like this makes it not trigger, lets hope this has no bad side effects Zzz...
2025-06-13 00:20:48 +02:00
Alug dfc349b230 Merge branch 'newmakefiles' into softwarecrap 2025-06-12 23:33:49 +02:00
Alug be3e5a964d pass -flto to linkerflags too
lel forgor
somehow this still worked anyways
2025-06-12 23:33:41 +02:00
Alug 687d2bd894 Merge remote-tracking branch 'origin/Saturn' into Saturn-Next 2025-06-12 23:18:45 +02:00
Alug 78b642cf2d Merge pull request #183 from P-AS/mac-fixes
Fix build on macOS
2025-06-12 21:46:39 +01:00
Alug cb3b6ca34b Merge pull request #184 from chromaticpipe/levelinterpolatorjitter
Fix level interpolators jittering during objectplace
2025-06-12 20:46:31 +01:00
Alug ad15bf0ea3 readd some lost comments in r_bsp 2025-06-12 19:48:58 +02:00
Alug 56021ed999 dont compile with software multithread if NOTHREADS/HAVE_THREADS=0
might be useful for smth ig
2025-06-12 19:48:55 +02:00
chromaticpipe 3d22a5906f Fix level interpolators jittering during objectplac 2025-06-12 11:37:25 -05:00
Alug b6d771b48f unnest the skybox scale setup stuff 2025-06-12 17:10:26 +02:00
Alug ab30fb2e5e check if seg has any texture at all
seems to work even better and less "false positives"
also removing some redundant conditons
2025-06-12 17:10:22 +02:00
Alug 618d9e4cdf add lugent to credits 2025-06-11 20:55:26 +02:00
Alug bf78ad9c75 absolute insanity to hopefully fix all sky issues while keeping skyvisible 2025-06-11 20:28:16 +02:00
Alug 918a4e8cd9 add tilted fog span drawer
fixes the red fog blocks on mkrevamp
2025-06-11 17:10:47 +02:00
Alug e90c84c9ac we have a var for that lul 2025-06-11 16:32:36 +02:00
PAS a9209a4887 Include errno.h on macOS 2025-06-10 21:53:43 -04:00
Eidolon 0a3e7ba09f Include poll.h on UNIXCOMMON
Apple was not including poll.h despite needing it.
2025-06-10 21:49:00 -04:00
Alug eb132b08c0 make the check a little more robust + account for slopes a little 2025-06-11 00:31:01 +02:00
Alug 82407c3560 add missing plane bounds check to R_DrawSkyPlane 2025-06-11 00:30:59 +02:00
Alug f1a8210663 another attempt at actually fixing sky issues
absolutely fucking horrible
but this also does account for single sided lines aswell and gets rid of artifacts and perf
2025-06-10 18:33:20 +02:00
Alug 1d722be4bc few smoler optimizations r_segs 2025-06-10 01:21:36 +02:00
Alug 62a660bfe1 maybe this makes perf better somehow 2025-06-10 01:21:34 +02:00
Alug 2984795175 kill the splitscreen lööps from R_RenderPlayerView
this already gets called from within the one that assigns viewssnum which we can just use here
2025-06-09 23:45:02 +02:00
Alug da706d89a5 absolutely disgusting hack for sky issues
instead of homremoval, we draw the fucking skyplane before everything lmao
there probably is a right way to fix this, but im too dumb for that
needs some performance testing, but since i could move the semaphores back, its even better in some instances
2025-06-09 22:59:52 +02:00
Alug a8005d5cec fix portals dying
due to nummasks being too small and causing an overflow
ty hannu!
2025-06-09 20:57:19 +02:00
Alug 793ccff6e6 fix the goddamn portal use after free
https://git.do.srb2.org/STJr/SRB2/-/commit/f536ab34674fb8d3ee262a0009753f552074305c
2025-06-09 19:02:58 +02:00
Alug e7db9bf1fd fix bad copy paste lul 2025-06-09 17:09:57 +02:00
Alug 88d62c93a1 fix SHITPLANESPARENCY and QUINCUNX
maybe
2025-06-09 17:06:31 +02:00
Alug d73532d019 fix some fofs not rendering in software
i did an oopsie in 7.2 X)
2025-06-09 17:06:23 +02:00
Alug 84d3d23936 declare fracstep as const 2025-06-09 17:06:20 +02:00
Alug 717947843b memset those 2025-06-09 17:06:16 +02:00
Alug 968584a316 make skyportals account for how kart sets the viewheight
no we still dont use it
2025-06-09 17:06:14 +02:00
Alug ccd67f621a dont set any texture mapped drawer when fog 2025-06-09 17:06:10 +02:00
Alug 80b301dbbe unnest the overflow_test stuff
its also a ternary now lul
2025-06-09 17:06:07 +02:00
Alug 001e61d39d Merge branch 'Saturn-Next' into softwarecrap 2025-06-09 17:06:02 +02:00
Alug 19c98a436a fix some fofs not rendering in software
i did an oopsie in 7.2 X)
2025-06-09 17:05:42 +02:00
Alug 8dd6d7cfdd fix the fov adjust check
lmao oops
2025-06-09 16:59:00 +02:00
Alug 7456b6e02c Revert "bring back old clipwallsegment stuff"
This reverts commit 6af77afc44.
2025-06-09 04:27:58 +02:00
Alug 5e8096f74c move hom removal to D_Renderview
removes the hwr code dupe and moves this out of the splitscreen loop
2025-06-09 00:21:41 +02:00
Alug 6af77afc44 bring back old clipwallsegment stuff
i just didnt like the flow of the new ones
2025-06-08 21:38:57 +02:00
Alug 42eeb7bdf5 fix the massive slowdown on ante
due to really bad loop layout
std::fill is only cause it looks fancy :3
2025-06-08 21:38:54 +02:00
Alug 6f4b1e5125 fix portals on slopes
idk this is quite the hack, but it works
this adjustment somehow got omitted from srb2 during the portal refactor
2025-06-08 20:03:09 +02:00
Alug 22e65cdda8 readd portalcullsector
+ sprite clipping improvements with portals
2025-06-08 20:03:06 +02:00
Alug 9d342d0f3d fix lightlist memory leak
not sure if we need to copy over the old shit, but this seems to work aswell
2025-06-08 17:24:18 +02:00
Alug 9583bed718 fix da rippled wöter
i hate fixed point maths lmao
2025-06-08 00:43:15 +02:00
Alug b69ce75712 do NOT use Z_ functions in threaded stuff
shit dies
2025-06-08 00:25:03 +02:00
Alug a1cd19b023 make the fov dependant init stuff bit more safe and stuff 2025-06-07 23:54:12 +02:00
Alug 6e50710b25 fix column data colormap shit in R_RenderThickSideRange
too lazy to explain so https://git.do.srb2.org/KartKrew/RingRacers/-/commit/1ccd41c3dbb3132ce7467edf0c12c9d420b189f9
2025-06-07 23:31:51 +02:00
indev 989a971d27 Fix 'C++11 requires a space between literal and string macro' warning 2025-06-07 23:18:55 +03:00
indev 24ee56ce7a ceepeepee 17 :3 2025-06-07 23:15:55 +03:00
Alug 52f99dd9c1 fix span corruption due to wrong types being used
i did not realise srb2 changed this at some point to use fixed_t
2025-06-07 20:05:51 +02:00
Alug 6374fda570 convert i_system to cpp add missing exit for threading errors 2025-06-07 20:05:48 +02:00
Alug cdd2d6323e dont think we need this twice lel 2025-06-07 20:05:03 +02:00
Alug c508a7ea78 smol makefile stuff 2025-06-07 20:05:01 +02:00
Alug 1380a394c7 remove duped declaration 2025-06-07 20:04:58 +02:00
Alug 2c937099d4 this does nothing lel 2025-06-07 20:04:55 +02:00
Alug 0a936b3bba fix le sourcefile 2025-06-07 20:04:52 +02:00
Alug 0a31e0a65e use realloc for batching stuff
seems to strangely speed things up even
didnt think those happen often?
2025-06-07 11:55:52 +02:00
Alug 8627a18452 Merge pull request #182 from chromaticpipe/fixedhelp
Fixed help command
2025-06-07 10:54:36 +01:00
Alug be528adea5 thanks michaelsoft! 2025-06-07 10:21:25 +01:00
James R. 5eb4ed8391 R_FindPlane: fix offsets rotation overflow for non-sloped planes 2025-06-07 11:43:13 +02:00
James R 9a00d30c0c Do not factor height into sprite thickseg sorting 2025-06-07 11:43:10 +02:00
James R 71237c5e11 Check that top of sprite is above plane or bottom is below
This fixes slightly raised fofs drawing on top of sprites that should be in
front of them. Previously would check that the bottom of the object was above
the plane. Now also uses sprite offsets like the fof seg sorting does.
2025-06-07 11:43:07 +02:00
Alug 9c6e32a1ab HACK: dont pass wflags to c++
silences some annoying compiler complaints lel
2025-06-07 11:43:04 +02:00
Alug 1bc18801c8 cleanup the software drawers even more + unroll them
looks pretty clean now, not sure if i want to port the templates, this is good enough for now
2025-06-07 11:43:01 +02:00
Alug 221f2a956e tiny optimizations 2025-06-07 11:42:58 +02:00
Alug b450abdf4d simplify R_ExpandPlane 2025-06-07 11:42:55 +02:00
Alug d36eed3c09 convert r_segs to ceepeepee + overflow fix from RR R_DrawRepeatMaskedColumn
+ alot of cleanup
should more or less function the same, just alot less messy
2025-06-07 11:42:52 +02:00
Alug 43ee791d4a fix slopes and slope flat alignment
software slopes finally are sane........
fixes certain maps like stardust speedway looking like complete butt
need to test ogl, not sure if theres any real change there
2025-06-07 11:42:48 +02:00
Alug c921945922 cleanup software drawer handling stuff
mostly ported from rr
is alot more readable and less confusing
2025-06-07 11:42:45 +02:00
Alug 5f8c77e752 test: allow multithreading for masked planes
quite a neat speedup on some maps
needs testing
2025-06-07 01:20:52 +02:00
Alug 064db977aa HACK: move semaphores into the drawplane loop, to fix a few visual glitches
a bit of slowdown, but i have no clue what exactly causes shit, so this is the best solution for now i guess
2025-06-07 01:20:48 +02:00
Alug 5868cd9777 make drawcolum lightlists use realloc again lel
otherwise theres a crapton of overlapping memory lel
2025-06-07 01:20:44 +02:00
Alug b0ddde996a forgor this from removing screen size static array stuff lel 2025-06-07 01:20:41 +02:00
Alug e03c3766f0 forgor to free the mask heads lel 2025-06-07 01:20:37 +02:00
Alug 953c0d7451 convert r_things to ceepeepee 2025-06-07 01:20:34 +02:00
Alug 97b303c362 split skin stuff from r_things into r_skins
what a mess
2025-06-07 01:20:31 +02:00
Alug 2ffe736a20 smol cleanup 2025-06-07 01:20:28 +02:00
Alug 21f2032f34 save smol amount of fixed to double conversions in R_StoreWallRange
also adds those as actual functions in case we wanna use it for smth else
2025-06-06 17:37:55 +02:00
Alug 2f66207205 make this less ugly 2025-06-06 16:55:38 +02:00
Alug 5a14b09c1f cache ds->transmap for translucent span drawers
super slight speedup
2025-06-06 16:35:26 +02:00
Alug 7e9da92dbe dont redundantly clamp the sprites texturecolumn
we already take care of this in the lööp header
2025-06-06 16:35:23 +02:00
Alug a27550b95b fix R_ProjectSprite clipping checks overflowing
was causing sprites to disappear in some angles
2025-06-06 14:43:03 +02:00
Alug 556883487d optimize software hud drawing
from srb2classic adjusted to our drawers
2025-06-06 01:17:36 +02:00
Alug 96f8533479 dont check for wraps on 0 height textures in column drawers
slight speedup thx srb2classic!
2025-06-06 01:04:20 +02:00
Alug f3cca27448 cache vid.width in the column drawers
shit was really slow lel
2025-06-06 00:55:23 +02:00
indev 252563725d Make tiltlighting buffer thread_local 2025-06-06 01:42:15 +03:00
indev 9a934a55e2 Revert "ok fuck you tiltlighting static buffer it is"
This reverts commit 2a023246be.
2025-06-06 01:39:51 +03:00
Alug f07d5d381e fix the goddamn boolean 2025-06-06 00:19:23 +02:00
Alug 3faab66ef4 add toggle for software multithread 2025-06-06 00:04:42 +02:00
Alug 2a023246be ok fuck you tiltlighting static buffer it is 2025-06-06 00:04:39 +02:00
Alug 006e7fe8f8 move this 2025-06-06 00:04:36 +02:00
Alug 1a7ff21a04 fix some warnings and plane ripple 2025-06-06 00:04:33 +02:00
Alug 98cb0fdcb2 fix slopes and other shit 2025-06-06 00:04:30 +02:00
indev 1fd7e9cdac Add -lpthread into libs and cxxopts into c++ compilation flags 2025-06-06 00:04:27 +02:00
indev 0a2eac4d3a Add ifdef __cplusplus into hardware/hw_main.h 2025-06-06 00:04:24 +02:00
Alug 9ac6fffd4d busted ass multithreading for le soft 2025-06-06 00:04:19 +02:00
Alug da20f4a087 Merge branch 'newmakefiles' into softwarecrap 2025-06-06 00:04:14 +02:00
Alug dbf822ced9 dont draw precip in the skybox lel 2025-06-05 15:05:29 +02:00
Alug 095842f4aa smol cleanup the splat drawers
didnt knew we actually use em so kinda didnt care lel
2025-06-05 15:00:35 +02:00
Alug 8c290d7597 kill static buffer for tiltlighting, again
kinda ugly but gets the job done lel
2025-06-05 14:48:50 +02:00
Alug 8a6f4db9af fix precip not drawing 2025-06-05 14:48:47 +02:00
Alug 99186a86db port masked drawlists for software + portal visplanes
Note: need to check if we gotta readd portalcullsector for ogl portals, technically this is alot faster and fixes the occasional portal disappearing, but may introduce occasional visual bugs
2025-06-05 14:48:44 +02:00
Alug c67bf97f7b unglobalize drawspandata 2025-06-05 14:48:41 +02:00
Alug 33a1540fcd unglobalise drawcolumndata
from RRs multithread
will follow up with spandata
2025-06-05 14:48:38 +02:00
Alug 529b0d643a delet dc_hires 2025-06-05 01:41:55 +02:00
Alug 4576efbe5c remove FIXMEs from draw column stuff 2025-06-05 01:27:34 +02:00
Alug 185375ece1 use ternaries for column clamp
it is slightly faster for me lel
also lets us get rid of an extra variable
npow2min is also declared static as its always -1
2025-06-05 01:25:33 +02:00
Alug d11521954e move those around + remove NOWATER ifdef 2025-06-05 01:01:31 +02:00
Alug 41c4300ec2 split r_draw8 into r_drawcolumn and r_drawspan
+ remove the _8 from the "namespace" since we dont have highcolor stuff
2025-06-05 00:52:53 +02:00
Alug 51d5023f29 those can be just "while" lööps 2025-06-05 00:44:59 +02:00
Alug d2878f8834 set MAXVIDWIDTH and MAXVIDHEIGHT to 8192
should accomidate absolutely everything
2025-06-04 23:03:17 +02:00
Alug 7808159d23 get rid of static screen size buffers, alloc em to current screen size instead
mostly taken from srb2s any-resolution branch
2025-06-04 23:03:14 +02:00
Alug e759431948 clamp shit so vhs effect doesent do oob writes on some resolutions
shoddy way but fuckit
2025-06-04 20:46:12 +02:00
Alug 268ccce955 move ripple blit stuff into own function 2025-06-04 20:00:06 +02:00
Alug f2d3432bf5 make software ripple splitscreen checks less awful to look at 2025-06-04 18:48:33 +02:00
Alug 2da89f1946 remove ylookup, columnofs and topleft lookups
move screens array to "vid" struct
remove a bunch of unused stuff

this speeds up 4 player splitscreen ever so slighty
mostly just alot cleaner than the mess it was before
2025-06-04 15:55:46 +02:00
Alug 6153733df4 unroll span drawer loops 2025-06-04 15:55:43 +02:00
Alug d280b39f9f use floats flor slope drawing
idea from srb2classic
2025-06-04 15:55:40 +02:00
indev 236e7b8d45 Fix game rendering only first splitscreen player in opengl 2025-06-04 03:57:54 +03:00
chromaticpipe dcccf672c9 Truncate trailing zeroes in float CVars 2025-06-03 13:18:02 -05:00
Alug 03f81bed16 dont initialise those twice lol 2025-06-03 20:00:52 +02:00
chromaticpipe fc51c1ba88 Fix help command for CV_FLOAT CVars 2025-06-03 11:38:46 -05:00
Alug 83d20a72ab delet this since its mostly wrong anyways 2025-06-02 20:05:09 +02:00
indev d50c1ab6d7 dedi's do run got_mapcmd :p 2025-06-02 14:21:34 +03:00
Alug 984c2ff8d6 Merge pull request #175 from chromaticpipe/serverinfo
Display server information before connecting to it
2025-06-01 21:03:19 +01:00
chromaticpipe 74646acdca Options. 2025-05-31 16:27:34 -05:00
indev 45ffe87ba6 Add new music credit draw style, 'songcredits Box' 2025-05-31 22:27:17 +03:00
Alug 37eb8cfa57 shut up curl im already long 2025-05-31 21:01:57 +02:00
Alug a0f903f162 i like switches mhhhm 2025-05-31 21:01:53 +02:00
Alug f1f0782256 fix memoryleak in pk3 verify functions 2025-05-31 17:30:19 +02:00
Alug 0e9a825f63 some crap from ceepeepeecheck 2025-05-31 17:27:07 +02:00
Alug 5c53a90eea hack: reset musiccredits when changing gamestate
otherwise they may persist if theyve been currently displayed
2025-05-31 16:20:58 +02:00
Alug 55c6ba6d12 fix awayview join crash
player->awayviewmobj may not exist yet in some cases
2025-05-31 15:57:20 +02:00
Alug 6617382f54 Revert "reset the palette earlier during levelload"
This reverts commit 5e532a76cf.
2025-05-30 23:59:08 +02:00
chromaticpipe dd499a410f Very bad gamepad support 2025-05-30 13:30:47 -05:00
chromaticpipe c04ba992a7 Forgort something 2025-05-30 13:26:27 -05:00
chromaticpipe 27c053cd48 Add Server info screen, ported from SRB2Classic 2025-05-30 13:23:36 -05:00
Alug 7d68c0598c Fix underflow in consistancy checking code
https://git.srb2.org/Hanicef/SRB2Classic/-/commit/9f5686ef48956cd64ef92f737e59cbbaa27d8cf9
2025-05-30 02:54:48 +02:00
Alug 201c725dc7 cleanup d_main a little 2025-05-30 02:54:45 +02:00
Alug e47e58a982 fixup ceepeepee support 2025-05-29 21:40:15 +02:00
Alug c05068f22f why are those still here lel 2025-05-29 19:35:15 +02:00
Alug f5cb473f3d thanks windoze very cool part 2 2025-05-29 19:33:46 +02:00
Alug c5b72f24b5 thanks windoze very cool 2025-05-29 19:33:37 +02:00
Alug 57b2316c42 didnt mean to change this lel 2025-05-29 19:01:19 +02:00
Alug fe682a8071 only make screentexture for postprocess if we need to
gives quite a neat perfboost on the gpu side
2025-05-29 19:01:16 +02:00
Alug bf44a054a1 move HWR_GetTexturePalette calls
to after early returns/where they are used
2025-05-29 18:17:26 +02:00
Alug eca9c60d9b call HWR_LoadMapTextures in paletterender toggle callback
from srb2 pr
2025-05-29 18:17:23 +02:00
Alug cf42c35b9f add mo checks to automap stuff 2025-05-29 13:40:57 +02:00
Alug a364068abb add a bunch of checks for if G_BuildMapTitle returns NULL 2025-05-29 13:40:53 +02:00
Alug e88093d9cf no need for an else here 2025-05-29 12:30:07 +02:00
Alug 5e532a76cf reset the palette earlier during levelload
generally make this behave like srb2/rr again
2025-05-29 12:30:05 +02:00
Alug fb9c459269 readd cubeapply check here 2025-05-29 12:30:00 +02:00
Alug 7c34733eea add nofork parameter to dedibuild 2025-05-28 23:58:10 +02:00
Alug a6898bd1cd this memset is incorrect and does nothing 2025-05-28 22:12:00 +02:00
Alug ff474d18ee remove this
prob wrong assumption, our netcode sucks massive ass
2025-05-28 21:44:38 +02:00
Alug f15d3be263 forgor the hw state lel 2025-05-28 18:39:20 +02:00
Alug 19e5366c5b add wireframe mode for ogl 2025-05-28 18:31:55 +02:00
Alug 346dee019c fix compiler warning bout playeringame 2025-05-28 18:31:37 +02:00
Alug 18914f22f2 remove crappy memcpy redifine from md5 2025-05-28 18:31:33 +02:00
Alug 1219ecf818 check for 32bit with __SIZEOF_POINTER__ for precip drawdistance
thx @chromaticpipe for the tip!
2025-05-28 16:27:40 +02:00
Alug b6923d0d0d readd flexible array for softwarepatch columnofs
how did this ever work lel
2025-05-28 16:21:57 +02:00
Alug 393ade780c add missing "time" include from dedi i_system 2025-05-28 14:43:27 +01:00
indev 8b2e6ea17b libpeethread 2025-05-28 16:54:37 +03:00
Alug 8c31682723 smol adjustments for main 2025-05-28 15:43:21 +02:00
Alug 7c87b5259a port SRB2s new makefiles + add dedicated build (squashed)
also fix some of the new warnings
to make a dedicated build just pass DEDICATED=1 to the compiler
TODO:make this compatible with bluajit
2025-05-28 15:38:25 +02:00
Alug e8969b0645 dont always print openmpt version to console
just use I_OutputMsg instead
2025-05-27 18:31:20 +02:00
Alug 7932c1af6f Print the current SDL_mixer version
when initializing the sound system
2025-05-27 18:30:55 +02:00
Alug 95b4228d3c update windoze libbacktrace
never was updated since we added this 2 years ago lel
2025-05-26 11:03:56 +01:00
Alug a0ff44043f Merge branch 'Saturn' into Saturn-Next 2025-05-25 17:37:40 +02:00
Alug 1e15816057 make screen tilt stuff slightly prettier lel 2025-05-25 17:36:38 +02:00
Alug a4566e9496 v8.2 2025-05-25 13:59:36 +01:00
Alug 18f88c28dd Merge pull request #174 from Indev450/Saturn-Next
Saturn v8.2
2025-05-25 14:59:06 +01:00
indev b8dc1b13df Merge pull request #173 from chromaticpipe/wateramplitude
Adjust the amplitude of GL underwater effect
2025-05-24 18:12:38 +03:00
chromaticpipe 33c03f1e7a Adjust the amplitude of GL underwater effect
Also fixed a string truncation warning
2025-05-24 09:02:49 -05:00
indev 7e5ae71714 Do backups for custom configs too 2025-05-23 15:14:42 +03:00
Alug b574ed0b1b allow capping the game fps seperately for when its unfocused 2025-05-22 23:17:48 +02:00
Alug 01c621832b Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2025-05-21 12:14:51 +02:00
Alug 608cc66d78 try to fix curl crashing if you dont have write access to download folder 2025-05-21 12:14:45 +02:00
indev 35103ad810 Only run song credits drawer and ticker in menu instead of all hud 2025-05-20 16:48:51 +03:00
indev 5ac0262654 Fix 'make clean' keeping depend.dep file 2025-05-20 01:02:03 +03:00
Alug c361285790 we may fixed the double free, but now we fix the ghost hitlist also crashing 2025-05-19 20:01:29 +02:00
Alug a168b5e2b9 let resynch method be "toggable"
setting gamestate attempts to 0 should disable saturn resynch and setting resynchattempts to 0 should disable vanilla resynch
2025-05-19 16:40:02 +02:00
Alug f70c38a853 Merge pull request #171 from Indev450/votebgscaling
Better Vote Background scaling behaviour
2025-05-19 15:01:07 +01:00
Alug 4c05c063a9 oop this was always true effectively 2025-05-19 15:59:15 +02:00
Alug ed05a909cb add vote scaling to menu 2025-05-19 15:56:56 +02:00
Alug e1e45ad3ad readd player var to lib_pDoSuperTransformation
otherwise this may desynch?
2025-05-19 15:48:29 +02:00
Alug ca9b001c9f even more random cleanup 2
hope i got everything right lel
2025-05-19 15:30:54 +02:00
Alug 3976d80867 delet old tools
they dont work anymore anyways
2025-05-19 00:22:34 +02:00
Alug 1ee10457f8 delet dummy 2025-05-19 00:22:31 +02:00
Alug 116bcd0cb1 random cleanups
note: 2d camera didnt work anyways
2025-05-18 16:46:25 +02:00
Alug fcdccb96aa move camera to spawn if you press freecam toggle when spectating
since we dont use the toggle in spectatormode
might be useful to return to the mapstart fast or smth
this is mostly just copy pasted from P_ResetCamera, which should be fine hopefully since we dont move our spectators anymore
2025-05-17 14:54:11 +02:00
Alug 723286826b make this switch slighty prettier 2025-05-17 14:02:00 +02:00
Alug b190f09aea fix 3d models rollangle on gravflip
idk if this is correct, but it works lel
2025-05-17 14:01:57 +02:00
Alug ff6358b031 make ogl screenflip stuff directly assignable
those dont need to be seperate bools lel
also simplify the assignment aswell
2025-05-17 14:01:54 +02:00
Alug 5899a0c453 ok even more cleanup for animvote check 2025-05-16 14:22:19 +02:00
Alug db4d9a330a even more tiny cleanup votebg stuff 2025-05-16 14:22:16 +02:00
indev 03264e760f Allow music credit to be drawn in intermission and main menu 2025-05-16 13:36:05 +03:00
Alug 224e3b25e5 Revert "those appear to do nothing"
This reverts commit 5f40ff5a03.
2025-05-16 01:30:28 +02:00
Alug 03c624a77b make addon warning not print "(null)" if there is no refreshdirname
kinda lazy way but shrug
2025-05-15 21:41:05 +02:00
Alug 1ed76de58a macrofy redundant splitscreen menus
joystick and camera menus to be specific
2025-05-15 21:41:00 +02:00
Alug 5f40ff5a03 those appear to do nothing
free performance ig?
2025-05-15 01:26:57 +02:00
Alug b1baa90b19 move paletterender walllight stuff into HWR_CalcWallLight
just slightly cleaner
2025-05-15 01:26:36 +02:00
Alug f0579de244 HWR_UsePortals 2025-05-15 01:26:33 +02:00
Alug 044836b026 change gamepad powerup led behavior
it will instead always take the players mobj color, this makes it indirectly support things like acrobatics and the colourized banana snipe
also just makes it a value for cv_gamepadled instead of its own cvar
2025-05-15 01:26:27 +02:00
Alug c2a761c895 delet some clutter in screen.c 2025-05-14 16:37:04 +02:00
Alug 5b6e7abd91 fix copy paste error oops 2025-05-14 16:18:18 +02:00
Alug c47c6aa6e4 make votebg scaling behaviour changable 2025-05-14 16:18:15 +02:00
Alug 5a6a954d4f make an adaptive votescreen patch scaler
attempts to first fill the screen horizontally, if the screen is not filled vertically like that, it will then change the scaling to fill the screen vertically
like this effectively every votebg fills up the screen and accomidates most bgs that added padding for the weird vanilla behaviour
TODO: make the behaviour switchable
2025-05-14 16:18:12 +02:00
Alug 92bf8c0788 Make votescreen backgrounds resolution and dup independant
also some slight cleanup
currently this scales vertically to fill out the screen vertically
not sure if horizontally would be preferred, but thatd most likely cut off alot of parts from some votebgs
2025-05-14 16:18:08 +02:00
Alug 058139f52b dont allow changing grid sorting with item if item button is also enter 2025-05-13 22:38:32 +02:00
Alug 612d01a8ce disable this 2025-05-13 22:38:29 +02:00
Alug bc130ce1f9 clamp screentexture size to maximum supported texture resolution
also moves everything into GL_SetModelView again
also means screen texture sizes wont be recalculated every frame anymore
2025-05-13 04:39:21 +02:00
indev 8abab58a5c Fix game crashing when attempting to print '%s has no field named %s' for few lua userdata objects 2025-05-12 18:02:20 +03:00
Alug 740de2babe fix replay saving during intermission with manual save 2025-05-12 06:12:23 +02:00
Alug 9d54baf544 fix minimap angle display in encoremode 2025-05-11 18:47:45 +02:00
Alug c68c61975e Merge pull request #169 from Indev450/Saturn-Next
Saturn v8.1
2025-05-11 16:42:59 +01:00
Alug 6f7947dd5f fix smol oopsie for colourized speedlines 2025-05-11 17:41:25 +02:00
Alug cb8930fef6 v8.1 2025-05-11 17:13:22 +02:00
Alug 93d87e1132 fix oob write when map has playerstarts for 32 players
playerstarts is MAXPLAYERS big, which is 16 for us
2025-05-11 17:13:04 +02:00
Alug d5583ba040 add "nofork" parameter
to disable process forking
might be useful for gdb and perf
2025-05-11 17:12:56 +02:00
Alug 7bb3e4445e change colourized speeline behaviour slightly
"driftonly" will tone the lines completely instead of alternating between blue and driftcharge
"normal" will completely colourize speedlines in the player colour
2025-05-11 17:12:54 +02:00
Gustaf Alhäll 001a38bbd2 Fix off-by-one buffer overflow when getting LUT 255 2025-05-11 17:12:50 +02:00
Alug 463778cd88 fix 3d models tanking performance to hell 2025-05-11 01:23:07 +02:00
Alug f263585a72 make this check like vanilla did 2025-05-11 01:23:04 +02:00
Alug ec0ca0d1ab unlock everything when using modkartdata save
doesent make too much sense having to unlock everything again when playing mods
2025-05-10 23:43:04 +02:00
Alug 121540f428 dont check for how many controllers just attempt to reset "all"
JoyInfo->dev will be null
The crash before was most likely due to an oob read
2025-05-10 22:00:52 +02:00
Alug 8b5fd5f646 fix saturn menu 2025-05-10 19:16:32 +02:00
Alug 23a9afb727 fix typo in rumble reset 2025-05-10 18:59:56 +02:00
Alug 38b862ff16 Revert "skinlocal deez nuts"
This reverts commit 12ec3d11a2.
i hate localskins so much its unreal
2025-05-10 18:59:50 +02:00
Alug 7e31536ff9 Merge branch 'Saturn-Next' into Saturn 2025-05-10 16:23:03 +02:00
indev 679e582028 jin is with lowercase j 2025-05-10 17:01:14 +03:00
indev bfc34337a3 Add P_CheckSightFast into LUASTUFF.md 2025-05-10 16:54:53 +03:00
Alug c2cf6f17d1 Merge pull request #167 from Indev450/Saturn-Next
Saturn v8
2025-05-10 09:39:39 +01:00
Alug 5b44c03892 these should be reset in the loop 2025-05-10 08:35:52 +01:00
Alug 69e3722e81 Fix controls getting stuck when opening the pause menu
https://git.srb2.org/Hanicef/SRB2Classic/-/commit/ed53d96430dedac42b288bd6a5ca8152e6e6acc4
2025-05-09 15:17:30 +02:00
indev 2fbc1140c4 Fix NOWH compilation (only check if renderer supports palette if HWRENDER is defined, otherwise run subpalette code unconditionally) 2025-05-08 17:39:27 +03:00
indev 9747eab9f3 Add I_Sleep into CONS_Error so if a wad file was not found game won't take 100% of cpu 2025-05-08 17:20:28 +03:00
Alug f98e7b13f4 cleanup dpad scroll stuff even more
mostly just to make this more readable
2025-05-08 10:24:33 +02:00
Alug 5cc6743328 dont keepmusic music that is not flagged as keep on death
uuuuuggggghhhhhhhhhhhh
2025-05-06 22:06:53 +02:00
Alug c0d8f4fbfe idk where this stuff came from
but we can access delayremoved thinkers in kart cause bleh
2025-05-06 19:42:32 +02:00
Alug d7c1e464d4 Revert "optimize MT_TUBEWAYPOINT"
This reverts commit 3d0ac03f06.
2025-05-06 19:36:38 +02:00
Alug 7e5baeebaf dont free item patches at levelload lol 2025-05-06 17:37:57 +02:00
Alug 0c7d50b38a call M_ClearMenus in D_StartTitle 2025-05-06 17:08:54 +02:00
Alug fa951475ba fix 32bit windoze compile
everything needs time.h idk why it never errored out before lol
2025-05-06 11:53:27 +01:00
Alug a608676bbd fix the fast pointonsides 2025-05-05 12:51:37 +02:00
indev 8dd52f278b Merge pull request #166 from chromaticpipe/interpdebug
Add interpolation related stats to perfstats
2025-05-05 13:09:18 +03:00
chromaticpipe 7634859503 Use more correct flags for interpolation stats + misc fixes 2025-05-04 18:29:23 -05:00
chromaticpipe cf1abbd176 Add interpolation related stats to perfstats
These were commented out for some reason..
2025-05-04 12:13:02 -05:00
Alug b71c1152c6 skinlocal deez nuts 2025-05-04 01:36:01 +02:00
Alug 46f3529165 simplify this slightly 2025-05-04 00:48:01 +02:00
Alug ce99a3f5a6 print previously supressed warnings into log instead of console 2025-05-03 23:17:33 +02:00
Alug 880db98961 dont mindelay when record attacking
theres a few places that do not "lag compensate" at all in RA so this would completely mess things up
2025-05-03 23:10:43 +02:00
Alug d2d0e0c979 smol cleanup m_perfstats 2025-05-03 20:45:40 +02:00
Alug 7abee5ae11 add USELTO and USEASAN make flags
to compile with LTO or Address sanitizer
2025-05-03 17:21:18 +02:00
Alug e025404bbf forgor casting this 2025-05-02 11:12:12 +02:00
Alug f8b9c8290e let squishy speed be player choosable
idk why i just didnt do that lel
also adds stuff to the menus
2025-05-02 10:58:53 +02:00
Alug d1d9236539 Merge pull request #164 from Chearii/minimapheadlight
Add a minimap headlight
2025-05-02 09:36:10 +01:00
Alug 63abd00c6a that needs to come before old_ stuff gets reset 2025-05-02 10:23:11 +02:00
indev 5f01d1ff84 Refactor /pm draw code a little 2025-05-02 00:23:52 +03:00
Chearii 62fa1777dd ts pmo fr icl istg
me when my code has to be robust!!
(I also Forgot to remove the SHORT marcros oops!)
2025-05-01 15:47:50 -04:00
Chearii 59deb7c8c1 add a minimap headlight 2025-05-01 15:40:58 -04:00
indev d1c7e08496 Revert "Attempt to fix game freezing on windows when moving game window"
This reverts commit 231ff3b502.
2025-05-01 13:02:26 +03:00
indev 066b12f075 Revert "fix compile"
This reverts commit c0aa3e48cd.
2025-05-01 13:02:22 +03:00
Alug d1bb0b97d2 seriously screw you windoze 2025-05-01 08:56:43 +01:00
Alug c0aa3e48cd fix compile 2025-05-01 08:55:08 +01:00
Alug a1a4b7cfbf force c17 with gcc 15 for now
dont feel like porting stuff over to c24 or whatever for v8 so just force c17 so ppl can still compile
2025-05-01 00:31:37 +02:00
indev 231ff3b502 Attempt to fix game freezing on windows when moving game window 2025-05-01 01:06:00 +03:00
Alug 3fb4c6484d tiny more cleanup screencoord stuff 2025-04-30 14:58:06 +02:00
Alug 7a6e1bcf6c readd old nanosleep
since it appeared to work just fine in testing
actually forgor to remove it from the lol
2025-04-29 21:56:30 +02:00
Alug cd60ee1188 fix ghost mobj spritescale and offset interpolation
had this laying around in lugstuff since ages lol
2025-04-29 21:43:18 +02:00
Alug 4481911cd4 only check for votescreen replacements if we havent already replaced everything 2025-04-29 21:38:45 +02:00
Alug 53b3a994fc some reformatting lel 2025-04-29 21:38:28 +02:00
Alug ebcdb23d34 delet old high color software stuff 2025-04-29 21:13:18 +02:00
Alug 431c0f41d1 raise version number
so i dont forger about it later lol
2025-04-29 21:02:56 +02:00
Alug 838379d970 we dont have this on this branch 2025-04-29 18:30:23 +02:00
Alug 68c913a5e1 raise cmake minimum requiered to 3.5 2025-04-29 18:22:33 +02:00
Alug 5f82a3b799 Merge pull request #163 from Indev450/patchntexrefactor
Refactor Patch and Texture handling
2025-04-29 17:08:25 +01:00
Alug 2369a0c5a1 Merge branch 'Saturn-Testing' into Saturn-Next 2025-04-29 18:07:56 +02:00
Alug e995ad0499 Reapply "disable jit compilation for now"
This reverts commit a662a0a68f.
2025-04-28 22:19:59 +02:00
Alug 7ba21abacd tiny more cleanup speedometer stuffs
put check for color speedo into a function
and precalc the xtra 3 scale
2025-04-28 17:47:37 +02:00
Alug 4c1cfc91da quick and dirty gcc 15 compile fix
need to fix this properly
2025-04-28 13:26:08 +01:00
Alug 79d440d398 quick and dirty gcc 15 compile fix
need to fix this properly
2025-04-28 13:25:30 +01:00
Alug ace8256d73 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-28 15:06:11 +02:00
Alug 984d501ee1 move doaddline block
slightly better branching since maps with portals are very uncommon in kart
2025-04-28 11:29:45 +02:00
Alug e138d540c8 skip rechecking for horizonlines when reloading gamestate
map remains the same during desynch, so safe some time
2025-04-28 11:21:24 +02:00
Alug 4f81349ea3 another tiny cleanup p_setup and p_saveg 2025-04-28 10:12:09 +02:00
Alug b960e3d848 fix replay ghost double free
kinda rare, but may happen when you resynch on the exact same time you got hit by something
2025-04-27 13:15:18 +02:00
Alug 9c8aee1bef tiny optimization
we dont need to recalc the bpm stuff
we can also divide the bounce in half just once
2025-04-27 00:57:53 +02:00
Alug cf453bad5f make a struct for squishy
this is horrid but should fix this speeding up when multiple players squish
2025-04-27 00:30:49 +02:00
Alug 8ad161f061 add a few more branching hints
also fix some indentation
2025-04-25 21:37:25 +02:00
Alug a18e81ee18 invert skywall offset
also fixes the issue, but doesent draw skywalls over actual walls in rare cases
lets hope this doesent draw walls over actual skywalls now (:
2025-04-25 21:34:36 +02:00
Alug 4f83d3b36b whitespace crap 2025-04-25 21:34:33 +02:00
indev 97093dbeb9 Don't free PU_SPRITE memory, since it invalidates some lua patches if they are using sprite frames 2025-04-25 12:15:57 +03:00
Alug 2468277068 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-24 13:23:16 +02:00
Alug cd15c5d380 oops didnt think addskins would be used here lel 2025-04-24 13:17:34 +02:00
Alug b977cf72b7 deprecate "addskins" command
"addskins" is an incredibly ambigous name since its main purpose was to add skins LOCALLY
just prints a notice for now since there may be ppl that still use it
2025-04-24 13:17:31 +02:00
Alug 45506b381e take mobjscale into account when skipping small sectors for precip spawn 2025-04-24 13:11:24 +02:00
Alug b6fd7a1e96 put precip purge into a function
to reduce code dupe and branching
2025-04-24 13:03:35 +02:00
Alug 58a9e17500 fix spectator key lel
oopsie
2025-04-24 09:42:24 +02:00
Alug c14c28ac1e attempt at cleaning up gamecontrol splitscreen shit 2025-04-24 09:24:44 +02:00
Alug 5df33e0705 cleanup G_Responder
man
2025-04-24 09:24:41 +02:00
Alug 987d18fe99 memset those 2025-04-24 09:24:37 +02:00
Alug 7bb4b74c65 fix potential crash on startup
thx hanicef
2025-04-24 09:24:05 +02:00
Alug cf92df5faa skip checking skin array if localskin was found in localskin array 2025-04-24 09:24:01 +02:00
Alug f81488500c just mark it like this 2025-04-24 09:23:58 +02:00
Alug a099f825a7 missed removing this 2025-04-24 09:23:55 +02:00
Alug d75ce094ae Merge remote-tracking branch 'origin/Saturn-Testing' into patchntexrefactor 2025-04-23 19:24:12 +01:00
Alug 1bb52b9c2d check ceiling first in encore flat precaching
no clue why but this fixes the sides of the road on ORR not being encore remapped
2025-04-23 19:54:58 +02:00
indev 1d15f89433 Remove I_Assert in GetItemId in lua_hudlib_drawlist.c
It is legal for lua_getpc to be null (thanks GenericHeroGuy for investigating!)
2025-04-23 19:09:02 +03:00
Alug 117db36ed3 move saturn menu stuff around 2025-04-23 16:14:45 +02:00
Alug 9d1b8ba736 move saturn menu stuff around 2025-04-23 16:14:33 +02:00
Alug d2844e7087 add P_DivlineCrossedFast
to take more advantage of P_DivlineSideFast
2025-04-23 16:07:38 +02:00
Alug def4028028 add P_DivlineCrossedFast
to take more advantage of P_DivlineSideFast
2025-04-23 16:07:14 +02:00
Alug 61a4cb554a use P_UnlinkThinker
idk why it still was like this in here lel
2025-04-23 16:05:17 +02:00
Alug f75eb0d766 port RRs improved paranoia thinker/mobj prints
https://git.srb2.org/KartKrew/RingRacers/-/commit/509a023329ea1cd583c500a3287c488e5ee3e3a6
https://git.srb2.org/KartKrew/RingRacers/-/commit/17aaf178d587970a3a845aa6c2f3807077996a77
2025-04-23 16:05:13 +02:00
Alug ede95c8ec4 use P_UnlinkThinker
idk why it still was like this in here lel
2025-04-23 16:04:53 +02:00
Alug 55704f2ba2 port RRs improved paranoia thinker/mobj prints
https://git.srb2.org/KartKrew/RingRacers/-/commit/509a023329ea1cd583c500a3287c488e5ee3e3a6
https://git.srb2.org/KartKrew/RingRacers/-/commit/17aaf178d587970a3a845aa6c2f3807077996a77
2025-04-23 16:02:41 +02:00
Alug 87fd33793d fix P_RemoveSavegameMobj triggering assert in P_UnlinkThinker 2025-04-23 14:02:28 +02:00
Alug 6509e7fdf9 nooo PARANOIA dont set our thinker next to NULL 2025-04-23 14:02:15 +02:00
Alug cd7177682a fix P_RemoveSavegameMobj triggering assert in P_UnlinkThinker 2025-04-23 14:01:38 +02:00
Alug 0ceeac4726 nooo PARANOIA dont set our thinker next to NULL 2025-04-23 14:01:38 +02:00
Alug 0b515939ad we have a global to check if config was loaded 2025-04-23 13:23:52 +02:00
Alug abba2a9eac fix cv_set being called for allowsaturnjoin before its registered 2025-04-23 13:23:47 +02:00
Alug 72ea257a06 we have a global to check if config was loaded 2025-04-23 13:22:53 +02:00
Alug e87ca3fe1b fix cv_set being called for allowsaturnjoin before its registered 2025-04-23 13:22:50 +02:00
Alug ca756fd647 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-23 11:40:13 +02:00
Alug ef93209d40 delet bunch of stuff 2025-04-23 11:23:09 +02:00
Alug af104c2d12 Merge remote-tracking branch 'origin/Saturn-Testing' into Saturn-Next 2025-04-23 11:20:22 +02:00
Alug 0e3ab1354b Merge pull request #161 from Indev450/kartstats
Kartstats
2025-04-23 09:28:35 +01:00
Alug 5dc1576496 Merge pull request #160 from Indev450/oglprecache
Fix up texture precaching + add Opengl texture precaching
2025-04-23 09:28:23 +01:00
Alug c4aba91e79 shh 2025-04-23 09:04:54 +02:00
Alug 5aca7e12c7 :3 2025-04-23 09:00:52 +02:00
Alug 60e0e50141 try to fix skywalls zfighting
just apply a small polygonoffset to them
lets hope this is small enough so they dont end up rendering infront of actual textures and such
2025-04-23 01:04:04 +02:00
Alug db9435f810 reset palette cvars when toggling paletterendering
everything gets wiped anyways, so this would be just confusing
2025-04-22 22:11:02 +02:00
Alug 8edec89a36 fix cloud tops palette not applying 2025-04-22 21:52:55 +02:00
Alug b43ca1f3c7 let saltyhop work without gravstretch 2025-04-22 20:13:44 +02:00
Alug 89906cf384 Revert "speed up ogl palette stuff"
why is windows like this?

This reverts commit 1ffb655131.
2025-04-22 18:43:40 +01:00
Alug 2a3e4c4c6d smol cleanup z_zone 2025-04-22 20:28:19 +02:00
Alug e2b1a87ca5 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-22 20:28:16 +02:00
indev e5e63a56a1 Don't resume music when game is paused (happens when you pause -> lose window focus -> regain window focus) 2025-04-22 18:24:59 +03:00
Alug 1ffb655131 speed up ogl palette stuff
doesent wipe all our gpu textures if palette hasnt changed too lol
2025-04-22 05:04:04 +02:00
Alug 4ce111139f add cv_palette and cv_palettenum
so palettes can be changed midgame
note: subpalettes do not work properly in opengl with paletterendering disabled, so palettenum will NOT work there
2025-04-22 04:58:40 +02:00
Alug 7c4b93fba8 add some savety to the hudlib
just error instead of crashing so we can track down any issues more easily
2025-04-21 14:16:35 +02:00
Alug fc7405e542 dont free our hud patches when loading an addon lel
appears to work fine in RR so we do it here
fixes some weird issues and crashes with certain hud elements
2025-04-21 14:16:31 +02:00
Alug a57afd046e Merge remote-tracking branch 'origin/Saturn-Testing' into patchntexrefactor 2025-04-21 12:36:41 +02:00
Alug bc6ce84a26 replace instances of malloc + memset with calloc 2025-04-21 12:27:52 +02:00
Alug 9638ae56c5 add missing pglDisableClientState 2025-04-21 12:25:50 +02:00
Gustaf Alhäll f398c0ceea Fix use-after-free when loading addons after searching addons 2025-04-21 12:25:47 +02:00
Alug af544e4e16 Fix server listing refusing to list servers on resolution failure 2025-04-21 12:25:44 +02:00
Alug 7ca201ea1b Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-20 23:36:04 +02:00
Alug b622fbb653 add mindelay and gentlemens stuff to menu 2025-04-20 23:35:55 +02:00
Alug 00e59c480e remove lagless camera from the menu
and change cvar name to reset it for everyone
2025-04-20 23:35:52 +02:00
Alug cd2f8577a0 big cleanup "GetZAt" stuff
GetZAt now takes 4 parameters (slope, x, y, normalheight)
and everything now uses their designated getzatfunction
2025-04-20 23:01:53 +02:00
Alug fe632340b4 fix P_CameraLineOpening
lel this was always botched
2025-04-20 23:01:40 +02:00
Alug e872f25ce6 check for sloperoll first 2025-04-20 23:01:37 +02:00
Alug f838ff528e dont need this anymore 2025-04-20 23:01:29 +02:00
Alug 5ba6021010 dont let postload free our waitingplayer spritepatches 2025-04-20 23:00:49 +02:00
Alug 2e5e753d2e pass hardware patch to HWR_DrawSpriteShadow 2025-04-20 16:40:35 +02:00
Alug e195126ac0 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-19 10:30:22 +02:00
Alug 7bcf8df6fc unnest timedemo stop stuff 2025-04-19 10:29:33 +02:00
Alug ce77a29892 fix titlescreen demos crashing, again 2025-04-19 10:29:30 +02:00
Alug 56392d4e78 whoop this is only used by curl 2025-04-19 07:46:43 +01:00
Alug 6cc37b9160 cleanup http download stuff a little
unglobalise a bunch of stuffand put into a struct
also hopefully made the progressbar less funky
2025-04-19 07:46:39 +01:00
Alug 2f736fb28c a 2025-04-19 01:25:51 +02:00
Alug 127e8b52d1 a 2025-04-19 01:25:45 +02:00
Alug 9e8fb1293f Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-19 01:24:02 +02:00
Alug fa3d2abe13 Merge branch 'kartstats' into Saturn-Testing 2025-04-19 01:23:51 +02:00
Alug c9faccae64 fix software sprite clipping 2025-04-19 01:19:35 +02:00
Alug 126d26cc98 smol software stuffs 2025-04-19 01:19:32 +02:00
Alug dc49502884 smol fix for R_AddSingleSpriteDef 2025-04-18 23:29:03 +02:00
Alug f03a12241d fix hwrpatch grabbing the wrong patch
getmapped patch needs to be called before this is referenced to avoid potential issues
2025-04-18 22:45:27 +02:00
Alug 3fe77da35f readd missing SHORT macro for patch_create 2025-04-18 22:45:24 +02:00
Alug c79f986a8f make a backup of save data before writing to it 2025-04-18 12:52:35 +02:00
Alug 2b299039e6 reword this lel 2025-04-18 12:47:31 +02:00
Alug 167e8e9258 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-18 11:43:06 +02:00
Alug 8943b6a3b7 reset record attack state in G_ResetDemoPlayback
should fix some wonky issues in a few cases
2025-04-18 11:29:52 +02:00
Alug 08f208e4a0 fix record attack condition in G_CheckDemoStatus 2025-04-18 11:24:49 +02:00
Alug 963eb427cf 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
2025-04-18 11:24:46 +02:00
Alug c4fd47657e fix crash when using connect command from within replays 2025-04-18 11:24:42 +02:00
Alug 6d15fc1ce4 close menus when replay stops 2025-04-18 10:09:52 +02:00
Alug db43b90b70 Revert "convert fixed to float with multiplication instead of division"
i did not intend to push this to testing lel
2025-04-17 20:49:48 +02:00
Alug da5aaa7ebf Revert "SHORT ma balls"
This reverts commit 5401cb58bd.
2025-04-17 19:37:17 +01:00
Alug 2c290b7473 Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-17 19:36:50 +01:00
Alug 541c70498d we dont use MT_WAYPOINT lel
just use starposts
also remove rings cause duh
2025-04-17 14:03:03 +02:00
Alug f2d1cb5606 aaaa != 2025-04-17 13:50:35 +02:00
Alug 8702ddca60 those do not exist anymore lel 2025-04-17 13:49:13 +02:00
Alug f7acf7c2d3 fix up the automap again
got the rest of stuff working in a horrible way
automap aswell as minigen stuff looks good now
2025-04-17 13:49:10 +02:00
Alug bcf82970a4 fix oopsie in automap bounds calc 2025-04-17 13:49:07 +02:00
Alug 285c850628 fix automap colours
forgor those revert those when i ported RR code over, now they should match up with what they say
2025-04-17 13:49:04 +02:00
Alug 3b4ffa20bc why? 2025-04-16 23:21:41 +02:00
Alug 006931eaa8 why are these even seperated like that lel 2025-04-16 22:37:39 +02:00
Alug 5401cb58bd SHORT ma balls
need this for now
2025-04-16 22:33:21 +02:00
Alug efde25469e Merge branch 'Saturn-Testing' into patchntexrefactor 2025-04-16 22:31:54 +02:00
Alug b207a87f8b fix camera vertical look tooltip for green res
Zzz...
2025-04-16 22:31:42 +02:00
Alug 1da62eb63d add minimap icon dot to saturn hud menu 2025-04-16 22:31:39 +02:00
Alug 3e6f028061 add support for drawing a dot on the minimap showing player angle
mostly copy pasted from blankart so thx neppy c:
2025-04-16 22:04:34 +02:00
Alug 7bd835f43e fix minimap disappearing when having minimap trans on 10 2025-04-16 22:04:27 +02:00
Alug 8ec6b2e737 fix compile without ROTSPRITE 2025-04-16 20:28:07 +02:00
Alug f4fc185f5b move patch rotation stuff into their own files 2025-04-16 20:25:56 +02:00
Alug b28593dba7 turn rotcache into a lumpcache_t aswell
no need for slow aatrees
2025-04-16 19:22:28 +02:00
Alug 88dc5f25ad smol cleanup W_CachePatchNumPwad 2025-04-16 19:21:28 +02:00
Alug a0062060eb oop 2025-04-16 16:50:09 +02:00
Alug 8e6633d0bc fix the sprite shadows Zzz... 2025-04-16 16:36:41 +02:00
Alug 2c8d5f2625 dont clear all our textures if we dont intend to reload em
the multipart addfile stuff is awkward asf
2025-04-16 16:25:58 +02:00
Alug 46e10f67b2 more smol fixes 2025-04-16 16:21:13 +02:00
Alug 962b68c5c3 smol opitmizations and cleanup 2025-04-16 16:00:34 +02:00
Alug fccfcd12fd fix model blendpatches
we already have a functional check in HWR_GetBlendedTexture anyways
2025-04-16 15:58:55 +02:00
Alug 50caffd70f add tags for model textures 2025-04-16 15:58:45 +02:00
Alug 14a1c391a6 fix models lel 2025-04-16 15:58:40 +02:00
Alug 8ab097f166 dont free our rotsprites aa 2025-04-16 15:58:37 +02:00
Alug 41cb3e932a readd freeing those
dont want kart to use like 4gbs of memory for no reason lel
2025-04-16 15:58:30 +02:00
Alug 70f1a6bf48 readd hud gfx flushing
now that stuff doesent completely die lmao
2025-04-16 15:57:59 +02:00
indev 804d9e2e8e If GLENCORE is enabled, free both encore and noencore textures 2025-04-16 15:57:55 +02:00
Alug 123fe48cad simplify this 2025-04-16 15:57:52 +02:00
Alug 2e7ae45fdb cast Zzz... 2025-04-16 15:57:49 +02:00
Alug 6b44ac922e revert this part 2025-04-16 15:57:44 +02:00
Alug 1c95b2e464 idk anymore lel 2025-04-16 15:57:22 +02:00
Alug b0ba261e14 change those tags
also add PU_PATCH_DATA
2025-04-16 15:56:49 +02:00
Alug 39f8fa8d34 add more purge tags refactor patch freeing and stuff
currently dies when adding a wad midgame and the loading into another map
2025-04-16 15:56:41 +02:00
Alug fe1579e960 fuckit *unshortens your patch dimensions* 2025-04-16 15:56:13 +02:00
Alug 7256fb9d62 port srb2s patch refactor
still needs all the new purge tags
then we should hopefully be free of use after frees and everything
2025-04-16 15:55:06 +02:00
Alug 53f68784fc fix PARANOIA compile 2025-04-15 15:19:13 +02:00
Alug 9e53f3f8b0 fuck off goddamit 2025-04-15 05:08:30 +02:00
Alug a6bebb2d91 noooo dont free our lumppat
for some reason this occasioncally causes an use after free??
our memory management honestly is a fucking mess ngl
2025-04-15 04:59:38 +02:00
Alug 8a80f0571c cleanup R_ProjectSprite 2025-04-15 03:51:11 +02:00
Alug 13589499f8 cleanup rotated patch creation
kill unused adjustfeet code
add missing clamping
use malloc since stuff gets filled with 0xFF00 anyways
kill  rotated sprite "type" since its unused too
simplify getpatchpixel a little
2025-04-15 03:51:01 +02:00
Alug 50656b7afc Revert "flexible array stuff for columnofs"
This reverts commit 37a394ebaa.
2025-04-15 03:15:04 +02:00
Alug b2e0ad58f9 revert using modulu for frac calcs for colum drawers
this is fucking slow for some reason
2025-04-14 22:50:50 +02:00
Alug b2f22a379f whoops 2025-04-14 12:03:37 +02:00
Alug c8b318ba8e minor branching stuff 2025-04-14 11:49:26 +02:00
Alug 8db082501e only holepunch uses this 2025-04-14 11:30:51 +02:00
Alug 5c6c46848e missed those 2025-04-14 11:27:57 +02:00
Alug 69d86e69cb bunch of stuff from lugstuff
- precalc some float division for ogl transform code
- use strlen for the custom lua cvar menu setup
- mostly just cleanup
2025-04-14 11:27:18 +02:00
Alug 0d9ac01fea disable titlescreen demos if any addon (but musicpacks) are loaded
read comment
not a fan of this, but better than ppl constantly crashing
2025-04-13 22:33:52 +02:00
Alug fd14976a4d optimize colourcube conditional checks
screw u atoi
2025-04-13 21:49:08 +02:00
Alug fa06551bd8 Merge pull request #162 from Chearii/dialspeedometer
Add a dial speedometer
2025-04-13 17:44:39 +01:00
Alug 2342d92ae3 refactor K_StretchPlayerGravity
mostly just make it more readable lel
2025-04-13 18:43:50 +02:00
Alug 561b1c0b92 calloc takes care of those 2025-04-13 18:43:47 +02:00
Alug 7eb311d99c we dont need all this stuff for precip 2025-04-13 18:42:10 +02:00
Alug e5f9623113 move this to make it little more clear what this is for 2025-04-13 18:42:07 +02:00
Alug e29c1010d3 missed this with localskin stuff 2025-04-13 18:42:03 +02:00
Alug 494c6ca80d move drawnode stuff into a switch
i like switches uwu
2025-04-13 18:41:47 +02:00
Alug b4416c32ed move line polyseg check out of the lööp if theres no polyobjs on le map
seems to reduce a hotspot there significantly
2025-04-12 19:42:35 +02:00
Alug fa757c6695 throw mobjcache allocation shit into a inline function 2025-04-12 19:42:31 +02:00
Alug fb15cfe9f0 convert fixed to float with multiplication instead of division 2025-04-12 19:42:27 +02:00
Alug 94eebd2cd0 use mobjcache for savegame mobj load 2025-04-12 19:42:24 +02:00
Alug 7e6bde73e1 make a macro for this 2025-04-12 19:42:21 +02:00
Alug da5a2ceefa Merge remote-tracking branch 'origin/demodates' into Saturn-Testing 2025-04-12 19:42:17 +02:00
Alug e74340aabf spr->mobj not thing lel 2025-04-12 14:36:42 +01:00
Alug 48113cb156 spr->mobj not thing lel 2025-04-12 14:36:36 +01:00
Alug 6ae0b87686 Merge branch 'Saturn-Testing' into demodates 2025-04-12 14:33:35 +01:00
Alug 98f35b6e06 windoze stimky
well this atleast should work for everyone, but be noted that the normal "localtime" function is apparently not thread safe
2025-04-12 14:33:11 +01:00
Alug 2959a84b74 attempt at unmangling localskin stuff again
moved almost all the weird ass ternaries into functions
and should also probably fix some remaining issues where stuff was wrong
2025-04-11 20:45:46 +02:00
Alug 705bb4a8ea dont need to do any of this lel
the calloc takes care of those already
2025-04-11 17:16:11 +02:00
Alug 804ca985f3 just make the numlaps draw besides the date
idk theres no good place for this otherwise
2025-04-11 14:25:00 +02:00
Alug 892a59ff15 add cvar to change the demo date formatting
bruh
2025-04-11 14:24:56 +02:00
Alug 3e60b1b388 bigger buffer for demo version thing 2025-04-11 14:24:52 +02:00
Alug 9c25d99156 print demo version on "outdated" demos
idk if this is fine lel
2025-04-11 14:24:47 +02:00
Alug e8c6dca8c1 dont need le strncpy 2025-04-11 14:24:43 +02:00
Alug 02c1a9a58d apparently we have "nameonly"
ty indev <3
2025-04-11 14:24:40 +02:00
Alug 2201d58f7d try and get file creation time in some cases on windoze builds
untested as of right now
2025-04-11 14:24:36 +02:00
Alug b7542a2106 try to catch more bad demo dates
i mean this game did not exist in 2010 lmao
but occasionally it actually returned dates other than 1970 depending on what was passed to it lmao
2025-04-11 14:24:33 +02:00
Alug f1bcdaf68f do pathseperator check like this 2025-04-11 14:24:29 +02:00
Alug 1ebebb5690 extract the date out of replay + display em in replay hut
this is kinda horrid, but essentially, the number at the start of replay names is actually the time when the replay was recorded, so i can extract that and convert it to a readable format
this probably can be done alot cleaner lmao
2025-04-11 14:24:26 +02:00
Alug 1ddc663e8c add setting for cecho toggle to print to console instead
idk i hate doing string stuff, hope this doesent explode lmao
also ensures even if disabled all cecho stuff is printed to log file again
2025-04-10 22:54:55 +02:00
Alug 5b3edc2131 handle highres portraits and statdisplay text more gracefully on low resolutions
below 640x400 the highres portraits become an absolute mess so itll now fallback to the lowres portraits
the statdisplay name text also became completely unreadable so itll use V_DrawThinString instead on low resolutions
2025-04-10 22:54:52 +02:00
Chearii bc22830136 Fix up several HUD issues
ughhhh splitscreeeeeen
2025-04-10 01:59:59 -04:00
Chearii 90475c1128 Adjust dial rotation for MPH and FU/T 2025-04-10 01:08:15 -04:00
Alug ff6a13f042 simplify those 2025-04-09 23:23:37 +02:00
Chearii 92f08de1f6 Dial speedometer 2025-04-09 16:53:21 -04:00
Alug 29462b082b remove unused variables from FTransform struct 2025-04-09 22:44:34 +02:00
Alug bd9f436227 let item button also change skin grid sorting type 2025-04-07 19:40:27 +02:00
Alug 2b6f507785 reuse pwidth 2025-04-07 17:54:21 +02:00
Alug a0739e59e4 oops this needs be initialized 2025-04-07 15:07:50 +01:00
Alug 8251ac9ca8 sat credits a 2025-04-07 16:20:54 +02:00
Alug f99794884b avoid branching inside the while lööp 2025-04-07 09:10:19 +02:00
Alug dd93e1f7b0 use optimized P_DivlineSide instead of R_PointOnSideFast 2025-04-07 08:40:41 +02:00
Alug 6b12c55393 some software optimizations
from:
https://git.do.srb2.org/Hanicef/SRB2Classic/-/merge_requests/6#d4bba40be8388ccd557d03ef4e4a36d0728c7751_645_587

minus the buffer flipping change, karts resolution stuff is hell and even worse due to birdmod things
maybe will look into that sometime
2025-04-07 08:40:37 +02:00
Alug 4b8d072153 free ogl lighttables earlier
ogl lighttable data is owned by extracolormaps apparently, so it has to be freed ealier
2025-04-07 08:40:16 +02:00
Alug f159b18e96 this is unlikely 2025-04-07 08:40:13 +02:00
Alug 27653381d3 try to rectify some branch mispredictions
adds "LIKELY" and "UNLIKELY" macros
those can be used to tell the compiler which path is more likely to happen
2025-04-06 23:33:14 +02:00
Alug bd77b17c1c whoopy copy paste 2025-04-06 17:13:15 +02:00
Alug 3261fd12db dont need this 2025-04-06 16:25:46 +02:00
Alug 3aff53647d reorder those a little 2025-04-06 15:15:09 +02:00
Alug 4a703a4288 use the float vid dimensions
forgor here
2025-04-06 15:15:06 +02:00
Alug 4880177e65 cache the fofflags too 2025-04-06 11:24:54 +02:00
Alug 744e17a0d6 somehow this is slightly faster 2025-04-06 11:00:27 +02:00
Alug b706c55ed8 cache this
somehow this was unusually expensive lol
2025-04-06 10:50:03 +02:00
Alug fe3ad3487d delet this 2025-04-06 10:49:59 +02:00
Alug 5ff2b52522 more smoller optimizations
save some unneeded floattofixed calls
and move the linedef check earlier
2025-04-06 10:49:56 +02:00
Alug d57438bf8c check for horizonlines on mapload on opengl
this saves iterating through a crapton of lines every frame in ogl
2025-04-06 08:51:55 +02:00
Alug 5f2a8acfa2 Optimze horizonline check
noticed during profiling due to how it was checked R_PointOnSegSide was called extremely often even if the less expensive check  returned false
2025-04-06 08:51:28 +02:00
indev 01bf367ce1 Add 'inputdisplay' option for hud.enable, hud.enabled, hud.disable and hud.getOffsets 2025-04-05 18:36:48 +03:00
Alug 2550f1bee5 no need to scale the volume for splitscreen if we dont play a sound lol 2025-04-04 18:13:41 +02:00
Alug f2d2307fcc didnt mean to change that lel 2025-04-04 08:15:56 +02:00
Alug 33e904632c fix software crash on sparkcup due to invalid blendmode
also simplifies R_GetLinedefTransTable
it now just returns a normal translucency table in case of an invalid blendmode, similar to what vanilla got
not sure if this is 100% correct X)
2025-04-04 02:02:07 +02:00
Alug 2e34d71af6 bruh 2025-04-04 01:57:13 +02:00
Alug 2bc6754598 fix oopsie in R_Render2sidedMultiPatchColumn 2025-04-04 01:57:10 +02:00
Alug 086caa80bb fix OOB read of "playeringame"
not too sure if this is completely save, but it should technically
2025-04-03 21:36:40 +02:00
Alug ac85797a4f erronous endifma balls 2025-04-03 21:22:27 +02:00
Alug ba7d3324e6 kill SATURNSYNCH and can_receive_gamestate, change the detection of synch method
before we unconditionally sent PT_WILLRESENDGAMESTATE to every connected node that didnt desynch before, in a big lobby this could mean having to send out alot of reliable packets to potentially clients that couldnt use it anyways, like this we just check if a client is saturn, which gets set the moment a saturn client v7.1 and onwards joins (it sends a special packet to the server during connect)
this makes sure we only even attempt the new resynch system with clients WE KNOW can use it anyways
this is backwards compatible until v7.1, v7 when this was introduced did not send the special packet on join and relied on the willreceivegamestate packet, so they wont benefit from the better resynching anymore
2025-04-03 21:18:47 +02:00
Alug 6a97341835 update saturn credtis
baaaaaaaaaaarely fits now on greenres
had to kill the tooltip too :/
we should prob think of smth else than abusing a menu for this
2025-04-03 00:13:57 +02:00
Alug 2970ab6ae3 drift only option for coloured speelines
man
2025-04-02 19:48:51 +02:00
Alug 87447e9344 fix the wonky rendering issues on that one si-ht map
saturn regression introduced by the fof slope cutoff fix
hopefully this has no weiird side effects, but so far everything seemed fine
2025-04-02 18:42:50 +02:00
Alug 2980a87d09 use max 2025-04-02 18:42:47 +02:00
Alug 75d1b49aed check if texture exists first 2025-04-02 18:42:44 +02:00
Alug a5421d1a51 smol cleanup skyspecial handling for ogl 2025-04-02 18:42:41 +02:00
Alug 42b2e0622f slight cleanup drawOnMinimap 2025-04-02 18:42:35 +02:00
Alug 8033348aa1 change scr_depth to gr_texturedepth and allow it to change stuff midgame
its not used for software renderer anymore and before you had to restart the game to be able to see a change in gl
8bits and 24bits options have been removed since they had no effect
and it also allowed me to unglobal things
2025-04-02 18:42:03 +02:00
indev bd39a9c2f8 Add pageup and pagedown support in replay hut 2025-04-01 01:19:43 +03:00
Alug 633e9474b8 texfomats without alpha should have maxlod of 5 2025-03-31 22:54:46 +02:00
Alug 588ec05c80 disable compiling with ipv6
its non functional and disabling it just removes more things that could break
2025-03-31 20:34:06 +02:00
Alug dfcba501c4 remove unused stuff d_net 2025-03-31 20:10:54 +02:00
Alug c81e0d5816 put back networking shit into rendering code
just like vanilla yaaay
2025-03-29 18:45:39 +01:00
Alug 92cdc78dda also dont do this without localdelay 2025-03-29 18:01:45 +01:00
Alug 5971e12ea9 oop still need to update this 2025-03-29 18:00:01 +01:00
Alug 0cb18e2058 only do localdelay stuff at all if we intend to use it
shizo sanity check
2025-03-29 17:57:44 +01:00
Alug 501df0763b update ping only once per second again
read the comment on why
2025-03-29 17:33:07 +01:00
Alug 1762765c2f better and more errors for the tcp/udp stuff 2025-03-29 16:56:31 +01:00
indev 0a9ae254c8 Uncap S_UpdateSounds back
Some effects that rely on S_SoundPlaying don't work perfectly if
S_UpdateSounds is capped at 35 fps
2025-03-28 20:59:48 +03:00
Alug 8476e11065 can just set it to null directly 2025-03-28 17:13:13 +01:00
Alug 014c06a797 dont run anything director in dedi
we dont need to even init its stuff
2025-03-28 17:01:51 +01:00
Alug 256f4cf2a8 make a function that returns the newspeedometer style if its availible
makes stuff alot easier to read than constantly checking for if stuff exists everywhere
2025-03-28 16:34:08 +01:00
Alug e540cc901c tiny cleanup inputdisplay
just use V_DrawMappedPatch, it does the same but looks better in code lel
2025-03-28 16:34:04 +01:00
Alug 42f1a55fa7 can just reset this here 2025-03-28 16:33:58 +01:00
Alug 7f59674ea8 force switch player after 15 seconds max
not sure if its too strict but it gets really boring just watching the same person for ages
2025-03-28 16:33:56 +01:00
Alug 0899849681 forgor the header file 2025-03-28 16:33:53 +01:00
Alug 5f5c67601e instant switch if the player we watch is finishing
i dont need to watch the finishline for 5 seconds everytime lmao
2025-03-28 16:33:49 +01:00
Alug 5e8624c79c only count actually playing players for director
otherwise you could enable it if theres more than 1 person in the server but only 1 person is actually playing
2025-03-28 16:33:46 +01:00
Alug 72821f0f16 you cant memset this to -1 lel
prob fixes the director never switching when only one player was left
2025-03-28 16:33:43 +01:00
Alug c2e0e56a80 optimize director by checking for finishline waypoint on mapload
instead of every time this is called
2025-03-28 16:33:40 +01:00
Alug 6919e3cdc8 turn this into a switch for no reason 2025-03-27 23:38:01 +01:00
Alug 4a62b44526 remove pointless function 2025-03-27 23:33:37 +01:00
Alug ac181e238d add smol P-Meter patches
thx jin for those
2025-03-27 23:28:30 +01:00
Alug d323b78d3f seperate the colour hud patches out of here so they can be used without the vanilla colour hud 2025-03-27 23:28:27 +01:00
Alug 2582f6fe93 seperate the driftgauge colour patches into extra2 + add some more comments
was an oversight, extra2 should be for all colour hud patches
2025-03-27 23:28:25 +01:00
Alug 53d698573e fix driftgauge value "small" value being overwritten when having extra3 loaded 2025-03-27 22:12:39 +01:00
Alug 7560d272dd move saturn extra file checking into its own function
and also properly seperate all patch checks so they only get checked if you have the right file
may actually slightly speedup startup in some cases
2025-03-27 22:00:12 +01:00
Alug f6e5d09ffe fix stick setting showing wheel 2025-03-27 21:43:23 +01:00
Alug 825ab0afc0 make beta interscreen cvar also affect tab rankings 2025-03-27 21:43:20 +01:00
Alug 4c4efdfd11 just make the input display global toggle for it
mostly done so i can shorten the entry in the menu cause i cba to mangle stuff again
2025-03-27 21:43:17 +01:00
Alug 1fb34eb71c Add 'StickGFX' option for showinput cvar if graphics for it exist 2025-03-27 21:43:14 +01:00
Alug 3963943904 actually initalise those lmao 2025-03-27 21:41:52 +01:00
Alug d4f97f61c2 no need to check for this 2025-03-27 21:41:48 +01:00
Alug edf545c9a1 add support for sprite joystick knob
still needs proper toggle
2025-03-27 21:41:45 +01:00
Alug 15f9bf181a that comment belongs to this lmao 2025-03-27 21:41:42 +01:00
Alug 884c5d2578 fix vertical patch scale not working when horizontal scale is also not changed in opengl patch drawer 2025-03-27 21:41:39 +01:00
indev 0d6b42cc3f Fix limit_dist overflowing for some mapobjectscale values 2025-03-26 22:11:50 +03:00
Alug 1e8716450f better slope rotation for shadows
instead of copieng the target mobjs rotation we just use its standingslope instead, this means shadows properly rotate according to which slope theire on
should make them visually more cohesive if a player or other mobj is rotated midair
2025-03-26 20:06:31 +01:00
Alug 850272e783 fix spacing when compiled withou fbo support 2025-03-26 18:38:07 +01:00
Alug bf9edef146 add dummy entries so the tooltips dont fucking cutoff stuff in green res
if i only knew of this dumb hack earlier
2025-03-26 18:33:31 +01:00
Alug 35db2b0c8e muh huh durr hurr is above array bounds of deez nuts 2025-03-26 17:21:25 +01:00
Alug c5638d8dbb fix advanced video options in green res
god bruh
also removes the directional light entry since its planned to be deprecated
2025-03-26 18:17:40 +01:00
Alug 4a8a83bf09 fix sprite distort tooltips
Zzzzzzzzzz......
2025-03-26 18:05:31 +01:00
Alug 4b1110921b turn advanced sound ioptions into scoll menu 2025-03-26 18:05:27 +01:00
Alug e159a5f206 turn sprite distortion menu into scoll menu due to green res 2025-03-26 18:00:25 +01:00
Alug 856cdbda6b rename "Custom Options" to "Custom Addon Options"
to make it clear wtf this is even for
2025-03-26 18:00:22 +01:00
Alug 14df21a2ae turn screenshot options into a scoll menu cause of green res 2025-03-26 18:00:19 +01:00
Alug 2075587980 fix focus options for green res 2025-03-26 18:00:16 +01:00
Alug a35362f0ed move everything around in main options menu to fit stuff for green res 2025-03-26 18:00:13 +01:00
Alug 480c4111f9 fix bird menu from crashing (again) finally add an enum so this wont happen again 2025-03-26 18:00:10 +01:00
Alug e671cfebcf lel 2025-03-26 15:54:37 +01:00
Alug 25a80e378d add smol text indicating the autoload button 2025-03-26 15:37:38 +01:00
Alug 2d064d61a9 change menu autoload button to "END" instead of right shift
too many ppl accidentally press right shift and end up putting things they didnt intend into their autoload file
which sometimes caused alot of issues in online play
2025-03-26 15:37:35 +01:00
Alug 6b16d27576 brazil 2025-03-26 14:54:41 +01:00
Alug 5422ab4daf tab hell 2025-03-26 14:54:38 +01:00
Alug cbcfed133c change version string for testing "RC1"
were close to being done with v8, its now mostly just about catching any remaining bugs and regressions
2025-03-25 20:41:00 +01:00
Alug 064032175e grey out mouse grab when use_mouse is enabled 2025-03-25 20:05:13 +01:00
Alug e7eca015ac add onchange for "alwaysgrabmouse" 2025-03-25 20:05:10 +01:00
Alug d94b443eca put all the "game focus" options into a seperate menu 2025-03-25 19:36:05 +01:00
Alug 434048afad potentially fix "Received a file not requested" error in poor net conditions
needs a bit of testing
2025-03-25 16:53:07 +01:00
Alug 3614efa965 fix server lan discovery
which just returned EINVAL and triggered the I_Error in SOCK_Send
more information at: https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2219
2025-03-24 23:04:52 +01:00
Alug ec30b1a457 Merge branch 'socksnedstuff' into Saturn-Testing 2025-03-24 23:04:34 +01:00
Alug 3b43df0214 delet this 2025-03-24 19:37:52 +01:00
Alug ea3974d47e Revert "clean up some net stuff"
This reverts commit f8903e7ce7.
2025-03-24 19:37:49 +01:00
Alug f7e5f9f5b6 delet this 2025-03-24 19:36:41 +01:00
Alug c425400480 Revert "clean up some net stuff"
This reverts commit f8903e7ce7.
2025-03-24 19:36:38 +01:00
Alug aea03cc2b7 grey saltroll out in menu if sloperoll disabled 2025-03-24 18:22:22 +01:00
Alug e369fbded4 toggle for saltyhop sloperoll behaviour 2025-03-24 18:22:16 +01:00
indev 792806c20d No need to FLOAT_TO_FIXED here :з 2025-03-24 17:20:28 +01:00
indev fc894d8631 No need to FLOAT_TO_FIXED here :з 2025-03-24 19:15:43 +03:00
Alug dcc3b1294c remove the early returns in SOCK_Send
othewise it may never error out when it should
2025-03-24 16:32:56 +01:00
Alug 5d0a8ff6dd Do not error out if we don't have a socket for an address family we have disabled
from srb2
2025-03-24 16:32:53 +01:00
Alug c6cc7d3d29 Replace all instances of XD_KICK with a SendKick function 2025-03-24 16:00:15 +01:00
Alug d2838c2780 i hate menus 2025-03-23 18:31:47 +01:00
Alug 4e13febeaf this does not need be checked here 2025-03-23 18:24:55 +01:00
Alug 3e80554a0e k_throwdir already returns just -1, 0 and 1 2025-03-23 18:17:49 +01:00
Alug f3d8b2b3d1 add player blendeffects to menu + change when they apply
most of them now apply during sneakerboost
sparkles may also get add blendmode when you go really fast with them (like the speedlines)
2025-03-23 18:15:06 +01:00
Alug 475ba7ca10 change "verticallook" and "cameralookbackmom" to be per splitscreen player 2025-03-23 18:13:52 +01:00
Alug 16c13cb561 Merge pull request #155 from Indev450/rankingsrefactor
Refactor Rankings Drawing
2025-03-23 17:10:23 +01:00
Alug fd9902afd6 15 step increment Zzz... 2025-03-23 16:59:02 +01:00
Alug eb936a6f94 simplify the slider stuff slightly 2025-03-23 16:57:20 +01:00
Alug 184d171b74 make stretchfactor a cv_float again
for easier handling
now that we can use sliders this should hopefully work without issues
2025-03-23 16:57:17 +01:00
Alug dc8b9ffc7c make saltyhop height use slider 2025-03-23 16:57:14 +01:00
Alug f7fbb8b859 make menu sliders work on CV_FLOAT 2025-03-23 16:57:11 +01:00
Alug 8fce9e39a0 changable saltyhop height
dunno, it looks a bit off on higher values since the animation duration is always the same
also cv_float is weird
2025-03-23 16:57:08 +01:00
Alug dee640d32f forger P_IsLocalPlayer exists 2025-03-21 15:56:18 +01:00
Alug 0af6703c08 hack for stick input display if you watch some other player Zzz.... 2025-03-21 15:53:20 +01:00
Alug b0d6ccf572 dont run discord rpc callbacks every frame
ditto
2025-03-21 00:21:49 +01:00
Alug 9e3dcbd041 dont update sounds every frame
if this would break ppl on 35fps cap wouldve been always screwed lel
2025-03-21 00:21:46 +01:00
Alug 9283b443c1 kill this, i want vanilla behaviour 2025-03-20 19:42:10 +01:00
Alug 189a28f349 delet player_joining 2025-03-20 19:42:07 +01:00
Alug e02288b689 kill this, i want vanilla behaviour 2025-03-20 19:40:49 +01:00
Alug a90c44c7d8 delet player_joining 2025-03-20 19:40:43 +01:00
Alug eaac6cdbb3 Merge remote-tracking branch 'origin/serverstuttertest' into Saturn-Next 2025-03-20 17:49:29 +01:00
Alug aba138447c continue in P_NetArchiveThinkers lööp
if thinker is P_RemoveThinkerDelayed
2025-03-20 17:31:57 +01:00
indev 28af4e5277 Only reset replay query in M_ReplayHut if replay hut wasn't open previously 2025-03-20 01:16:57 +03:00
Alug a662a0a68f Revert "disable jit compilation for now"
This reverts commit 11f5d2fb07.
2025-03-17 18:52:27 +01:00
Alug 5aa081a01b Revert "Use PU_LEVEL for texture caching"
This reverts commit 5ecfc5e09d.
2025-03-17 18:43:45 +01:00
Alug 24e149634d remove this again 2025-03-17 18:41:29 +01:00
Alug 635b4110a4 move patch null checks into the patch drawers instead 2025-03-17 18:41:27 +01:00
Alug 56ddb5da23 revert this too just in case 2025-03-17 18:26:42 +01:00
GenericHeroGuy ece1122733 Fix tonumber leaking doubles when JITted 2025-03-17 17:18:33 +01:00
Alug dd70743bae make the banana throw speen be seperate from sloperoll toggle
were technically not rolling by slopes here
2025-03-17 15:56:22 +01:00
Alug 5ab7e8dd80 forgor about saltyhop condition 2025-03-17 15:56:14 +01:00
Alug c7473ddf42 add function to check if mobj should sloperoll
makes things slightly cleaner and we can apply sloperoll dist to everything
should probably save some time esp with the trailing item z calc
+ P_MobjPitchAndRoll should be able to be called always since it also does stuff seperate from sloperoll
2025-03-17 15:56:11 +01:00
Alug 0119eeb575 use quickcamdist for K_RollMobjBySlopes
we dont need this to be accurate at all
and its slightly faster so
2025-03-17 14:21:49 +01:00
Alug dc53fac53d fix midair driftsparks
somehow accidentally ended up doing what RR does lmao
hope this doesent do anything funky synchwise
2025-03-17 13:43:09 +01:00
Alug d86179f1a4 kill bunch of redundant calcs for some kart visual effects 2025-03-17 13:43:06 +01:00
Alug 53a73e9893 safe some time by returning early in K_RollMobjBySlopes
in case those mobjs are out of our set distance
2025-03-17 12:40:33 +01:00
Alug 3efb6c0241 dont let saltyhop stop our drift sounds for 1 tic
if you disable its sound effects
2025-03-17 11:15:27 +01:00
Alug f6535c8ad3 noo dont free our realpatch randomly
this used to be Z_Unlock which did nothing
checked against srb2 and rr and this should not be freed normally
2025-03-16 21:16:39 +01:00
indev 6d7035afac Fix gl_extensions being truncated when there are too many extensions 2025-03-16 17:28:30 +03:00
Alug 2c5c08e562 did not mean to push this 2025-03-16 15:25:28 +01:00
Alug 11f5d2fb07 disable jit compilation for now 2025-03-16 14:15:24 +01:00
Alug 74ee853b49 just skip this loop if P_RemoveThinkerDelayed
we cant do anything there anyways, so this might be ever so slightly faster
2025-03-16 13:27:13 +01:00
Alug 0af6c133c5 only do the nvidia fbo hack when sdl_renderer is "x11"
we dont need this on the wayland renderer anymore
2025-03-16 13:23:49 +01:00
Alug cefad32181 dont I_Error when direct downloader failed to open a file
just cancle the transfer and kick the receiving client lel
2025-03-16 13:19:28 +01:00
Alug 2b1eb51d94 goddamit 2025-03-16 12:24:53 +01:00
Alug 1df7d07abc oops 2025-03-16 12:24:00 +01:00
Alug fca3bb3cc3 slight cleanup HWR_ObjectLightLevelPost 2025-03-16 12:18:10 +01:00
Alug 45a7689518 Merge branch 'rankingsrefactor' into Saturn-Testing 2025-03-16 11:51:46 +01:00
Alug 16b74190e5 put player into var in rankingsdrawer 2025-03-16 11:22:15 +01:00
Alug 2f33b0eb79 Merge branch 'Saturn-Next' into rankingsrefactor 2025-03-16 11:13:02 +01:00
Alug cf64aa3823 Merge branch 'Saturn-Next' into Saturn-Testing 2025-03-16 11:09:25 +01:00
Alug 8c8fe976d7 dumb hack for input display in replays
since we cant get playerinput, just use throwdir to get some appoximation
maybe todo: idk maybe squeeze smth into replays?
2025-03-16 11:09:02 +01:00
Alug 8c43857bd3 add extra check to save a little bit of time 2025-03-16 11:08:55 +01:00
indev 380c8f65c8 aatree is used both with HWRENDER and ROTSPRITE, so just don't guard its include 2025-03-16 11:08:39 +01:00
Alug 5ec0af62d9 safe 2x "va" lel
V_GetSkincolorChar is unused now lel
2025-03-16 11:08:36 +01:00
Alug 3762b18159 just use splitflags 2025-03-16 11:08:31 +01:00
Alug b6de9e03d7 doesent need be an array 2025-03-16 11:08:27 +01:00
Alug 486f386f35 New input display option for stick display
thy neppy! https://codeberg.org/NepDisk/blankart/commit/52601bdfc2a6dd8916c3c401d70128d2ca11a1ff#diff-baf740b84aa99188fc2e5c1cb93e59fa2e319ff3

+ hellish abomination code cause kart
2025-03-16 11:08:23 +01:00
Alug 848d84147f Merge branch 'minispin' into Saturn-Next 2025-03-16 11:06:41 +01:00
Alug a980784771 replace magic number 2025-03-16 11:06:06 +01:00
Alug 0f675661a6 bruh 2025-03-16 11:05:28 +01:00
Alug 30deff7697 fix conflicts for minimap spinouts + some refactoring 2025-03-16 11:05:23 +01:00
Anonimus 21c267b319 Refactor to prevent desynchs 2025-03-16 11:05:19 +01:00
Anonimus cce363c8c8 Add a cvar for minimap icon spinouts 2025-03-16 11:05:15 +01:00
Alug 944d8187ba this needs be multiplied by 8 lel oops 2025-03-15 18:41:45 +01:00
Alug c9b3459a48 add extra check to save a little bit of time 2025-03-15 16:51:09 +01:00
Alug ec0a1a97e0 make this slightly look better lel 2025-03-15 16:33:58 +01:00
Alug dd81b2cc41 fix no previous prototype warning
:chaosleep:
2025-03-15 16:31:16 +01:00
Alug 7d58887138 replace magic number 2025-03-15 16:30:52 +01:00
Alug a79f2fa90a bruh 2025-03-15 16:29:54 +01:00
Alug 473c70fd70 Merge branch 'gitpls' into Saturn-Testing 2025-03-15 16:27:00 +01:00
Alug bbd967adad fix conflicts for minimap spinouts + some refactoring 2025-03-15 16:26:43 +01:00
Anonimus f55fdbf630 Refactor to prevent desynchs 2025-03-15 16:21:15 +01:00
Anonimus 6b23c70e37 Add a cvar for minimap icon spinouts 2025-03-15 16:21:05 +01:00
Alug 1d4e6ca825 Merge branch 'Saturn-Testing' into gitpls 2025-03-15 16:18:37 +01:00
indev deeae1ef56 aatree is used both with HWRENDER and ROTSPRITE, so just don't guard its include 2025-03-15 16:46:56 +03:00
Alug ed87c40d13 safe 2x "va" lel
V_GetSkincolorChar is unused now lel
2025-03-15 14:48:48 +01:00
Alug ac28e587e2 just use splitflags 2025-03-14 21:00:12 +01:00
Alug 55d2d2cce4 doesent need be an array 2025-03-14 20:56:57 +01:00
Alug f3d5c3f698 New input display option for stick display
thy neppy! https://codeberg.org/NepDisk/blankart/commit/52601bdfc2a6dd8916c3c401d70128d2ca11a1ff#diff-baf740b84aa99188fc2e5c1cb93e59fa2e319ff3

+ hellish abomination code cause kart
2025-03-14 20:46:52 +01:00
Alug d92ba0987b Merge branch 'Saturn-Next' into Saturn-Testing 2025-03-12 07:01:46 +01:00
Alug c081349f9b make freecam speed per splitscreenplayer + add to menu 2025-03-12 07:01:19 +01:00
Alug 88b78a5bf7 delet cam rotspeed cvar
lmao forgor this did nothing
2025-03-12 07:01:15 +01:00
indev cf9e7ff37b Add toggle for look up/down, also don't trigger it during countdown or when player is respawning 2025-03-11 14:59:24 +01:00
Alug 8775e5abc1 fix compile without ROTSPRITE 2025-03-10 17:53:17 +01:00
Alug 9b3fde7a19 fix compile without ROTSPRITE 2025-03-10 17:52:46 +01:00
Alug fe6b5a83f8 consolidate those 2025-03-10 17:29:20 +01:00
Alug e39a9c190a consolidate those 2025-03-10 17:29:13 +01:00
Alug 30fff79bd0 make this slightly less ugly 2025-03-10 14:59:46 +01:00
Alug 7781237c56 add cvar to force mouse grab and hide 2025-03-10 14:56:23 +01:00
Alug 288bcbd419 bruh 2025-03-10 14:06:18 +01:00
Alug 51408010e8 bruh 2025-03-10 14:06:12 +01:00
Alug 7aeaf76062 Merge branch 'Saturn-Next' into Saturn-Testing 2025-03-10 14:05:38 +01:00
Alug 4465b05bc8 p_sight stuff idk 2025-03-10 14:04:27 +01:00
indev 537aa30cfe Don't reset demo recording if player is still entering replay name in intermission 2025-03-10 13:16:44 +01:00
Alug e16ef100b8 try make this slightly more readable 2025-03-10 13:10:07 +01:00
indev a277d70ce2 Don't force specific characters in M_HandleConnectIP 2025-03-10 13:06:03 +01:00
Alug 6932a52463 change speelines blending condition
uuuhh, so, if you have sneakerboost they always will apply additive blending
otherwise if you go really fast (faster than sneakerboost)
2025-03-10 13:05:55 +01:00
Alug a686b29a7a only apply additive blend to speedlines when any kind of boost is happening
to emphasize that ure boosting or smth
2025-03-10 13:05:19 +01:00
Alug c133f0d751 add additive blending to fast speedlines 2025-03-10 13:05:09 +01:00
Alug 5ff125a429 spawn speedlines with non synched rng if ur in eggbox status
and well only if you have colourisation enabled
2025-03-10 13:05:01 +01:00
Alug b8cab84d2a super smol optimization 2025-03-10 13:04:11 +01:00
Alug d2975d2dcb toggle for keeping driftsparks while in air 2025-03-10 13:02:23 +01:00
indev e802ecf0b5 Add SHORT here for consistency with other code 2025-03-10 13:01:35 +01:00
indev 71378285b2 Check for missing patch earlier in W_CachePatchNameRotated 2025-03-10 13:01:32 +01:00
Alug ffe9a89552 remove erronous cv_sloperoll checks
this cvar is meant to be only the toggle for the player slope rotation, however, spriterotation should still be usable in any case with this disabled. the global toggle "cv_spriteroll" has been removed
2025-03-10 13:01:25 +01:00
indev ac9926eb17 spriteroll doesn't exist now :p 2025-03-10 13:01:19 +01:00
Anonimus 0b57389dcd HUD patch rotation 2025-03-10 13:01:16 +01:00
Alug e2b42b1647 delet memcpy doing nothing 2025-03-10 13:00:33 +01:00
Alug ad39ade286 split screentexture width and height
most displays are widescreen, so their width and height differ quite significantly, this may make the overall screentexture alot smaller
2025-03-10 12:59:25 +01:00
Alug 0ed21a171d remove stray bool in demovars struct 2025-03-10 12:58:18 +01:00
Alug ad65e3e968 allocate some extra buffer for demobuffer
incase this might overflow that we dont write to unvalid memory
thx indev <3
2025-03-10 12:56:51 +01:00
Alug d55d7e0efc smol replay fixes from rr 2025-03-10 12:54:39 +01:00
Alug ec7fa833d5 only ever touch this if player has a mobj
angleturn is broken in kart
2025-03-10 12:53:44 +01:00
Alug 2e6c1d9df4 revert this behaviour
be more like vanilla
2025-03-10 12:51:50 +01:00
Alug 7d55c46979 make P_InitCamera slightly prettier 2025-03-10 12:50:10 +01:00
Alug af2b22e91f cleanup P_SetupLevel
removed bunch of pointless vars, moved some things into functions
changed some stuff to be boolean
2025-03-10 12:50:03 +01:00
Alug e983174559 another check for realpatch lel 2025-03-10 12:47:46 +01:00
Alug 006bda5bfc Merge branch 'Saturn-Next' into serverstuttertest 2025-03-09 16:27:22 +01:00
indev 148b76f4a3 Add SHORT here for consistency with other code 2025-03-08 18:14:26 +03:00
indev 422e63a93d Check for missing patch earlier in W_CachePatchNameRotated 2025-03-08 18:14:26 +03:00
Alug 2aff0ed03a show smol notice in stat and ra menu when game is modded 2025-03-07 23:35:32 +01:00
Alug 341d592001 show smol notice in stat and ra menu when game is modded 2025-03-07 14:49:15 +01:00
Alug 568890e9b3 remove erronous cv_sloperoll checks
this cvar is meant to be only the toggle for the player slope rotation, however, spriterotation should still be usable in any case with this disabled. the global toggle "cv_spriteroll" has been removed
i kinda forgot to remove those when i did some refactoring ealier
2025-03-07 10:07:31 +01:00
indev a1e9cacb9f spriteroll doesn't exist now :p 2025-03-06 19:43:24 +03:00
Anonimus a258379a3b HUD patch rotation 2025-03-06 19:34:52 +03:00
Alug 3bde3b04ae try just passing the sector + add 50 trillion extra checks
idk anymore but this is literally now how vanilla kart behaved
2025-03-05 11:23:40 +01:00
Alug 9e070a6516 tiny cleanup SCR_DisplayTicRate 2025-03-05 11:22:51 +01:00
Alug 8d9c6ec65f localping color was lost 2025-03-05 11:21:22 +01:00
Alug ec263086d8 use lööps for those to look a little better lel 2025-03-05 11:18:32 +01:00
Alug 06ccb4f7b0 dont reset cam using f12 when only one player is ingame 2025-03-05 11:18:23 +01:00
Alug 95daa7eacc just set this directly
no need for all of this
2025-03-05 11:18:05 +01:00
Alug d18afa1781 dont run this if cam tilt disabled 2025-03-05 11:16:56 +01:00
Alug 883c382a1d slightly refactor chasecam stuff again 2025-03-05 11:16:23 +01:00
Alug c82eb25628 where did this come from 2025-03-05 11:14:45 +01:00
Alug 8c0294898e fix issues with models
- Sloperotation was weird, it now uses what we calculate in K_RollMobjsBySlopes
- in general uses srb2s newer system
- alot of cleanup of pointless variables
- sprinfo pivots should now work
- removed roillmodel since it was smth weird and broke rollangle
2025-03-05 11:14:06 +01:00
Alug d09c8bb8fd ss->touching_preciplist deez 2025-03-05 11:13:43 +01:00
Alug d397a07d96 dont recalc if precip sector didnt move
forgor i can just check this
2025-03-05 11:13:40 +01:00
Alug 96f842fd96 only need to recalc this once a tic
precip thinker thinks slightly more often, but we really dont need that tbh
2025-03-05 11:13:34 +01:00
Alug 105b3f37eb only recalc floorz for visible precip mobjs
before it apparently recalced it a crapton for the crapton not visible precipmobjs, which even on vanilla maps led to noticable jitter
2025-03-05 11:13:26 +01:00
Alug 24387b50bd missed this for keepmusic 2025-03-05 11:12:22 +01:00
Alug 0c4661c2a7 remove this 2025-03-05 11:11:27 +01:00
Alug 178c942dc6 pass slope to K_RollMobjBySlopes
removing some code dupe in the process and allows some more flexability
2025-03-05 11:09:19 +01:00
Alug 47d41e2c2a refactor M_DrawSlider
apparently fixes weird framerate issues with gamma slider
also shows the values on sliders
2025-03-05 11:09:01 +01:00
Alug 4d7c223565 Have replay recording of "hits" use the reference count system
https://git.srb2.org/KartKrew/RingRacers/-/commit/fa8bffabfc51ea1d7be86d833190bb7dcf494fca
2025-03-05 11:08:18 +01:00
Alug e3af2b0d58 better prints if a replay desynchs 2025-03-05 11:08:06 +01:00
Alug f4ed9b43cd refactor keepmusic again
- puts all music stuff into a struct "music_t"
- should hopefully fix numerous issues with keepmusic and skipintromusic
- keepmusic can now "recover" from a few cases, like restarting the map from intermission
2025-03-05 11:06:57 +01:00
Alug 55cd0fa08f ensure proper cast 2025-03-05 10:59:34 +01:00
Alug 8cce4f3ccf whitespace lul 2025-03-05 10:59:18 +01:00
Alug 1e21f6a378 only do mouse stuff if we wanna do mouse stuff 2025-03-05 10:59:03 +01:00
Alug a0af6f2461 remove unused stuff i_video 2025-03-05 10:57:55 +01:00
Alug 390e3db25d tiny cleanup keyboard stuff 2025-03-05 10:55:16 +01:00
Alug 3d9bb65e62 Merge pull request #157 from Indev450/gentlemens
Offline ping System
2025-03-05 10:53:10 +01:00
Alug 4f88a97739 inline a few hooklib functions 2025-03-05 10:52:34 +01:00
Alug de977167ca pointless inline 2025-03-05 10:52:15 +01:00
Alug 84028f52d8 few instances of int float conversions i forgor 2025-03-05 10:50:35 +01:00
Alug f693ca8333 optimize ogl drawer functions
by avoiding excessive interger to float conversions
2025-03-05 10:50:28 +01:00
Alug 64dd17d75d ensure proper casting 2025-03-05 10:48:25 +01:00
Alug b3ce832753 check for shader cvar ealier 2025-03-05 10:47:59 +01:00
Alug b9c89b381b nullcheck for realpatch 2025-03-05 10:47:12 +01:00
Alug c8a0a2bdae dont need to pass the viewnumber around 2025-03-05 10:46:30 +01:00
Alug 84d3d0d891 smol cleanup portal code again 2025-03-05 10:44:56 +01:00
Alug fe42f1bd3e change syntax
will stay uppercase to not conflict with some crap Zzz...
2025-03-05 10:41:09 +01:00
Alug b5803e8787 move this after the early returns
save some time when drifting
2025-03-05 10:40:10 +01:00
Alug 9f7aca5fe3 lmao 2025-03-05 10:39:57 +01:00
Alug ac8e25865e turn driftsparkGrowTimer into a player field
less hacky and avoids 3 loops lol
2025-03-05 10:39:52 +01:00
Alug 02b411f7ee kill redundant laptime code
just use the newer one
2025-03-05 10:39:41 +01:00
Alug 9dee892244 more kart hud cleanup
also removes erronous nametag toggles
2025-03-05 10:38:18 +01:00
Alug e5d832a642 slight cleanup kart hud 2025-03-05 10:38:14 +01:00
Alug b069c2cb3e tiny d_main cleanup 2025-03-05 10:37:10 +01:00
Alug 7235f9864e delete nonfunctional second mouse stuff 2025-03-05 10:34:18 +01:00
Alug e4e1f0c645 revert all the server ticking stuff 2025-03-05 10:33:49 +01:00
Alug 54747c6b53 Prevent dropped ticcmds due to interp timing jutter
kinda figured out what this does, and makes clients on uncapped listen servers alot less prone to drop gametics
2025-03-05 10:32:37 +01:00
Alug 9ed242cde2 where did this go? lel 2025-03-05 10:27:09 +01:00
Alug 9bcfe63e3e Merge branch 'Saturn-Next' into gentlemens 2025-03-05 10:25:46 +01:00
Alug b38460473d Merge pull request #153 from Indev450/freecamstuffs
Replace spec cam with Freecam + "democam" (now freecam) refactor
2025-03-05 10:24:46 +01:00
Alug fd77beabe1 Merge remote-tracking branch 'origin/Saturn' into Saturn-Next 2025-03-05 10:24:22 +01:00
Alug 5dfab42fcf Merge pull request #158 from Chearii/blendmodes
Blending modes (and a few refactors)
2025-03-05 10:12:55 +01:00
Alug 72d94b77ac fix blendmode oopsie 2025-03-04 19:46:05 -05:00
Chearii 54d73206ca Fix `hw_draw` gaffe 2025-03-04 19:42:59 -05:00
Alug 637499dcd7 use memcmp for R_IsEmptyLine
:chonkbuncle:
this actually is quite a little faster too
2025-03-05 00:09:35 +01:00
Alug 1e79d464b0 fix blendmode oopsie 2025-03-05 00:08:36 +01:00
Alug 932381052b try make this slightly more readable 2025-03-04 19:27:51 +01:00
Alug 367c4179fd change syntax
will stay uppercase to not conflict with some crap Zzz...
2025-03-04 19:14:57 +01:00
Alug 0fc9f2ec00 smth smth magic number 2025-03-04 19:14:54 +01:00
Alug 1646014561 pointless inline 2025-03-03 11:20:17 +01:00
Alug 9152ee826d empty function lel 2025-03-03 11:16:20 +01:00
Alug 08ce1b54ca delet memcpy doing nothing 2025-03-03 11:16:18 +01:00
Alug 37b74be3bb tiny cleanup keyboard stuff 2025-03-03 10:11:28 +01:00
Alug fac2e8ec98 tiny cleanup keyboard stuff 2025-03-03 09:56:49 +01:00
Alug 58fd729bec temp revert nanosleep for nix 2025-03-03 00:14:25 +01:00
GenericHeroGuy 0c2244d668 Figured out why that doesn't work 2025-03-03 01:34:24 +03:00
GenericHeroGuy 40d0d9d2b8 Properly constant-fold (0 or 123)
But not (0 and 123). Yay bug compatibility!
2025-03-03 01:34:24 +03:00
Alug 3ce78064ed guh 2025-03-02 23:29:07 +01:00
Alug 9db8d05206 muh huh truncuate my butt mingw32 2025-03-02 23:29:05 +01:00
indev 22a0ce1e20 Revert "Convert parsed numbers to doubles first in lj_strscan_scan"
This reverts commit 3f8fb365a0.
2025-03-03 01:04:06 +03:00
indev 3ff8a920c0 Revert "Restore setnumV for fmt == STRSCAN_NUM in lj_strscan_scan"
This reverts commit 644cd36286.
2025-03-03 01:04:06 +03:00
Alug 912e340028 bugger off UPX
dont want compressed executables, they BREAK backtraces
2025-03-02 23:02:54 +01:00
Alug 751885128a inlining failed in call to my butt 2025-03-02 22:11:50 +01:00
indev 644cd36286 Restore setnumV for fmt == STRSCAN_NUM in lj_strscan_scan 2025-03-03 00:01:06 +03:00
Alug 91601c8a2d forgor cleanup 2025-03-02 21:45:32 +01:00
Alug f70351fc75 screw you music system
no fucking clue but this fixes stuff showing the musiccredit too early on reload
2025-03-02 21:42:14 +01:00
Alug 976cb1ff25 lul 2025-03-02 21:41:58 +01:00
indev 3f8fb365a0 Convert parsed numbers to doubles first in lj_strscan_scan
Regular blua does something similar to that, and it changes how large
numeric literals are parsed. It's very rare for those to be used but can
still in theory cause synch issues between blua and bluajit clients
2025-03-02 14:48:12 +03:00
indev 5cfbc8ce48 Delet goto from bluajit, since regular blua doesn't support that 2025-03-01 03:44:15 +03:00
indev 89033de836 Fix water and fog shader missing #version 2025-02-28 22:31:27 +03:00
Alug ff4c6ea950 more kart hud cleanup
also removes erronous nametag toggles
2025-02-28 18:55:52 +01:00
indev c3f32da557 Don't reset demo recording if player is still entering replay name in intermission 2025-02-28 18:49:02 +03:00
Alug 9d7930ed3c slight cleanup kart hud 2025-02-28 09:51:51 +01:00
Alug 0dd54b112e add airsparks to saturn options 2025-02-27 19:46:04 +01:00
Alug b10a502b0e Merge remote-tracking branch 'origin/serverstuttertest' into Saturn-Testing
Rather not have this cause dumb issues like every single other time interp and ticking was touched, so just behave like vanilla
2025-02-27 19:41:24 +01:00
Alug 8f342110c9 color ping numbers for color hud 2025-02-27 19:40:32 +01:00
Alug 980d59c9be color ping numbers for color hud 2025-02-27 19:37:29 +01:00
Alug 6d977ea949 Revert "better M_Random implementation"
This reverts commit a353dceaa3.
2025-02-27 19:34:35 +01:00
Alug e723948756 do this in a less horrifieng manner 2025-02-27 19:12:07 +01:00
Alug d95e3c6e04 use floor shader for everything when paletterender disabled
just like vanilla!
not the way to do this properly, but whatever
2025-02-27 18:51:05 +01:00
Alug 7fdf986df4 actually can just use this directly 2025-02-26 13:04:35 +01:00
Alug 6b049ad86d turn this into a switch
else if stinky
2025-02-26 11:14:19 +01:00
indev a0fc6f7e22 Add toggle for look up/down, also don't trigger it during countdown or when player is respawning 2025-02-23 14:21:30 +03:00
Alug d0890c45e2 use lj_char_isspace 2025-02-21 22:31:32 +01:00
indev 93b3926008 Allow trailing spaces in lj_strscan_scan 2025-02-20 23:32:05 +03:00
Alug 3fe94b68a3 toggle for keeping driftsparks while in air 2025-02-19 12:05:56 +01:00
Alug 34f5a58692 reuse var 2025-02-19 12:05:52 +01:00
Alug b605c8e654 few instances of int float conversions i forgor 2025-02-19 12:05:50 +01:00
Alug 95df997198 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2025-02-19 12:05:44 +01:00
indev 51ba4f1ec8 Merge branch 'Saturn-Next' into serverstuttertest 2025-02-18 19:14:52 +03:00
indev 1af9903439 Fix compilation with old sdl 2025-02-18 12:29:47 +03:00
Alug 457186fe40 Merge branch 'Saturn-Next' into Saturn-Testing 2025-02-17 21:34:18 +01:00
Alug b4269cba3e properly init numcontrollers 2025-02-17 21:34:09 +01:00
Alug 70a985e274 dont check number of controllers every frame 2025-02-17 21:34:06 +01:00
Alug f15f24914d initialize this 2025-02-17 21:24:28 +01:00
Alug a30aad04da Merge branch 'Saturn-Next' into serverstuttertest 2025-02-17 20:55:11 +01:00
Alug ad74af426b Merge branch 'Saturn-Next' into Saturn-Testing 2025-02-17 20:55:02 +01:00
Alug 75d69dc90d skip a bunch of stuff in dedi/render_none 2025-02-17 20:54:56 +01:00
Alug 115eea3828 revert all the server ticking stuff 2025-02-17 20:40:22 +01:00
Alug 7322d553ba Revert "Merge pull request #151 from Indev450/fixdupeacks"
This reverts commit 1fabc14ac9, reversing
changes made to d9492eee28.
2025-02-17 18:05:30 +01:00
Alug 5bf24e10b2 Merge remote-tracking branch 'origin/oglprecache' into Saturn-Testing 2025-02-17 17:24:10 +01:00
Alug 10f1507366 Revert "Merge pull request #151 from Indev450/fixdupeacks"
This reverts commit 1fabc14ac9, reversing
changes made to d9492eee28.
2025-02-17 18:04:38 +01:00
GenericHeroGuy badb8c7914 Add cleanjit target
Recompiling the whole game after changing a single flag is pretty tiring
2025-02-17 17:43:01 +01:00
GenericHeroGuy 13b2f6534e Fix some functions leaking doubles in INTONLY 2025-02-17 17:42:55 +01:00
Alug c78ecd8453 Revert "Fix "attempt to perform arithmetic on a number value" errors"
This reverts commit a9429caf09.
2025-02-17 17:42:49 +01:00
Alug b61e29ef0f die json 2025-02-17 17:06:36 +01:00
Alug ca555e7ea6 fix some typos lel 2025-02-17 17:02:09 +01:00
Alug a1f254a0bc ensure proper casting for elapsedseconds 2025-02-17 16:59:50 +01:00
indev a9429caf09 Fix "attempt to perform arithmetic on a number value" errors
Not best fix but i don't know why setnumV breaks here
2025-02-17 14:21:44 +03:00
Alug 7bf50c69e2 update software precache
spit stuff into functions
handle animated textures and flats too
2025-02-16 16:47:15 +01:00
Alug fcd8cfc4d5 better handling of sprite angles in precache
only cache stuff that we need
2025-02-16 16:38:56 +01:00
indev 9efd24e376 camara 2025-02-16 17:49:43 +03:00
Alug 5b0a662b40 skip checking sectors and lines multiple times 2025-02-16 15:38:16 +01:00
Alug 255c8437d7 slightly optimize ogl precaching
cleanup too
2025-02-16 15:38:11 +01:00
Alug 83b242a727 make texture precache toggable 2025-02-16 15:38:08 +01:00
Alug 4ef6c2ea34 guard this in sprite precache 2025-02-16 15:38:05 +01:00
Alug 29b93f63f7 precache animated textures too 2025-02-15 16:22:45 +01:00
Alug a403d96204 also precache animated flats
i have no clue how tf animated textures work
2025-02-15 16:22:42 +01:00
Alug c1a187084d dedicated server does not need to call texture precaching
prob leftover from back in the day, it doesent do anything at all anyways
also gives it a less ambigous name
2025-02-15 02:16:05 +01:00
Alug 7808dc5740 precache (most) sprites on ogl leveload 2025-02-15 02:16:02 +01:00
Alug 4417eabdc7 move texture precache into own function
unnesting stuff
2025-02-15 02:15:58 +01:00
Alug 119b18521f oops should be i 2025-02-15 02:15:55 +01:00
Alug ccefafd172 load both encore and non encore tex 2025-02-15 02:15:52 +01:00
Alug a75bf1b2bb move precache into hw_cache.c 2025-02-15 02:15:49 +01:00
Alug 15a0b9ab93 handle encore in ogl precaching
thx indev for help <3
2025-02-15 02:15:45 +01:00
Alug 9bed58a863 this is incorrect, dont need it anyways 2025-02-15 02:15:42 +01:00
Alug 19dd5ddbae disable ogl precaching on encore mode
noencore things need to be handled
for now just disable it until i figure out how to check for lineflags here
2025-02-15 02:15:39 +01:00
Alug 8cd636c213 precache level flats and textures on mapload in opengl
not entirely sure if this works correctly with encore, have to test a little
TODO: move this into hwr file or smth
2025-02-15 02:15:36 +01:00
Alug d156b716f6 add toggle for blendmode player effects
otherwise people will yell
enabled by default for now for demonstration purposes
2025-02-13 18:41:58 +01:00
Alug 3f910824e8 make P_InitCamera slightly prettier 2025-02-12 17:55:31 +01:00
Alug 3509b05d1e cleanup P_SetupLevel
removed bunch of pointless vars, moved some things into functions
changed some stuff to be boolean
2025-02-12 17:38:41 +01:00
Alug 164bd18234 split screentexture width and height
most displays are widescreen, so their width and height differ quite significantly, this may make the overall screentexture alot smaller
2025-02-12 14:34:36 +01:00
Alug 1eae8c6ea3 use correct type in P_InitMinimapInfo 2025-02-12 12:01:05 +01:00
Alug 14881e968a simplify local ping display 2025-02-12 12:00:54 +01:00
Alug fcc9cdcaef use correct type in P_InitMinimapInfo 2025-02-12 11:56:51 +01:00
Alug b32785f88c revert adding netbuffer to local ping
dont wanna revert the commit, since i keep the new way of determining the ping display, since its less awful than before
2025-02-11 15:01:57 +01:00
Alug 8c9808b2d6 fix online player localping display 2025-02-10 21:00:18 +01:00
Alug 5f0b2b0604 fix some level userdata not being invalidated
maybe fixed the random issues we had with the server?
2025-02-10 20:53:43 +01:00
Alug a80f520c38 fix some level userdata not being invalidated
maybe fixed the random issues we had with the server?
2025-02-10 20:53:33 +01:00
Alug 34c517defc dont add buffer delay when local delay is disabled 2025-02-10 19:06:09 +01:00
Alug d5a762f35c account for netticbuffer in offline ping
this makes it more accurately reflect how it would behave in an online game
2025-02-10 18:13:08 +01:00
Alug ab6ec6d11e add some comments + smol cleanup again for keepmusic 2025-02-10 18:13:01 +01:00
Alug c8a629d8a5 extend mapmusic_t struct and rename to music_t
didnt see that all the music stuff was more or less using the same things
2025-02-10 18:12:57 +01:00
Alug 71805500ca clean this up a bit 2025-02-10 18:12:54 +01:00
Alug 5e7c12dac7 optimize ogl drawer functions
by avoiding excessive interger to float conversions
2025-02-08 23:26:13 +01:00
Alug 29817d6627 fix clang uninitialised warning 2025-02-08 23:26:10 +01:00
Alug c010b7319e fix oopsie with mapmusic in glib 2025-02-08 18:10:02 +01:00
Alug 27b190cadf this should be static 2025-02-08 17:52:47 +01:00
Alug e1a02a0729 throw music vars into a struct "mapmusic_t"
simplifies everything, keepmusic vars use it too
2025-02-08 17:52:44 +01:00
Alug eb512022e0 handle music reloadreset stuff in seperate function
just tryin make it less ugly
2025-02-08 17:52:18 +01:00
Alug 0aec9a85bb rename this 2025-02-08 17:51:56 +01:00
Alug c1743eb18d Revert "Update position nums to use additive"
for now since it doesent work that well on bright maps, yes there is a mapheader , but cant expect anyone to go trough all maps and add it

This reverts commit 323fbb4713.
2025-02-08 17:21:02 +01:00
Alug ccd2855e01 always save keepmusic stuff
but set keepmusresume in stopmusic Zzz...
2025-02-08 16:47:41 +01:00
Alug d3338f5d81 attemp to fix playerreborn resetting keepmusic 2025-02-08 16:33:06 +01:00
Alug 73ea95ae61 just pass the controller directly
simplifies this alot
2025-02-08 15:44:20 +01:00
Alug 6532dacbb1 change speelines blending condition
uuuhh, so, if you have sneakerboost they always will apply additive blending
otherwise if you go really fast (faster than sneakerboost)
2025-02-08 15:36:49 +01:00
indev b42338ea38 Don't force specific characters in M_HandleConnectIP 2025-02-07 20:03:25 +03:00
Alug 8f07f183dd just pass the controller directly
simplifies this alot
2025-02-07 15:57:35 +01:00
Alug e66aedaaa1 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2025-02-07 15:57:31 +01:00
indev affa366f7d Merge pull request #159 from chromaticpipe/proxy-makefile
Add a proxy Makefile at the top level
2025-02-07 02:30:48 +03:00
chromaticpipe 7d62b330d0 Add proxy makefile at top level 2025-02-06 16:15:16 -06:00
Alug 9ac9db0fe0 only apply additive blend to speedlines when any kind of boost is happening
to emphasize that ure boosting or smth
2025-02-06 17:25:43 +01:00
Alug b398dacf29 update controller led when connecting a controller 2025-02-06 14:43:35 +01:00
Alug 1b610242bc update controller led when connecting a controller 2025-02-06 14:43:28 +01:00
Alug a6a53f6b9c dont pass bogus values to I_GamepadRumble and I_SetGamepadIndicatorColor
- fixes rumble and led stuff not working after hotplugging
- also fixes sdl2-compat breaking
- i hate karts controller code
2025-02-06 03:01:51 +01:00
Alug be58dd19c1 dont pass bogus values to I_GamepadRumble and I_SetGamepadIndicatorColor
- fixes rumble and led stuff not working after hotplugging
- also fixes sdl2-compat breaking
- i hate karts controller code
2025-02-06 03:01:40 +01:00
Alug 0d2a1bac36 Revert ""kill" seenames"
This reverts commit 93a1a432d7.
2025-02-05 15:33:27 +01:00
Alug f67815b0d3 also add additive to boostflame 2025-02-05 00:36:05 +01:00
Alug d4c986fb84 no need pass this stuff 2025-02-04 23:12:35 +01:00
Alug b24a7e3faf forgor 2025-02-04 23:11:05 +01:00
Alug 18a78e2892 test add blendmodes to a bunch of player effects
going see how it looks
2025-02-04 23:06:08 +01:00
Alug 323fbb4713 Update position nums to use additive
https://git.srb2.org/KartKrew/RingRacers/-/commit/4d108930a94f44dbc916d1116eab8421e669e4b6
2025-02-04 23:05:07 +01:00
Alug bd6b699a1e keep track of map music
this is kinda horrible, but allows musicchanges which replace map music/tunes to also work with this system
2025-02-04 23:03:57 +01:00
Alug 4795af29ea reset keepmusposition in tunes command
mapmusic will be reset the moment the gamestate changes, so whatever was changed with tunes will not be kept sadly
2025-02-04 23:03:55 +01:00
Alug f76a62b7d2 save music position and try to fade back into mapmusic when the music changed from mapmusic when keepmusic is enabled
uhh idk how to explain lel
hope this doesent explode
2025-02-04 23:03:51 +01:00
Alug da7d200d92 skip intro sounds also with keepmusic lel 2025-02-04 23:03:47 +01:00
Alug 2de44e7563 check for realpatch here too 2025-02-04 23:03:08 +01:00
Alug f30cdc1933 stuff that was missing 2025-02-04 23:02:58 +01:00
Alug f9ccacf118 handle ogl lightlevelpost similar to rr
now that we have everything for it
2025-02-04 23:00:44 +01:00
Alug 6ed7e26d86 flag clash moment 2025-02-04 22:59:04 +01:00
Alug 91856ea145 fix merge conflicts 2025-02-04 22:58:46 +01:00
Alug 5b6b0f09e1 Merge remote-tracking branch 'Chearii/blendmodes' into Saturn-Testing 2025-02-04 22:57:17 +01:00
Alug 291677d0cf Merge branch 'Saturn-Next' into Saturn-Testing 2025-02-04 22:48:50 +01:00
Chearii ccc1c07930 Fix white pixel bug due to oversight
many thanks to indev for catching this!
2025-02-04 16:34:17 -05:00
Chearii d39e9447f3 Add line and FOF blending, fix model and shadow blending
also a bit of cleanup in r_things but it's too minor to headline
2025-02-03 04:46:27 -05:00
Chearii cd44e2d80c Prelim: Linedef alpha variable
realistically this was just because I'm Lazy
this makes figuring out linedef blending less of a brain twister
2025-02-02 21:14:48 -05:00
Chearii 36a1662afb Add blending modes 2025-02-02 20:37:19 -05:00
Alug 88d5ca0b8a should revert this completely 2025-02-02 00:19:38 +01:00
Alug 15eee102fd partly revert this
some of those "mightve" been changed at the point of the check
2025-01-30 13:25:19 +01:00
Alug ce00aef8b1 partly revert this
some of those "mightve" been changed at the point of the check
2025-01-30 13:25:12 +01:00
Alug c7a24199c7 make those const 2025-01-30 13:22:03 +01:00
Alug 0db2aebfda dont register a crapton of pointless stuff for dedi
should cleanup dedi config significantly lmao
2025-01-30 13:12:01 +01:00
Alug 7ec00a279c tiny cleanup i_video 2025-01-30 12:30:57 +01:00
Alug 6e81cdcb01 kill even more unused patches
+ nonexistant crosshair stuff
2025-01-30 10:42:01 +01:00
Alug 2a05f630b3 dont cache all those unused hud graphics 2025-01-30 10:41:55 +01:00
Alug bf9b738a0f use SRB2.2s general folder structure
- seperate addons folder (download folder remains in home directory unlike RR)
- seperate gif and screenshot folders
2025-01-30 10:41:48 +01:00
Alug 50fced2867 use SRB2.2´s logging system
- creates a new logfile each start instead of overwriting it everytime
2025-01-30 10:41:40 +01:00
Alug 6276243cc4 just keep a copy of musicchange before the lua hook
keep music can check for what was it stuff changed last to
2025-01-30 10:32:47 +01:00
Alug 22c48f19ba grow an invinc music also broke stuff
cant put it into the music exception list, otherwise it will always disable keepmusic when either one was used even once
2025-01-30 10:32:42 +01:00
Alug 9872640e77 the music system is truly amazing 2025-01-30 10:32:36 +01:00
Alug 80f7ddfb31 i hate conditions 2025-01-30 10:32:30 +01:00
Alug 5215fa4747 smol optimization comparePolygon
return slightly earlier for skywalls and horizonlines
2025-01-30 10:32:13 +01:00
Alug 7016b77ee8 also rotate eggboxes in air 2025-01-30 10:31:58 +01:00
Alug 5edb0d0e3d fall through deez 2025-01-30 10:31:46 +01:00
Alug a2c1fa5e23 delet if else hell 2025-01-30 10:31:41 +01:00
Alug 520f92e892 handle vote bg fallbacks more gracefully
if someone doesent provide a widescreen patch it now falls back to the replaced non widescreen one and vice versa instead of just falling back to what vanilla provides
2025-01-30 10:31:36 +01:00
Alug 305d408e02 forgor about the banan spin 2025-01-30 10:31:14 +01:00
Alug 8ccb747dcd j moment 2025-01-30 10:30:51 +01:00
Alug a1d5a2e1f9 simplify camtoggledelay and spectatedelay
just make em an array and use lööp
2025-01-30 10:30:34 +01:00
Alug 2f56487290 assign player later 2025-01-30 10:30:23 +01:00
Alug 2ebf66b99c kill P_TeleportMove
P_MoveOrigin literally just calls that so replace it with that
2025-01-30 10:30:19 +01:00
Alug 881da033b8 Merge branch 'Saturn-Next' into rankingsrefactor 2025-01-30 10:29:13 +01:00
Alug 1e972cbb65 reduce scope of those
makes it look slightly neater
2025-01-30 10:29:05 +01:00
Alug bab120235d draw non widescreen anim vote bg before falling back to vanilla bg
how it was before, the game just fallback to the vanila widescreen patch if there was no animated widescreen bg provided, just fall back to the non widescreen anim patch instead if it exists
2025-01-30 10:27:56 +01:00
Alug 36404fd93d inline bunch of one line HWR things 2025-01-30 10:27:36 +01:00
Alug 3b90038b62 inline G_TicsTo stuff
theyre smol and get called often
2025-01-30 10:27:25 +01:00
Alug 40660f2379 "makes integer from pointer without a cast" deez nuts 2025-01-30 10:27:19 +01:00
Alug 7ab7193592 remove noshowhelp from bunch of debug cvars
doesent make too much sense those are hidden tbh
2025-01-30 10:27:13 +01:00
Alug 1fabc14ac9 Merge pull request #151 from Indev450/fixdupeacks
Try to fix issues with clients locking up due to never receiving acks back in case of dropped packets
2025-01-30 10:26:33 +01:00
Alug d9492eee28 Merge pull request #152 from Indev450/delaynetxcommand
Delay netxcmds when buffer is full instead of dropping them
2025-01-30 10:26:14 +01:00
Alug e689deaa2b dont need to do all this crap if disabled 2025-01-30 00:17:20 +01:00
Alug 93a1a432d7 "kill" seenames
idk if anyone wants it, its still there, needed to move the netvar out of it tho lol
2025-01-30 00:17:17 +01:00
Alug 0b71bc2880 move this after the early returns
save some time when drifting
2025-01-30 00:17:14 +01:00
Alug 9f4b72800a lmao 2025-01-30 00:17:11 +01:00
Alug 5d2e08d124 turn driftsparkGrowTimer into a player field
less hacky and avoids 3 loops lol
2025-01-30 00:17:08 +01:00
Alug 5fb1b39742 kill redundant laptime code
just use the newer one
2025-01-30 00:17:05 +01:00
Alug 5ef8e5c447 renable jit compile
this branch is a mess lmao
2025-01-29 22:33:49 +01:00
GenericHeroGuy 3152cddb3d In rehashtab, do counthash before adding asize
Thanks alug!
2025-01-29 22:29:03 +01:00
Alug c2b87b46fc refactor M_DrawSlider
apparently fixes weird framerate issues with gamma slider
also shows the values on sliders
2025-01-29 19:35:04 +01:00
Alug d764941341 inline V_LocalTransFlag
its very smol
2025-01-29 19:35:01 +01:00
Alug 112ca2707a even more replay deb prints lel 2025-01-29 19:34:58 +01:00
Alug cf26092917 smol replay fixes from rr 2025-01-29 19:34:52 +01:00
Alug 842a252576 Have replay recording of "hits" use the reference count system
https://git.srb2.org/KartKrew/RingRacers/-/commit/fa8bffabfc51ea1d7be86d833190bb7dcf494fca
2025-01-29 19:34:46 +01:00
Alug e23d9bc3cc also print player name for item desynch 2025-01-29 00:46:25 +01:00
Alug e206ad3c08 better replay resynch prints 2025-01-29 00:40:21 +01:00
Alug 2eddddc6fc ss->touching_preciplist deez 2025-01-28 18:29:23 +01:00
Alug de6a078f01 inline a few hooklib functions 2025-01-28 18:26:20 +01:00
Alug 283f4d1e37 super smol optimization 2025-01-28 18:26:16 +01:00
Alug 0f3cd28019 pass slope to K_RollMobjBySlopes
removing some code dupe in the process and allows some more flexability
2025-01-28 18:26:13 +01:00
Alug 7fec7f8937 forgor to set those oop 2025-01-28 16:33:41 +01:00
Alug 3f54630531 fix issues with models
- Sloperotation was weird, it now uses what we calculate in K_RollMobjsBySlopes
- in general uses srb2s newer system
- alot of cleanup of pointless variables
- sprinfo pivots should now work
- removed roillmodel since it was smth weird and broke rollangle
2025-01-28 16:33:38 +01:00
Alug 7f864dba3a dont recalc if precip sector didnt move
forgor i can just check this
2025-01-27 23:42:10 +01:00
Alug 49644f10f5 only need to recalc this once a tic
precip thinker thinks slightly more often, but we really dont need that tbh
2025-01-27 23:42:07 +01:00
Alug f78b41dde3 only recalc floorz for visible precip mobjs
before it apparently recalced it a crapton for the crapton not visible precipmobjs, which even on vanilla maps led to noticable jitter
2025-01-27 23:42:04 +01:00
Alug 7163337a27 just keep a copy of musicchange before the lua hook
keep music can check for what was it stuff changed last to
2025-01-27 16:44:18 +01:00
Alug 27fd087631 grow an invinc music also broke stuff
cant put it into the music exception list, otherwise it will always disable keepmusic when either one was used even once
2025-01-27 16:13:14 +01:00
Alug 9b7ec4f266 the music system is truly amazing 2025-01-27 15:33:16 +01:00
Alug 90fd4b54b3 i hate conditions 2025-01-27 15:33:13 +01:00
Alug 97e5de1ee5 smol optimization comparePolygon
return slightly earlier for skywalls and horizonlines
2025-01-27 15:33:10 +01:00
Alug 5f247a6d11 Merge branch 'gentlemens' into Saturn-Testing 2025-01-27 15:33:07 +01:00
Alug 0dd4f3b3d3 make old ping bar be blue on d1 aswell as purple with mindelay 2025-01-27 09:19:38 +01:00
Alug ccc0189e70 also rotate eggboxes in air 2025-01-26 21:17:20 +01:00
Alug 8543636576 fall through deez 2025-01-26 17:29:19 +01:00
Alug b09025df08 delet if else hell 2025-01-26 18:18:33 +01:00
Alug 39c747e430 handle vote bg fallbacks more gracefully
if someone doesent provide a widescreen patch it now falls back to the replaced non widescreen one and vice versa instead of just falling back to what vanilla provides
2025-01-26 17:57:36 +01:00
Alug 2104822cac forgor about the banan spin 2025-01-26 16:18:41 +01:00
Alug bcf713932a reduce scope of those
makes it look slightly neater
2025-01-26 16:18:19 +01:00
Alug 6d671b6576 draw non widescreen anim vote bg before falling back to vanilla bg
how it was before, the game just fallback to the vanila widescreen patch if there was no animated widescreen bg provided, just fall back to the non widescreen anim patch instead if it exists
2025-01-26 16:18:16 +01:00
Alug b7345107d7 move this
no need to have two conditions for same thing
2025-01-26 16:18:14 +01:00
Alug 9cdfdf9bda spawn speedlines with non synched rng if ur in eggbox status
and well only if you have colourisation enabled
2025-01-25 21:22:51 +01:00
Alug 42f200aabd inline bunch of one line HWR things 2025-01-25 21:22:19 +01:00
Alug f8853ae902 inline G_TicsTo stuff
theyre smol and get called often
2025-01-25 21:21:43 +01:00
Alug 061201c0de "makes integer from pointer without a cast" deez nuts 2025-01-25 16:59:41 +01:00
Alug f11dab363f remove noshowhelp from bunch of debug cvars
doesent make too much sense those are hidden tbh
2025-01-25 16:21:16 +01:00
Alug 48dd50afe4 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-25 09:33:34 +01:00
Alug 49cefa92e2 dont banan drag rumble when not driving lel 2025-01-25 09:33:14 +01:00
Alug 352e71d9e9 Merge branch 'directionallight' into Saturn-Testing 2025-01-25 08:41:28 +01:00
Alug 2b13af2367 setup maplight stuff earlier
otherwise it doesent init early enough
2025-01-25 08:41:22 +01:00
indev 2296ef0987 Fix 'total podium' stat display using totalwins 2025-01-25 01:10:06 +03:00
indev 30f11e4e46 Fix 'total podium' stat display using totalwins 2025-01-25 01:09:43 +03:00
Alug 97a5c15c36 just use D_NumPlayers 2025-01-24 20:44:50 +01:00
Alug 43dbaf7004 j moment 2025-01-24 20:16:32 +01:00
Alug 55bb65034f [0] 2025-01-24 20:16:21 +01:00
Alug 57ebb297c0 simplify camtoggledelay and spectatedelay
just make em an array and use lööp
2025-01-24 20:44:28 +01:00
Alug a513f10296 assign player later 2025-01-24 20:44:25 +01:00
Alug a1074852dd kill P_TeleportMove
P_MoveOrigin literally just calls that so replace it with that
2025-01-24 20:44:21 +01:00
Alug 5f546a3df8 just use D_NumPlayers 2025-01-24 20:44:12 +01:00
Alug 986c19ef6e Merge branch 'gentlemens' into Saturn-Testing 2025-01-24 20:43:49 +01:00
Alug bea7ad5876 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-24 19:25:59 +01:00
Alug b1fa124032 add funny banan throw rotate thing
like rr
2025-01-24 19:25:53 +01:00
Alug a15de64160 think we should copy this 2025-01-24 19:25:50 +01:00
Alug af3a23ce66 make trailing items also be able to rotate on slopes
mostly stuff from RR thx!
2025-01-24 19:25:46 +01:00
Alug b55c654a81 oop 2025-01-24 06:43:54 +01:00
Alug b97841b6fd proper add server gentlemans
this should be a netvar, but we cant really do that, thought not a huge deal
however id wish to send some kinda message to all players but idk
2025-01-24 06:40:05 +01:00
Alug ac64428abb dont mess up realpingtable
when serverplayer has mindelay active
this was supposed to show mindelay for serverplayers but that doesent work :chaosleep: so just do not mess with it
2025-01-23 21:55:48 +01:00
Alug 1857ce5113 conflict fix 2 2025-01-23 21:29:08 +01:00
Alug f4f3f6e29c slight cleanup HU_drawPlayerPing 2025-01-23 21:27:42 +01:00
Alug 9354a0ab88 conflict fix 2025-01-23 21:27:07 +01:00
Alug 6ef9c0b305 colourise pingnumber when gentlemens is active 2025-01-23 18:11:00 +01:00
Alug 6b951d2773 division by zero moment 2025-01-23 18:10:57 +01:00
Alug 064e9d58af add gentlemens delay to ping display
+ display ping even offline if you have mindelay active
2025-01-23 18:10:53 +01:00
Alug 1d5092cf22 smol cleanup 2025-01-23 18:10:21 +01:00
Alug 861d35e8d3 port clientsided gentlemens delay
cant do the serverside stuff due to netvars
2025-01-23 18:10:18 +01:00
Alug f92c519d05 Prevent dropped ticcmds due to interp timing jutter
kinda figured out what this does, and makes clients on uncapped listen servers alot less prone to drop gametics
2025-01-23 15:07:37 +01:00
Alug ecd3ad40ae fix freecam not resetting online
idk local player handling is fucking awful in kart
2025-01-22 19:42:21 +01:00
Alug 6d94ff8d1f fix freecam not resetting online
idk local player handling is fucking awful in kart
2025-01-22 19:42:14 +01:00
Alug fad3c2bbdf Merge remote-tracking branch 'origin/Saturn-Testing' into Saturn-Testing 2025-01-22 19:05:16 +01:00
Alug 46c53ea679 try just passing the sector + add 50 trillion extra checks
idk anymore but this is literally now how vanilla kart behaved
2025-01-22 19:05:10 +01:00
Alug 062caa8f53 skip some stuffs when theres no portals
skip some portal checking incases wheres no portals
2025-01-22 18:10:54 +01:00
Alug f6a39fea4b Merge remote-tracking branch 'origin/kartstats' into Saturn-Testing 2025-01-22 17:33:49 +01:00
Alug bfabdb7b6a bruh 2025-01-22 17:24:11 +01:00
Alug ea82f89b53 bruh 2025-01-22 17:24:03 +01:00
Alug 7f9edddbcc remove redundand FTransform field 2025-01-22 16:58:30 +01:00
Alug 23443b2632 remove redundand FTransform field 2025-01-22 16:58:24 +01:00
Alug 114eab952b Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-22 15:47:41 +01:00
Alug 883cd3f516 more smol ogl sprite drawer optimizations 2025-01-22 15:46:44 +01:00
Alug a3e2d3ec71 also fix potential use-after-free in HWR_AddPrecipitationSprites
no clue why ogl didnt do it since its effectively the same code as software
2025-01-22 15:46:38 +01:00
Alug 7213f0dd5d split HWR_DrawSprites
saves on ALOT of conditional branching in a lööp when models are disabled
2025-01-22 15:45:25 +01:00
Alug f8472721ee fix level statistics page controls 2025-01-21 16:54:38 +01:00
indev 9634bc99bd Check for spectator in K_StatRound 2025-01-21 17:38:09 +03:00
Alug 81a0ba08bd use SRB2.2s general folder structure
- seperate addons folder (download folder remains in home directory unlike RR)
- seperate gif and screenshot folders
2025-01-21 01:35:24 +01:00
Alug 12f5bd141d use SRB2.2´s logging system
- creates a new logfile each start instead of overwriting it everytime
2025-01-21 01:35:21 +01:00
Alug 6e2b7e534b Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-20 22:26:41 +01:00
Alug 3bbdd1ea72 e better play it safe 2025-01-20 22:26:26 +01:00
Alug 2b09e74dcf kill aiming stuff in BuildTiccmd 2025-01-20 22:26:23 +01:00
Alug 543365f296 cv_invertmouse2 moment 2025-01-20 22:22:13 +01:00
Alug da3bf945cb delete nonfunctional second mouse stuff 2025-01-20 22:18:59 +01:00
Alug 4e311ca279 kill even more unused patches
+ nonexistant crosshair stuff
2025-01-20 21:31:52 +01:00
Alug 18c449a9ed dont cache all those unused hud graphics 2025-01-20 21:18:31 +01:00
Alug d7293ef41d Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-20 19:34:02 +01:00
Alug 5dc76d07ec Hold up/down for 2 seconds while not moving to pan the camera vertically
from RR
2025-01-20 19:33:56 +01:00
Alug ebfafd7b6e a 2025-01-20 19:21:44 +01:00
Alug 24ca9fdafa oops didnt init this 2025-01-20 19:21:42 +01:00
Alug 8cdb920f54 dont turn 90 degrees when switching to freecam 2025-01-20 19:00:22 +01:00
Alug cccf6449f9 fix freecam vertical look for the 500th thousand time
truly amazing code
2025-01-20 18:04:20 +01:00
Alug 88c8860548 Merge remote-tracking branch 'origin/freecamstuffs' into Saturn-Testing 2025-01-20 17:05:57 +01:00
Alug 85a64a6c14 put this thing onto its original place 2025-01-20 15:29:06 +01:00
Alug d7c3cf7d3e put this into switch
looks better
2025-01-20 15:29:02 +01:00
Alug 9bd2da04e2 put this thing onto its original place 2025-01-20 15:28:51 +01:00
Alug 56563507b6 null check target in P_DamageMobj
apparently this may be null
2025-01-19 18:21:13 +01:00
Alug fa98b06dba :chaosleep: 2025-01-19 18:10:25 +01:00
Alug a763d85122 make function for driftsparkcolour
reduce some code dupe
2025-01-19 17:45:28 +01:00
Alug db8b1ca0a3 replace common damage magic numbers with named macros
that stuff always confused me before lol
2025-01-19 17:38:32 +01:00
Alug 5106c391bb readd check for banan
this time without mobjwasremoved
just check if banan exists
2025-01-19 17:38:22 +01:00
Alug 0c2e285d2e remove some code dupe in R_AddLine 2025-01-19 17:35:00 +01:00
Alug f7df80f763 ; moment 2025-01-19 17:34:56 +01:00
Alug 676265a92a fix "lessprecip"
logic error lul
2025-01-19 17:34:52 +01:00
Alug f9ee18584e use MT_NULL instead of number 2025-01-19 17:34:42 +01:00
Alug 3d394bb621 refactor weather switching
from srb2
makes this more sane and makes PRECIP_STORM_NORAIN not spawn a crapton of invisible mobjs
2025-01-19 17:34:33 +01:00
Alug 913c0f4ae7 idk why we check this 2025-01-19 17:34:19 +01:00
Alug 04bf086a9e forgor to check for that flag 2025-01-19 17:34:12 +01:00
Alug 2a25328ce0 change tooltips slightly 2025-01-19 17:33:56 +01:00
Alug af7393832a add stuff to menu 2025-01-19 17:33:50 +01:00
Alug 516bea6e8a add toggle for item amount number display 2025-01-19 17:33:30 +01:00
Alug 82bd65eebd don use multiicon patches in 3/4p splitscreen
since it uses the smoler patches
also removes redundant assignments
2025-01-19 17:33:20 +01:00
Alug 44b6c53452 change banana default patch to match lua roulette hud behaviour 2025-01-19 17:33:02 +01:00
Alug 28b294f48a add support for multiitem patches (thx neppy!)
needs new patches, unsure if we just gonna add em to the extra file or make a new one
so it ambigous for now
2025-01-19 17:32:21 +01:00
Alug 56ed32d094 merge conflict moment 2025-01-19 17:31:55 +01:00
Alug 60d81037fd "Fix console text bleeding "
read https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1434
2025-01-19 17:31:27 +01:00
Alug 8abe40cc81 cap console animation if uncappedhud is disabled
since thats "how vanilla done it" before
2025-01-19 17:31:20 +01:00
Alug cd9df8065d use R_GetHudUncap 2025-01-19 17:31:13 +01:00
Alug b6d50da809 add fancyroulette toggle 2025-01-19 17:31:08 +01:00
Alug 383cc71bb3 reorder saturn hud menu a little
also remove uncapped hud from it, since why would you ever wanna turn it off?
2025-01-19 17:30:49 +01:00
Alug d75c16bab5 add the fancy hudtrans flags 2025-01-19 17:30:08 +01:00
Alug 8efdbe40e4 dont fancy during respawn 2025-01-19 17:30:00 +01:00
indev ada779a97d Fancy :D 2025-01-19 17:29:56 +01:00
Alug 37d28464ea change how spritescales and offsets work
- now theres realoffsets aswell
- allows better control of changing things per lua and still do funky stuff in hardcode without conflicts
- spritescales and offsets now get reset centralised before any thinkers run
2025-01-19 17:29:41 +01:00
Alug 816ad7c2fc add banan jitter toggle to menu 2025-01-19 17:29:29 +01:00
Alug c4d1f9c6a2 add toggle for bananjitter 2025-01-19 17:29:24 +01:00
Alug 33e1cfc2ba le funny banan drag jumpy 2025-01-19 17:29:07 +01:00
Alug bce9990826 only rumble banan when on ground 2025-01-19 17:27:51 +01:00
Alug 923e0500df fix typo lel 2025-01-19 17:27:31 +01:00
Alug 017646e704 forgor about software again 2025-01-19 17:26:35 +01:00
Alug 4900177e8c TEST: skip prepping 3d floors for fofs without planes
or if they were already checked
2025-01-19 17:25:35 +01:00
Alug ed97d28254 split HWR_RenderBSPNode
to reduce function call overhead
its only microscopicly faster lel
2025-01-19 17:25:26 +01:00
Alug 15185e0450 simplify keepmusic
honestly no clue why i made stuff check on every music change
2025-01-19 17:23:52 +01:00
Alug a29f8d5f38 dont keep music if there is no music 2025-01-19 17:23:45 +01:00
Alug 8dc2d22996 Clear acktosend when initializing node
since it was never reset, values might been taken over from former node
2025-01-19 17:22:59 +01:00
indev 4d355f99c0 Add spb music to list of exceptions for keepmusic 2025-01-19 17:22:52 +01:00
indev aa0bf396e7 Fix spectator control text overlapping when showdirectorhud is off 2025-01-19 17:22:38 +01:00
indev 5f3dc081b5 Don't start invinc/grow alarm sound when player uses power item
It will still be started in K_UpdateInvincibilitySounds, but now if
player already had invincibility, they won't get 2 overlapping sounds
2025-01-19 17:33:44 +03:00
indev 8959d3aec4 Put playtime statistics at first page instead of RA medals 2025-01-19 03:04:24 +03:00
indev c589d04a32 New statistics menu (WIP) 2025-01-19 02:55:39 +03:00
indev 8ceda27817 Wipe kart stats on game data reload 2025-01-19 02:43:18 +03:00
indev 7260c2c77e That was from testing a 2025-01-19 02:29:41 +03:00
indev 7991dafe64 Make custom stats fully compatible between different versions, so new fields can be added in future without save corruptions 2025-01-19 02:28:16 +03:00
Alug 232790836b remove some code dupe in R_AddLine 2025-01-19 00:24:02 +01:00
Alug 9305b0a287 ; moment 2025-01-18 21:44:34 +01:00
Alug 4ff8b869db fix "lessprecip"
logic error lul
2025-01-18 21:24:47 +01:00
Alug c1df939ac8 use MT_NULL instead of number 2025-01-18 14:36:42 +01:00
Alug aea8cd1d62 refactor weather switching
from srb2
makes this more sane and makes PRECIP_STORM_NORAIN not spawn a crapton of invisible mobjs
2025-01-18 14:29:58 +01:00
Alug b816622129 idk why we check this 2025-01-18 14:29:55 +01:00
Alug d80613f26f forgor to check for that flag 2025-01-18 11:45:39 +01:00
Alug d5505080cf change tooltips slightly 2025-01-17 23:44:35 +01:00
Alug 92d6a541ae add stuff to menu 2025-01-17 23:44:32 +01:00
Alug 633948e8cc ok clang 2025-01-17 23:44:27 +01:00
Alug 2ac48f715a :chaosleep: 2025-01-17 19:53:42 +01:00
Alug e82c9a71ec add toggle for item amount number display 2025-01-17 17:15:36 +01:00
Alug 004f6d1495 Revert "turn on multiitemicons by default"
This reverts commit 9217cd3832.
2025-01-17 17:15:33 +01:00
Alug 32b54e1346 merge conflict moment 2025-01-17 15:04:13 +01:00
Alug f50b19968c disable jit compilation for now 2025-01-17 14:45:35 +01:00
Alug c9d0415d84 "Fix console text bleeding "
read https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1434
2025-01-17 14:23:05 +01:00
Alug 625932e8f3 cap console animation if uncappedhud is disabled
since thats "how vanilla done it" before
2025-01-17 14:18:09 +01:00
Alug 5a03428d76 use R_GetHudUncap 2025-01-17 14:18:06 +01:00
Alug 33c6d13c7a add fancyroulette toggle 2025-01-17 14:18:04 +01:00
Alug ba5e15d29b add the fancy hudtrans flags 2025-01-17 14:18:01 +01:00
Alug de64eb6f8d dont fancy during respawn 2025-01-17 14:17:58 +01:00
indev 75589f9770 Fancy :D 2025-01-17 15:47:55 +03:00
Alug 9217cd3832 turn on multiitemicons by default 2025-01-17 12:58:56 +01:00
Alug 49d295535f add banan jitter toggle to menu 2025-01-17 12:58:52 +01:00
Alug bd489bd462 change how spritescales and offsets work
- now theres realoffsets aswell
- allows better control of changing things per lua and still do funky stuff in hardcode without conflicts
- spritescales and offsets now get reset centralised before any thinkers run
2025-01-17 01:31:12 +01:00
Alug 7d621b5b1d add toggle for bananjitter 2025-01-17 01:30:39 +01:00
Alug 22b60a07e5 le funny banan drag jumpy 2025-01-17 01:30:35 +01:00
Alug adf52e1520 only rumble banan when on ground 2025-01-16 23:33:18 +01:00
Alug b5d027b37c fix typo lel 2025-01-16 22:44:27 +01:00
Alug c5a1513cf5 don use multiicon patches in 3/4p splitscreen
since it uses the smoler patches
also removes redundant assignments
2025-01-16 21:58:56 +01:00
Alug 7116607881 ignore invisible fofs again 2025-01-16 21:43:30 +01:00
Alug 559b0bf45a also skip invisible fofs 2025-01-16 21:43:24 +01:00
Alug 72e72af6b1 Clear acktosend when initializing node
since it was never reset, values might been taken over from former node
2025-01-16 01:03:38 +01:00
Alug e0d6a6ae0f dont keep music if there is no music 2025-01-16 01:02:06 +01:00
indev 64588f8337 Add spb music to list of exceptions for keepmusic 2025-01-16 02:47:50 +03:00
indev 66b0931f07 Fix spectator control text overlapping when showdirectorhud is off 2025-01-15 21:17:56 +03:00
Alug 5ddabba0b2 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-15 13:00:33 +01:00
Alug 2e054d8bec Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-15 13:00:31 +01:00
Alug 1db9bcd6c9 oops 2025-01-15 12:59:49 +01:00
Alug 6f7a52a6a6 make freecam strafe be affected by freecamspeed cvar 2025-01-15 12:59:47 +01:00
Alug 2c3ff3a628 dont throw a warning about addons with custom gamedata
just ignore it
2025-01-15 12:59:38 +01:00
indev 976c74d694 G_PlayerReborn didn't work for 'respawns' stats, maybe G_DoReborn will? 2025-01-13 23:17:51 +03:00
indev e3adcfb62e Player kartstuff's get reset in G_PlayerFinishLevel, so need to call K_StatRound earlier 2025-01-13 23:11:52 +03:00
Alug cd76cc0e9f no need to strcmp just check for "savemoddata"
that bool only ever gets set to true if the savegame has been switched to the modded one and unlike in srb2 this WILL never be reset to false again
2025-01-13 17:42:33 +01:00
Alug e2e356d0c2 save vanilla save when switching to modified savegame
also add check so we dont rerun this everytime setgamemodified is called
2025-01-13 16:44:06 +01:00
Alug bb7c217ccc remove "majormods" checks from stuff that saves to savegame
so its only there to throw a notice when you load an addon
2025-01-13 16:44:04 +01:00
Alug cd3e664e6a oops fix menu stuff 2025-01-13 16:01:19 +01:00
indev e7d3e03169 Clear menus when running 'map' command 2025-01-13 15:53:51 +01:00
indev 591a2e5dbb Forgor respawns 2025-01-13 17:52:41 +03:00
Alug 4e4871fe93 remove "errorshitspam"
hooklib refactor indirectly fixed the root issue, so this is not needed anymore
2025-01-13 15:52:12 +01:00
Alug 6d1b754db5 remove this
hooklib refactor already indirectly fixed this so this code is pointless
2025-01-13 15:50:36 +01:00
indev cae9b754bc Oops 2025-01-13 17:37:50 +03:00
Alug 46e0c88280 make game use seperate save when addons are loaded
so you can record attack and it will also keep saving to statistics
also added a few things it now keeps track of
TODO: unfuck the statistics page and add a 2nd one perhaps? due to space reasons
menucode is hell
2025-01-13 17:36:07 +03:00
indev 4942db2806 Add kartstats 2025-01-13 17:13:40 +03:00
indev b5be515b9b Clear menus when running 'map' command 2025-01-13 14:25:14 +03:00
Alug 51067f2802 Merge branch 'Saturn-Next' into freecamstuffs 2025-01-13 08:39:38 +01:00
Alug 62a65c5c1d save a whopping 2ms from gamestart to race start on texture updating 2025-01-13 08:38:20 +01:00
Alug b9e23113c8 slightly cleanup gravstretch stuff 2025-01-13 08:34:52 +01:00
Alug 50f1a61182 fix having saltyhop disabled forcing player spriteyoffset to be forced 0
just clear out everything on toggle
2025-01-13 08:34:44 +01:00
Alug ed9adfae68 add toggle to colour sneakertrail flames (thx neppy!) 2025-01-13 08:34:34 +01:00
Alug cb4ef15c77 another attempt at fixing skipintro mus playing titlescreen music 2025-01-13 08:30:42 +01:00
Alug e4e18f0a62 check for 0 to avoid division by 0 2025-01-13 08:29:33 +01:00
Alug ab8cbcb450 reinit minimap stuff when a wad is added while ingame 2025-01-13 08:29:11 +01:00
Alug 4103fac605 slight cleanup r_draw8 2025-01-13 08:29:06 +01:00
Alug 0a58797f78 clamp to length-1 2025-01-13 08:29:02 +01:00
Alug 5db7f5f2e7 fix column drawers clamping stuff 2025-01-13 08:28:58 +01:00
Alug 47a3de8fe1 let "fovchange" work in software 2025-01-13 08:28:46 +01:00
Alug 2b725560cc add banandrag rumble lol 2025-01-13 08:28:36 +01:00
Alug 9f9cb833f0 add slight fadeout to spinout rumble 2025-01-13 08:28:22 +01:00
Alug f88290d34e kill unarchivevaluedemo
just pass if we load from replay or not and do stuff accordingly
2025-01-13 08:24:56 +01:00
Alug 157ff2df4f make gamestate download show total gamestate size 2025-01-13 08:24:38 +01:00
Alug a9117573fb add colourized speedlines
smth i had laying around in lugstuff
2025-01-13 08:23:02 +01:00
Alug cea28c591f slight cleanup minimap head stuff 2025-01-13 08:22:39 +01:00
Alug b963146faa split ra wheel and position number hud offsets
kinda ass due to the preset offset, but will just not apply if either was changed from its original position
2025-01-13 08:22:06 +01:00
Alug 181c948e86 toggle for camera turnaround on timeover 2025-01-13 08:21:58 +01:00
Alug d3b8e11783 one line this 2025-01-13 08:21:31 +01:00
Alug b3b19eff49 this doesent work out
breaks some textures not appearing on some maps
2025-01-13 08:04:10 +01:00
Alug d09d2dcffd this doesent work out
breaks some textures not appearing on some maps
2025-01-13 08:03:15 +01:00
GenericHeroGuy c5fddbbb69 Use references instead of upvalues for original I/O functions
No more unrestricted I/O through debug.getupvalue
2025-01-12 17:39:19 +01:00
GenericHeroGuy 2ef360a7ac Update to BLUAJIT 449b76f 2025-01-12 17:39:15 +01:00
Alug 509d26f938 forgor about software again 2025-01-12 17:37:40 +01:00
Alug 5a9efff87c TEST: skip prepping 3d floors for fofs without planes
or if they were already checked
2025-01-12 17:37:36 +01:00
Alug 24a93d107a split HWR_RenderBSPNode
to reduce function call overhead
its only microscopicly faster lel
2025-01-12 17:37:33 +01:00
Alug 67aa31439b dont rumble in freecam state 2025-01-12 17:25:57 +01:00
Alug 26902b4565 smol cleanup localskin ranking shit 2025-01-12 17:25:42 +01:00
Alug e320aff5dc dont rumble in freecam state 2025-01-12 17:24:50 +01:00
Alug 3f971fbab1 null check target in P_DamageMobj
apparently this may be null
2025-01-12 17:23:21 +01:00
Alug f24ce61cc9 slight cleanup minimap head stuff 2025-01-12 17:22:52 +01:00
Alug 137be1c7fa slightly cleanup gravstretch stuff 2025-01-12 17:08:16 +01:00
Alug 039018ddc9 change banana default patch to match lua roulette hud behaviour 2025-01-12 17:07:45 +01:00
Alug bef784b32a add support for multiitem patches (thx neppy!)
needs new patches, unsure if we just gonna add em to the extra file or make a new one
so it ambigous for now
2025-01-12 17:07:42 +01:00
Alug eaad3ebeac oops fix menu stuff 2025-01-12 17:07:33 +01:00
Alug af8637f8a4 fix having saltyhop disabled forcing player spriteyoffset to be forced 0
just clear out everything on toggle
2025-01-12 02:52:14 +01:00
Alug ba5ec70669 add toggle to colour sneakertrail flames (thx neppy!) 2025-01-12 02:52:10 +01:00
Alug 503f20a7f4 split ra wheel and position number hud offsets
kinda ass due to the preset offset, but will just not apply if either was changed from its original position
2025-01-12 02:52:07 +01:00
Alug 1237b553f7 toggle for camera turnaround on timeover 2025-01-12 02:52:04 +01:00
Alug 86c89a47da one line this 2025-01-12 02:51:59 +01:00
Alug ff895f3251 fix frame flag clash 2025-01-11 19:54:28 +01:00
Alug b40cb3331a fix frame flag clash 2025-01-11 19:54:13 +01:00
Alug 88025040c3 Merge branch 'directionallight' into Saturn-Testing 2025-01-11 18:10:29 +01:00
Alug 130c1aba67 put random direction light toggle into advanced video options
also make it a scoll menu
2025-01-11 18:10:24 +01:00
Alug e7c0cda77f reinit random maplight on mapchange when toggled
the condition may otherwise not change the light if you restart the same map
2025-01-11 08:52:55 +01:00
Alug a07c2f4c32 reinit random maplight on mapchange when toggled
the condition may otherwise not change the light if you restart the same map
2025-01-11 08:52:49 +01:00
Alug 99e64388ba Merge branch 'directionallight' into Saturn-Testing 2025-01-11 08:34:40 +01:00
Alug 96b7a4efe6 add FF_ABSOLUTELIGHTLEVEL
mobj_t.lightlevel is absolute instead of relative when set
2025-01-11 08:33:02 +01:00
Alug 124b2ff431 add encore variants of maplight 2025-01-11 08:32:59 +01:00
Alug c1ec72e606 oops 2025-01-11 08:28:57 +01:00
Alug ef1faf9f68 those somehow got lost 2025-01-11 08:26:12 +01:00
Alug 02595b9ea6 forgor this 2025-01-11 07:50:25 +01:00
Alug c1514635b0 if disabled and no soc overrides light behave like vanilla
always apply wall and slope contrast pls
2025-01-11 07:50:22 +01:00
Alug e5e7205c95 change how randomized light works
so it doesent kill actual soc set randomlight if you toggle it
2025-01-11 07:26:44 +01:00
Alug f8d1bf0811 Merge branch 'Saturn-Next' into directionallight 2025-01-11 07:26:37 +01:00
Alug a1f185b0f0 Merge pull request #148 from Indev450/checkposopti
Dont always call R_PointInSubsector if thing has not moved in P_CheckPosition
2025-01-11 01:37:07 +01:00
Alug 8981ae3117 Merge pull request #156 from Indev450/precipthinklist
Add a seperate thinkerlist for precipmobjs only
2025-01-11 01:36:23 +01:00
Alug 2a948ca4c2 move this 2025-01-10 22:46:52 +01:00
Alug 8ff0524bbc move this 2025-01-10 22:46:18 +01:00
Alug e749c9764c Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-10 22:31:52 +01:00
Alug d9f0c55fee "Invinciblity" 2025-01-10 22:31:46 +01:00
Alug 69a6adf0a8 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-10 22:28:47 +01:00
Alug ab064c90dd let "fovchange" work in software 2025-01-10 22:28:45 +01:00
Alug 50d2bf5d8d seperate game turn axis from cam turn axis
both are bound to the same value by default, so vanilla controls remain intact
theres no other good way to have gamepad controls for this sadly
2025-01-10 22:28:34 +01:00
Alug d39fd5bb5c strafe controls for speccam/freecam
TODO: seperate cam turning axis from gameplay turn axis for gamepads
2025-01-10 22:28:31 +01:00
Alug 817df662da slight cleanup r_draw8 2025-01-10 02:17:38 +01:00
Alug d093b461d6 clamp to length-1 2025-01-10 02:14:38 +01:00
Alug 5cc756f853 reinit minimap stuff when a wad is added while ingame 2025-01-10 02:12:13 +01:00
Alug 07c443598b fix column drawers clamping stuff 2025-01-10 02:11:52 +01:00
Alug 3c6116255b kill unarchivevaluedemo
just pass if we load from replay or not and do stuff accordingly
2025-01-09 21:25:08 +01:00
Alug 5689e3815a shouldnt this be uint? 2025-01-09 20:22:40 +01:00
Alug 9bf6a72621 make gamestate download show total gamestate size 2025-01-09 18:47:21 +01:00
Alug 2e02aa16bb Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-09 17:27:38 +01:00
Alug 1a9865ebc4 this should also use unpaused rendertimefrac 2025-01-09 17:27:25 +01:00
Alug 8e7fddd6b0 use lööps for those to look a little better lel 2025-01-09 17:15:18 +01:00
Alug ac8f6455ff dont reset cam using f12 when only one player is ingame 2025-01-09 17:15:15 +01:00
Alug 3c268c8cbd slightly refactor chasecam stuff again 2025-01-09 17:15:12 +01:00
Alug a11227b15a fix postimg data types mismatch
also remove the "postimgflag_t" typedef since its useless
and use smoler type for everything we dont need much space lol
2025-01-08 18:34:24 +01:00
Alug 10b56e7b4f fix postimg data types mismatch
also remove the "postimgflag_t" typedef since its useless
and use smoler type for everything we dont need much space lol
2025-01-08 18:34:16 +01:00
Alug f52db71ec6 this is not needed anymore 2025-01-08 17:11:53 +01:00
indev 38b52b826a huh 2025-01-08 12:00:41 +03:00
Alug bc1f21961c smol cleanup localskin ranking shit 2025-01-08 06:29:28 +01:00
Alug 0e1f843f50 ; 2025-01-08 05:52:08 +01:00
Alug 2a5d1fb84a ; 2025-01-08 05:52:01 +01:00
Alug 3b0d0dcd0c add banandrag rumble lol 2025-01-08 05:51:17 +01:00
Alug f92cf3df4f add slight fadeout to spinout rumble 2025-01-08 05:51:15 +01:00
Alug 274c9904e6 forgor to delet this 2025-01-08 04:13:07 +01:00
Alug 44ee017dee forgor to delet this 2025-01-08 04:12:51 +01:00
Alug 1416650c9d reorder saturn hud menu a little
also remove uncapped hud from it, since why would you ever wanna turn it off?
2025-01-08 05:09:03 +01:00
Alug 4acf6d336b add colourized speedlines
smth i had laying around in lugstuff
2025-01-08 05:08:27 +01:00
Alug dd7a861280 Merge branch 'rankingsrefactor' into Saturn-Testing 2025-01-08 04:47:39 +01:00
Alug bbb4893857 throw this into a function
smth smth nesting
2025-01-08 04:47:25 +01:00
Alug 3054c2366e Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-08 04:10:13 +01:00
Alug 51e367a61d move saturn hud cvars to k_kart and fix driftgauge extra showing
if there is no patch for it
its kinda dumb, since technically would allow to not load all of em
but im lazy and dont wanna change possiblevalues around
2025-01-08 04:10:05 +01:00
Alug 165803c95c toggle for smol positionnum and posnum animation 2025-01-08 04:10:02 +01:00
Alug d01ed38895 fix "connect" command not saving to last server 2025-01-08 03:23:37 +01:00
Alug f9e9b423dd Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-08 01:50:31 +01:00
Alug cdfef0f884 oops forgor those 2025-01-08 01:50:26 +01:00
Alug ddc8e4a29e clean up gamepad led stuff 2025-01-08 01:47:05 +01:00
Alug f576f39bc6 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-08 01:34:00 +01:00
Alug f74cd97c4b clean up this mess a little 2025-01-08 01:33:55 +01:00
Alug bb91d8e1e3 dont rumble in freecam + player fix 2025-01-08 01:33:49 +01:00
Alug ee8fd22f36 oops fix software lel 2025-01-08 01:33:46 +01:00
Alug c0d4599a35 TEST: revert sleep stuff for now
dedi may sometimes get stuck here somehow
2025-01-07 23:48:41 +01:00
Alug 24a7d4b82d Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-07 20:18:49 +01:00
Alug 5c5a5e200e fix fbo crap once again 2025-01-07 20:18:39 +01:00
Alug 864d747e3b check if subsector has sector before assigning 2025-01-07 19:49:54 +01:00
Alug d623820833 check if subsector has sector before assigning 2025-01-07 19:49:46 +01:00
Alug a9be6a54ff Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-07 18:47:31 +01:00
Alug d41b6c185a fix freecam aim getting stuck and other issues
- gamepads now aim like they used to and at same speed as keyboard
- aim reset has been changed so it resets automatically, but also can be manually reset with centerview
- aiming is locked during cam reset
2025-01-07 18:47:26 +01:00
Alug 3b60cb2bcd replace common damage magic numbers with named macros
that stuff always confused me before lol
2025-01-07 16:31:16 +01:00
Alug fe3ff15539 readd check for banan
this time without mobjwasremoved
just check if banan exists
2025-01-07 16:31:13 +01:00
Alug f5018f628a Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-07 16:31:09 +01:00
Alug 03e45f4590 check for cam subsector
since we can move it around and i added this to freecam mode, subsector may be null for reason so better be safe than sorry
2025-01-07 16:31:04 +01:00
indev ce31ceda65 If available, add map title into crash log 2025-01-07 14:52:58 +03:00
indev aa00419198 If available, add map title into crash log 2025-01-07 14:52:19 +03:00
Alug fd5575ace5 make this more complicated due to a "-" 2025-01-06 22:50:30 +01:00
Alug c8737bd43f make this more complicated due to a "-" 2025-01-06 22:50:24 +01:00
Alug 2e31e08522 check for 0 to avoid division by 0 2025-01-06 22:41:41 +01:00
Alug 1412805503 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-06 22:41:25 +01:00
Alug eff6b31ee8 change director toggling handling
- now not changable over console anymore, bind only!
- it doesent save anymore so its always disabled at game start
- moving while in spec state will disable director when active so stand still
- disable it in splitscreen completely
- only adjust view when toggling it on
2025-01-06 22:41:20 +01:00
Alug 03259aeca0 let postimg stuff also apply to freecam 2025-01-06 22:41:18 +01:00
Alug 812e269195 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-06 20:36:50 +01:00
Alug dbb5c1482b add a little extra safety here ig
this crashed on levelload once so idk maybe player was null ig
2025-01-06 20:36:31 +01:00
Alug afa66d0418 double the slack for slep 2025-01-06 20:36:25 +01:00
Alug 7177b396e0 any of those may be NULL in MakePatch
no idea but this crap keeps crashing in some other place every single time i add a check somewhere else
2025-01-05 23:02:36 +01:00
Alug e796f7e81f thats not timedemo lel 2025-01-05 21:25:01 +01:00
Alug 006fde8fea thats not timedemo lel 2025-01-05 21:24:55 +01:00
Alug 8499ca358b turn off any active menus when using demo play commands 2025-01-05 21:24:12 +01:00
Alug 890779713a turn off any active menus when using demo play commands 2025-01-05 21:24:03 +01:00
Alug 63b8cc1104 disable pause vhs effect when in freecam mode 2025-01-05 20:37:58 +01:00
Alug c4c995a9a3 disable pause vhs effect when in freecam mode 2025-01-05 20:37:49 +01:00
Alug 511105beb3 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-05 20:14:59 +01:00
Alug 718fe7e8ae slight slep optimization
https://git.do.srb2.org/STJr/SRB2/-/commit/1da55066d43ed6a0cb666999c20316bef463024b?merge_request_iid=2583
2025-01-05 20:14:54 +01:00
Alug 258447c17b disable director while in replay freecam 2025-01-05 19:02:08 +01:00
Alug 1d8be20962 disable director while in replay freecam 2025-01-05 19:02:01 +01:00
Alug a90c51ec0f no u may be used uninitialised 2025-01-05 18:54:08 +01:00
Alug 077076532f slight cleanup buildticcmd 2025-01-05 18:54:05 +01:00
Alug e1bf657a05 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-05 18:53:40 +01:00
Alug 7ca2051f84 Adjust slack based on precision
https://git.do.srb2.org/STJr/SRB2/-/commit/d20552c49d9fd6a2075ebd7d46b0b133c69f1dbe?merge_request_iid=2583
2025-01-05 18:53:32 +01:00
Alug 8ff5cc7cbb --------- 2025-01-05 15:11:25 +01:00
Alug bca4af201d no u may be used uninitialised 2025-01-05 14:51:32 +01:00
Alug 9af243177f --------- 2025-01-05 15:11:18 +01:00
Alug ca3c2bf70a remove this again
seems like it basically doesent change anything
2025-01-05 15:04:20 +01:00
Alug ce5fc9715d slight cleanup buildticcmd 2025-01-05 15:04:09 +01:00
Alug 606a50047c put refreshdirmenu back here 2025-01-05 15:04:06 +01:00
Alug b58c0705fc Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-05 15:04:01 +01:00
Alug 92649a393d dont cast "infinity" to int lel 2025-01-05 01:11:57 +01:00
Alug 98db1a5757 Further improve sleep accuracy on UNIX systems
hanichad https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2583
2025-01-05 01:11:54 +01:00
Alug 841c226732 this somehow got lost lel 2025-01-05 01:11:42 +01:00
Alug 7e8c8f4bb7 dont cast "infinity" to int lel 2025-01-05 00:43:20 +01:00
Alug ebedca82f3 Further improve sleep accuracy on UNIX systems
hanichad https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2583
2025-01-05 00:32:39 +01:00
Alug e06b61e8d2 revert "Faster z position checks for mobjs without collision" 2025-01-04 22:17:24 +01:00
Alug e2e703540e Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-04 22:17:22 +01:00
Alug e53c6bb4da reduce ternary hell a little lel 2025-01-04 21:54:53 +01:00
Alug 8fa3a73fb2 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-04 21:04:45 +01:00
Alug 5c8b318a93 make float and sink use accel and brake again but also keep rebindable controls
keeps intended behaviour since we now dont need to worry about player controls anymore
but keeps the rebindable buttons incase someone wants to do a crazy control setup for some reason
2025-01-04 21:04:04 +01:00
Alug 029907a87a Merge branch 'Saturn-Next' into freecamstuffs 2025-01-04 19:46:42 +01:00
Alug 56cff59438 Merge branch 'nospecmove' into Saturn-Testing 2025-01-04 19:41:38 +01:00
Alug 2f4a113685 more hAx: dont move player during freecam state besides hop and honk
useful if you wanna take pics and dont feel like driving away
2025-01-04 19:38:08 +01:00
Alug f512a08051 dont do this while not in replay
this is kinda awkward tbh, but its useful for replay stuff
2025-01-04 19:38:05 +01:00
Alug cb223d7ddf Merge branch 'nospecmove' into Saturn-Testing 2025-01-04 02:30:08 +01:00
Alug 96a4bf3464 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-04 02:30:06 +01:00
Alug 338bcf0d2d forgor about lookback ig 2025-01-04 02:30:01 +01:00
Alug 8cb7396f33 check for consoleplayer since displayplayer is who youre watching 2025-01-04 02:29:57 +01:00
Alug b69bb85003 remove redundant stuff
can just set this all the time, its only used when menu is active anyways so it doesent matter if we set it
2025-01-04 02:29:23 +01:00
Alug 729a74a561 remove redundant stuff
can just set this all the time, its only used when menu is active anyways so it doesent matter if we set it
2025-01-03 19:45:46 +01:00
Alug 5f0d47ca88 Merge branch 'nospecmove' into Saturn-Testing 2025-01-03 19:44:59 +01:00
Alug f9b1071539 simplify this 2025-01-03 19:44:10 +01:00
Alug 7d47834e55 oops smol error 2025-01-03 19:44:03 +01:00
Alug 2e1120dc50 move postimg flags to camera struct
- also dont let water and heat be applied on top of each other since it does not look good (water postimg takes priority over heat)
- also save a little time in opengl splitscreen since it does not support heat or wöter effects
2025-01-03 19:43:59 +01:00
Alug 64a2fe1410 clean shit up even more + fix cam aiming reset
dont really care about which input anyways.
2025-01-03 19:43:45 +01:00
Alug caa09cbcfb try and clean up this mess
+ fix cam angle being wrong when you switch to freecam from viewing someone
2025-01-03 19:43:36 +01:00
Alug ba4329e623 add another local ticcmd builder so it can guess if we "moved" and put us into freecam state and shit 2025-01-03 19:43:32 +01:00
Alug 575e46c3db let playercmd lua hook run during "spectator" input crap lmao 2025-01-03 19:43:19 +01:00
Alug 45237c9298 fix unitialised use of controller stuff 2025-01-03 19:43:10 +01:00
Alug 7de32c74e6 move spectator hack after pause/desynch code
this should take priority over everything
2025-01-03 19:43:04 +01:00
Alug 01b942e1fc giga shizo spec synch "fix"
ok so, for whatever dumb reason, spectatormovement will desynch at random, even on localhost.
with this we just literally fucking ignore almost every button input locally and just wont move our spectator player at all.
but since we are indeed still runiing specatotr movement code, and this is localcmd shit, the server just thinks we dont want to move and thus is "synchsave".
sadly this does not fix desynchs from vanilla players
the only code we keep is for button inputs that do certain actions like "item" so we can still join from spec with it and other crap
2025-01-03 19:42:58 +01:00
Alug 3388d35fe0 fix encore mirroring not applyingg to freecam/democam 2025-01-03 16:41:01 +01:00
Alug 2f014bb505 apparently this is slower for everything but rendering 2025-01-03 15:56:46 +01:00
Alug f9f7090b63 save subsector checks for dedi 2025-01-03 15:56:04 +01:00
Alug 0bc95e4b5e speed up camera position checks 2025-01-03 15:55:52 +01:00
Alug 250b41612e Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-03 15:55:32 +01:00
Alug c5b70ccc4a do NOT repeatedly call M_Responder!!
"thread safety" or smth
also put stuff into two seperate functions, since i started hating nesting
2025-01-03 15:55:07 +01:00
Alug 8b94aded16 smol fix 2025-01-03 15:54:52 +01:00
Alug e105d8f51e apparently this is slower for everything but rendering 2025-01-03 15:54:44 +01:00
Alug 54ed725061 didnt mean to revert this one 2025-01-03 15:54:01 +01:00
Alug 5844330301 only ever touch this if player has a mobjs
angleturn is dumb in kart and rarely really is what we want
2025-01-03 01:14:15 +01:00
Alug d1c80dfd9b smol fix 2025-01-02 22:54:16 +01:00
Alug b2097e2f93 apparently this is slower for everything but rendering 2025-01-02 21:50:57 +01:00
Alug 7386a2f40f let windoze detect 64bit mingw in makefile
lets us use just "make" cmd without specifieng any other crap on mingw64
2025-01-02 19:53:59 +01:00
Alug 5a1ecb55b8 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-02 17:09:48 +01:00
Alug b05d7d09cf Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-02 17:09:45 +01:00
Alug 30dc0abc25 move camera noclip stuff into its own function
its not used in kart anyways and moving it makes crap more readable
2025-01-02 17:09:34 +01:00
Alug a7a6e9edfc move camera noclip stuff into its own function
its not used in kart anyways and moving it makes crap more readable
2025-01-02 17:09:13 +01:00
Alug 854cb7ee49 this doesent work for us 2025-01-02 05:21:40 +01:00
Alug f7ca8fb943 add speccam playerflag
the other thing was weird and dumb lol
2025-01-02 04:54:25 +01:00
Alug dc0423f97e Merge remote-tracking branch 'origin/Saturn-Testing' into Saturn-Testing 2025-01-02 03:28:26 +01:00
Alug af968f1868 add speccam playerflag
the other thing was weird and dumb lol
2025-01-02 03:28:21 +01:00
Alug 2cc73cc52a this may not be synchsafe 2025-01-02 01:50:37 +01:00
Alug 28109dfb39 save subsector checks for dedi 2025-01-02 01:39:10 +01:00
Alug 2912994e6b speed up camera position checks 2025-01-02 01:39:07 +01:00
Alug 6d6d5996d7 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-02 01:39:03 +01:00
Alug 54fda32591 logic error lmao oops 2025-01-01 21:53:01 +01:00
Alug 5d44b44558 use FRACUNIT in rumbleticker + some changes
- brakedrift will now add to any rumble thats currently going on
- both hyu and invul now rumble less heavy on offroad
2025-01-01 21:34:14 +01:00
indev e321d759c0 Thats not defined or used anywhere, bad automerge maybe? 2025-01-01 20:01:54 +03:00
indev bb3a65f8ff Repurpose ST_DrawTextInput into M_DrawTextInputScroll, and move its definition into m_textinput.c. M_DrawTextInput is now a macro using M_DrawTextInputScroll 2025-01-01 19:59:25 +03:00
Alug 8da59dc288 slightly cleanup rumble and led ticker 2025-01-01 17:37:00 +01:00
Alug bd433e0776 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2025-01-01 17:22:51 +01:00
Alug fc9644f448 Merge branch 'precipthinklist' into Saturn-Testing 2025-01-01 17:22:29 +01:00
Alug 1558970064 Merge branch 'freecamstuffs' into Saturn-Testing 2025-01-01 17:20:04 +01:00
Alug 991dd55049 Merge branch 'Saturn-Next' into Saturn-Testing 2025-01-01 17:19:43 +01:00
Alug 8f0c5fb508 always close any menus when using "connect" command 2025-01-01 17:19:32 +01:00
Alug 5e1d43b5af those will never be changed ever 2025-01-01 17:19:29 +01:00
Alug 487018f146 hack: only let freecam for spec move when youre actually able to move as spec
cause kart weird, and we cant remove the spec movement due to synch reasons
and letting the cam move instantly instead of waiting, may put you in a weird cam position
2025-01-01 05:37:52 +01:00
Alug 3ade8b09c5 move early return even earlier
so theres no need to constantly init scale and drawdist
2025-01-01 05:30:31 +01:00
Alug 3180221a42 dont iterate through precip blockmap if there is no precip 2025-01-01 05:30:22 +01:00
Alug 9c37a8472e move early return even earlier
so theres no need to constantly init scale and drawdist
2025-01-01 05:11:31 +01:00
Alug 136d9143e7 we dont really need to check for precipthinkers in the precip thinkerlist
also makes precip handling in P_NetUnArchiveThinkers a little safer
2025-01-01 05:11:28 +01:00
Alug 4aad4887fd dont iterate through precip blockmap if there is no precip 2025-01-01 05:11:25 +01:00
Alug dfee1cc490 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-31 02:53:22 +01:00
Alug ffc7832ec7 attempt to optimize column drawers a little 2024-12-31 02:52:30 +01:00
Alug 3910e66905 dont try to chase after your spec mobj lel 2024-12-30 23:11:00 +01:00
Alug 6fcfb9cf36 readd this check lel 2024-12-30 22:21:38 +01:00
Alug 83d2ade699 seperate thinkerlist for precip
i sure hope i handled everything right lmao
2024-12-30 18:00:18 +01:00
Alug fef98e478d add extra driftgauge option before i forger about it again 2024-12-30 17:55:50 +01:00
Alug f7ba260717 just skip missing/broken fields in musiccredit handling
like vanilla kek
still will throw warnings but atleast will show stuff if theres anything left in the musicdef
2024-12-30 17:53:06 +01:00
Alug 82f9f2f73f delet all the hardware sound crap
psure it doesent even properly work at this point
2024-12-30 17:51:57 +01:00
Alug e649690f6a Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-30 17:34:50 +01:00
Alug 182500c2d2 fix potential Fix segfault when aborting HTTP download 2024-12-30 17:34:45 +01:00
Alug aca48d45b3 fix potential crash with perfstats
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2576
2024-12-30 17:34:40 +01:00
Alug 783682251f Merge branch 'freecamstuffs' into Saturn-Testing 2024-12-30 11:34:45 +01:00
Alug b2823c81e4 fix jitter when toggling freecam off 2024-12-30 11:34:40 +01:00
Alug 7465e1ae4b kill splitscreen director again 2024-12-30 11:34:10 +01:00
Alug 743d1a0e86 Merge branch 'freecamstuffs' into Saturn-Testing 2024-12-30 11:31:42 +01:00
Alug 761df3f2cf hide director control stuff for others than player 1 2024-12-30 11:30:53 +01:00
Alug 6f3443232e Merge branch 'Saturn-Next' into freecamstuffs 2024-12-30 11:30:46 +01:00
Alug 588dac343e dont disable this.... if its disabled kek 2024-12-30 11:24:23 +01:00
Alug aa222b6861 slight cleanup director 2024-12-30 11:10:41 +01:00
Alug 6d01ec4c55 dont need this anymore 2024-12-29 19:46:44 +01:00
Alug f72c64d7d1 fix some potential issues with viewinterp
now unpaused disabled interp on netlag
also fixes screencoord stuff not being interpolated during pause
2024-12-29 19:46:41 +01:00
Alug 92a3e974b0 fix driftgauge showing with freecam while ingame 2024-12-29 19:46:35 +01:00
Alug 7d6cce5881 readd cam cmd stuff
cause it may break the cam in replays or smth a
2024-12-29 19:46:33 +01:00
Alug 17f6f1cd4c use V_STEELMAP for white skincolours instead
cause white on white be weird
2024-12-29 18:43:54 +01:00
Alug 4b856fba2a z 2024-12-29 18:43:49 +01:00
Alug 3a8e4e065e draw gametype in tabrankings during replay playback
replays already show the mapname in there so
2024-12-29 18:43:41 +01:00
Alug 43f9bd5239 make highlight color in scoreboard and tab ranking player coloured
also make it appear in splitscreen
similar to hostmod things
2024-12-29 18:43:31 +01:00
Alug 6f5a0b9a3f also add playernum var to tabrankings drawer 2024-12-29 18:43:16 +01:00
Alug ecf55e64ae more smol refactoring 2024-12-29 18:43:08 +01:00
Alug cd566ac9c0 refactor intermission standings drawer
abstract the data stuff too
2024-12-29 18:42:56 +01:00
Alug b3323b7c2d change error msg 2024-12-29 17:45:28 +01:00
Alug 70e64d9471 reset demo recording in those places 2024-12-29 17:43:21 +01:00
Alug cbc3f8e917 add warning for non allocated demobuffer 2024-12-29 17:39:02 +01:00
Alug 55dfdc723f fix demo playback 2024-12-29 17:24:45 +01:00
Alug 6101ded74a allocate some extra buffer for demobuffer
incase this might overflow that we dont write to unvalid memory
thx indev <3
2024-12-29 16:59:10 +01:00
Alug 0d49bbfa7a Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-29 17:45:33 +01:00
Alug f6d83c17bd fix demo playback 2024-12-29 17:24:38 +01:00
Alug ac90a0973d fix wrong cam default controls 2024-12-29 16:51:42 +01:00
Alug 27d6447a83 fix wrong cam default controls 2024-12-29 16:51:18 +01:00
Alug f195c61200 Merge branch 'splitscreendirector' into Saturn-Testing 2024-12-29 16:48:17 +01:00
Alug 20044fa6a7 Merge branch 'freecamstuffs' into splitscreendirector 2024-12-29 16:47:25 +01:00
Alug 26480882c8 remove the remainder or demo.freecam 2024-12-29 16:43:34 +01:00
Alug b23020435f replace all this crap with either stplyrnum or R_GetViewNumber 2024-12-29 16:43:09 +01:00
Alug 267e2be69b fix offbyone issue 2024-12-29 16:42:33 +01:00
Alug b9428360c0 Merge branch 'Saturn-Next' into splitscreendirector 2024-12-29 16:16:59 +01:00
Alug 2112be8ef7 Merge branch 'Saturn-Next' into freecamstuffs 2024-12-29 16:16:49 +01:00
Alug e5ee978eb2 Merge branch 'Saturn-Next' into delaynetxcommand 2024-12-29 16:16:33 +01:00
Alug 55fd31894b Merge branch 'Saturn-Next' into checkposopti 2024-12-29 16:15:23 +01:00
Alug 189d9adef5 Merge branch 'Saturn-Next' into fixdupeacks 2024-12-29 16:15:00 +01:00
Alug 44288a5865 Merge branch 'unglobsavep' into Saturn-Next 2024-12-29 16:04:21 +01:00
Alug 66f89fb4ad oops 2024-12-29 16:03:56 +01:00
Alug eceb671ea8 add missing include 2024-12-29 16:02:05 +01:00
Alug a15615a229 add missing include 2024-12-29 16:01:35 +01:00
Alug 8e10bcc739 add a bunch of extra checks into demo stuff
buffer may be NULL in some cases
should fix dedis crashing when replay recording is disabled
2024-12-29 15:59:10 +01:00
Alug 22e65cd5e7 fixup conflicts 2024-12-29 15:58:43 +01:00
Alug 72383520cb Merge branch 'Saturn-Next' into unglobsavep 2024-12-29 15:51:25 +01:00
Alug 38ef55b869 add a mipmap check here ig 2024-12-29 15:41:28 +01:00
Alug 55c7dd860c fix offbyone issue 2024-12-29 15:39:39 +01:00
Alug ecefd1d3ee Merge branch 'splitscreendirector' into Saturn-Testing 2024-12-29 16:35:38 +01:00
Alug 0cdd0ca583 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-29 16:17:16 +01:00
Alug 31a0122cd1 add a bunch of extra checks into demo stuff
buffer may be NULL in some cases
should fix dedis crashing when replay recording is disabled
2024-12-29 15:43:04 +01:00
Alug 6777cd2a9c Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-29 15:42:58 +01:00
Alug 649373ff51 Merge branch 'freecamstuffs' into splitscreendirector 2024-12-29 06:41:40 +01:00
Alug ca09a5dd46 dont need to do this twice 2024-12-29 06:41:11 +01:00
Alug 11546cd906 fix centerview 2024-12-29 06:41:07 +01:00
Alug 4110130ca7 block freecam toggling when player is in spec 2024-12-29 06:41:04 +01:00
Alug 6b9900ad4e clean up cam stuff for good 2024-12-29 06:41:00 +01:00
Alug 97e6222176 make function to return button names
to use with new rebindable cam controls
2024-12-29 06:03:20 +01:00
Alug 3d39f50388 make function to return button names
to use with new rebindable cam controls
2024-12-29 06:03:10 +01:00
Alug eef56a7c82 make debugdirector show stuff for p1 atleast 2024-12-29 05:51:13 +01:00
Alug 8853666645 track views in directorinfo structs
should hopefully fix any potential remaining issues
2024-12-29 05:45:04 +01:00
Alug a379764076 fix director toggling + smol cleanup 2024-12-29 05:45:01 +01:00
Alug edd1cc6059 Merge branch 'freecamstuffs' into splitscreendirector 2024-12-29 05:44:53 +01:00
Alug f355b2269c toggle off freecam when f12ing 2024-12-29 05:42:31 +01:00
Alug 03280db377 missing inlucde 2024-12-28 18:52:57 +01:00
Alug 86aeff5547 cleanup K_DirectorIsAvailable 2024-12-28 18:25:23 +01:00
Alug b5b2062efa add K_DirectorIsAvailable 2024-12-28 18:25:05 +01:00
Alug b51731d675 cleanup director splitscreen stuff 2024-12-28 17:48:02 +01:00
Alug 229e8d9592 WIP splitscreen director lel 2024-12-28 17:47:58 +01:00
indev da9c19bba4 Update replayfreecam lua global to use camera.freecam for currently viewed player 2024-12-28 18:48:58 +03:00
Alug 3156851554 fix cam interp during pause again 2024-12-28 04:01:21 +01:00
Alug a19cb5f2bc fix speccam again 2024-12-28 04:01:18 +01:00
Alug 2639f94dff fix freecam not being steerable when not in spec
ugh this is godawful
its literally almost a complete copy of
2024-12-28 03:44:32 +01:00
Alug 2c769f8043 changable freecam speed 2024-12-28 01:46:20 +01:00
Alug 332f7db32f make freecam work in splitscreen
banish cameracmd shit
2024-12-28 01:46:17 +01:00
Alug 3381f6af3a set default controls for float and sink ig 2024-12-28 01:46:12 +01:00
Alug 45d33b951c add alternative cam float and sink buttons 2024-12-28 01:46:09 +01:00
Alug 1922b32799 add bindable freecam toggle 2024-12-28 01:46:06 +01:00
Alug 6bb72c363f fix freecam not being interpolated when ingame 2024-12-28 01:46:03 +01:00
Alug 378382f3ad use demo freecam for spec
its more versataile and lets you pass through walls and floors just like in replays
2024-12-28 01:45:59 +01:00
Alug 7e09493cf2 whoops this never did anything lol 2024-12-26 16:01:49 +01:00
Alug 5c6bd1a043 oops forgor 2024-12-26 15:38:43 +01:00
Alug dcdd5e8f2d Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-26 16:33:01 +01:00
Alug 126fce9119 1px 2024-12-26 01:08:12 +01:00
Alug a3b3f91f8d 1px 2024-12-26 01:08:01 +01:00
Alug 69568378ec Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-26 01:01:00 +01:00
Alug 0b5879ffb3 fix compile 2024-12-26 01:00:52 +01:00
Alug 0bd2c6220d drifgauge gfx using the extra 3 speedometer sticker
arsepain
+ smol cleanup colorhud
2024-12-26 01:00:27 +01:00
Alug a434ce2080 super smol optimizations 2024-12-26 00:57:19 +01:00
Alug 8776b36bb0 super smol optimizations 2024-12-26 00:56:50 +01:00
Alug 9bde946c55 add tweakmap support
https://git.do.srb2.org/KartKrew/RingRacers/-/commit/7fb44bdb0239a8012be73cb9ee384a9fdca9addb
2024-12-25 01:57:51 +01:00
Alug c74898b970 make those const 2024-12-23 18:09:53 +01:00
Alug f0f2314639 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-23 17:46:20 +01:00
Alug c8193380e7 make some cam stuff behave exactly like vanilla again
no clue if this changes anything at all, but cam stuff be causing so many issues id rather just have it behave like it used to
2024-12-23 17:45:59 +01:00
Alug e38580c9c2 dont remember removing this in s_sound 2024-12-23 17:45:54 +01:00
indev edf38cef33 If player has mobj, use it to assign localangle in G_FixCamera 2024-12-23 12:41:50 +03:00
Alug a700ec32fd fixeur comptime stuff (thx indev <3) 2024-12-23 00:37:51 +01:00
Alug 7dcd5f41ec use P_MobjWasRemoved for HWR_DrawSprite 2024-12-22 21:19:19 +01:00
Alug c46ff7daff use P_MobjWasRemoved for HWR_DrawSprite 2024-12-22 21:19:08 +01:00
Alug d2ca916043 settable mobj lightlevel from lua 2024-12-22 20:58:23 +01:00
Alug 09e901b31b readd mobj lightlevel field so i dont have to edit frameflags 2024-12-22 20:58:20 +01:00
Alug 01208a858d settable mobj lightlevel from lua 2024-12-22 20:58:02 +01:00
Alug c379db831c readd mobj lightlevel field so i dont have to edit frameflags 2024-12-22 20:57:56 +01:00
Alug d478a8a8b4 just skip missing/broken fields in musiccredit handling
like vanilla kek
still will throw warnings but atleast will show stuff if theres anything left in the musicdef
2024-12-22 19:59:53 +01:00
Alug 4418653edb Merge pull request #147 from Indev450/refactorogl
Refactor OpenGL library handling
2024-12-22 19:22:12 +01:00
Alug 1d9bcaa786 Merge branch 'Saturn-Next' into refactorogl 2024-12-22 19:21:27 +01:00
Alug 8bd943eb71 Merge remote-tracking branch 'origin/Saturn-Next' into directionallight 2024-12-22 18:57:38 +01:00
Alug 39535e9bf8 this stuff somehow wasnt merged 2024-12-22 18:52:27 +01:00
Alug db90142c4b Merge branch 'checkposopti' into Saturn-Testing 2024-12-22 18:45:53 +01:00
Alug 63bd3374be Merge branch 'optimobjz' into Saturn-Testing 2024-12-22 18:45:48 +01:00
Alug 7a232c8f5d fix compile 2024-12-22 18:39:04 +01:00
Alug b24c59ce55 fix compile 2024-12-22 18:38:57 +01:00
Alug 34f9dd9ea2 fix compile 2024-12-22 18:38:45 +01:00
Alug 0290c738e1 fix compile 2024-12-22 18:38:39 +01:00
Alug 0acb8e6a63 fix compile 2024-12-22 18:38:31 +01:00
Alug 27bfd0078c fix compile 2024-12-22 18:38:17 +01:00
Alug a98ab3d823 Merge branch 'Saturn-Next' into checkposopti 2024-12-22 18:25:10 +01:00
Alug bbf4de4f5e Revert "add P_CheckPositionShadow just for shadow mobjs"
This reverts commit 7edce19c9c.
2024-12-22 18:25:03 +01:00
Alug 4d3fba2bd0 Merge branch 'Saturn-Next' into optimobjz 2024-12-22 18:24:29 +01:00
Alug 83cc7015bf Revert "add shadows to faster slope z checking"
This reverts commit 4aaa2c6fed.
2024-12-22 18:24:26 +01:00
Alug f20297b5dd Merge branch 'Saturn-Next' into delaynetxcommand 2024-12-22 18:24:17 +01:00
Alug b4521643b2 Merge branch 'Saturn-Next' into fixdupeacks 2024-12-22 18:24:08 +01:00
Alug dfe151ccb1 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-22 18:23:57 +01:00
Alug 67a75730d0 Revert "massive cleanup unused code"
This reverts commit e35612a6f6.
2024-12-22 18:23:38 +01:00
Alug d12369f6f4 add some () 2024-12-22 01:47:14 +01:00
Alug 4a7ce87ac2 do the same for R_ProjectPrecipitationSprite 2024-12-22 01:44:33 +01:00
Alug d8b36ef0da dont put potential null mobj into interpolation stuff 2024-12-22 01:42:51 +01:00
Alug 1341ec80bf dont dereference potential null mobjs in software projectsprite 2024-12-22 01:40:52 +01:00
Alug 9882291828 compiler pls shut up 2024-12-22 01:32:05 +01:00
Alug aa4fa1e42e use P_MobjWasRemoved and null check for thing subsector in projectsprite 2024-12-22 01:32:01 +01:00
Alug 8a641d3e37 fix fade to menu again oops 2024-12-20 18:23:27 +01:00
Alug 317f5f8d48 fix no fbo compile 2024-12-20 18:23:25 +01:00
Alug 98f136e747 fix fade to menu again oops 2024-12-20 17:20:16 +01:00
Alug 94792fe571 fix no fbo compile 2024-12-20 17:19:12 +01:00
Alug 92c0ddd068 always reset those just in case 2024-12-20 11:35:30 +01:00
Alug 6a43f0a09d Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-20 11:34:30 +01:00
Alug 4f037896db oops this is lugstuff only lel 2024-12-20 11:27:49 +01:00
Alug 494a87feea idk just set to false here too 2024-12-20 11:19:18 +01:00
Alug 4a3af6bc8a whoops 2024-12-20 03:17:20 +01:00
Alug 0c7851bd26 try to clean up downsampling and resolution checking stuff
- global function that updates variables with current display resolution
-smol boolean function that quickly checks if the game res matches the desktop res
- i_downsample has been simplyfied a bit
2024-12-20 03:13:17 +01:00
Alug 5b46ae2eb9 better nvidia xwayland workaround handling
what in the world was i thinking????
2024-12-20 03:12:57 +01:00
Alug 2034eedbe4 add another early return 2024-12-20 01:21:09 +01:00
Alug fde4f64b83 simplify this crap and make compiler happy 2024-12-20 00:59:46 +01:00
Alug 404927c53c no 2024-12-20 00:59:22 +01:00
Alug e0796b0cf1 just query this once 2024-12-20 00:59:18 +01:00
Alug 8df8749a9c return false here 2024-12-20 00:58:41 +01:00
Alug 1c2fb14f45 makes no sense without screen tex 2024-12-20 00:58:35 +01:00
Alug 4a2354ab26 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-19 22:42:41 +01:00
Alug 82f70ff75e fix compile due to missing am_map.h include 2024-12-19 22:42:22 +01:00
Alug 46b2d5fbcd fix compile without USE_FBO_OGL 2024-12-19 22:40:28 +01:00
Alug be8cd85bfe Merge branch 'delaynetxcommand' into Saturn-Testing 2024-12-19 20:56:42 +01:00
Alug 7c4eefe8ee Merge branch 'fixdupeacks' into Saturn-Testing 2024-12-19 20:56:37 +01:00
Alug 19d6e30889 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-19 20:56:35 +01:00
Alug 23b2e35dbd use slightly diff maths for skydomevertex calc
from DSDA-Doom
maybe fixes some issues with certain skydomes?
2024-12-19 20:56:25 +01:00
Alug a576ddf0e4 oops 2024-12-19 20:43:05 +01:00
Alug df63b3ece0 add "listmapthings" and "listunusedsprites" commands
the former also shows duplicated mapthings
2024-12-19 20:34:10 +01:00
Alug 3174d8fb1c Fix segfault when sending excessively large netcmds
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2568/diffs?commit_id=457b761d9301b1904c414a8e8ba908f74b9ab959
2024-12-18 19:40:36 +01:00
Alug bed0e65548 potential fix for clients locking up due to never receiving acks back
apparently, if the client doesent receive an ack back which may happen due to duplicate packets/bad net conditions, it may spam resend the packet until its netxcmd buffer is full and locks up
2024-12-16 22:01:32 +01:00
Alug 1357978596 init textcmdbuf to NULL
just in case
2024-12-16 21:58:51 +01:00
Alug c5765c20bc delay NetXCmd´s instead of dropping them when the buffer is full
credits and many thanks to Hanicef!
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2568
2024-12-16 21:58:48 +01:00
Alug 174af34115 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2024-12-16 17:09:40 +01:00
Alug 52cd614613 prevent potential crash if viewmobj was removed 2024-12-16 16:38:03 +01:00
Alug 5c3711bcc8 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-16 15:49:01 +01:00
Alug db04046cb3 smol fix for gamma stuff
-dont apply gamma adjust when gamma is on default value
-fix saturation not being applied on console on OpenGL without paletterendering
2024-12-16 15:48:33 +01:00
Alug 5ec48f72e0 fix changing gamma absolutely trashing performance
not quite sure why it made stuff die so much but uhhh
instead i just check in the cube initialistion function instead and only let it build when needed to not change how the game looks with raised gamma values
2024-12-15 22:14:57 +01:00
Alug 31aef1d200 fix changing gamma absolutely trashing performance
not quite sure why it made stuff die so much but uhhh
instead i just check in the cube initialistion function instead and only let it build when needed to not change how the game looks with raised gamma values
2024-12-15 22:14:05 +01:00
Alug 4aaa2c6fed add shadows to faster slope z checking 2024-12-14 22:50:30 +01:00
Alug 5d3c84327d Merge branch 'Saturn-Next' into optimobjz 2024-12-14 22:50:24 +01:00
Alug 909307f5ce only check if polyobjcst are on the map 2024-12-14 22:50:11 +01:00
Alug 7c7582f09b forgor about cameracheckposition 2024-12-14 22:50:07 +01:00
Alug 6f6dff4897 only check for polyobjects in the blockmap if there even are polyobjects
this saves the trouble of iterating through the blockmap every single time P_CheckPosition is called if there are no polyobjects present on the map
2024-12-14 22:50:04 +01:00
Alug 8611e70ba3 smol calc optimization P_Checkposition 2024-12-14 22:50:00 +01:00
Alug 7edce19c9c add P_CheckPositionShadow just for shadow mobjs
its basically just R_GetShadowZ from the render based shadows from srb2 lmao
hope this is synchsafe
2024-12-14 22:49:57 +01:00
Alug de52b1663d Merge branch 'Saturn-Next' into checkposopti 2024-12-14 22:49:50 +01:00
Alug eb1feba304 only check if polyobjcst are on the map 2024-12-14 22:49:32 +01:00
Alug 9df6368558 forgor about cameracheckposition 2024-12-14 22:49:25 +01:00
Alug 0a6092b738 only check for polyobjects in the blockmap if there even are polyobjects
this saves the trouble of iterating through the blockmap every single time P_CheckPosition is called if there are no polyobjects present on the map
2024-12-14 22:49:21 +01:00
Alug 6b852822a5 smol calc optimization P_Checkposition 2024-12-14 22:49:17 +01:00
Alug b4cde98526 add P_CheckPositionShadow just for shadow mobjs
its basically just R_GetShadowZ from the render based shadows from srb2 lmao
hope this is synchsafe
2024-12-14 22:49:13 +01:00
Alug 5f0f1966a8 add shadows to faster slope z checking 2024-12-14 22:49:08 +01:00
Alug dbadee987c delet all the hardware sound crap
psure it doesent even properly work at this point
2024-12-14 22:49:03 +01:00
Alug 995943d84d Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-14 22:48:24 +01:00
Alug 7a1c6bd9e4 slight cleanup K_GetScreenCoords and related functions
mostly just reducing scope and adding const clarifyier
also use mobjwasremoved checks everywhere instead of just simple null checks for some safety
2024-12-14 21:20:03 +01:00
Alug d8fe3920b1 fix papersprite lightlevels again kek + remove shit that does nothing 2024-12-14 17:14:20 +01:00
Alug 75af036fcf seems like you CANNOT apply dispoffset to papersprites
well then
2024-12-14 16:53:34 +01:00
Alug accc9890df fix inverted papersprite roll
oopsie
2024-12-14 16:53:31 +01:00
Alug a920556feb fix papersprite directional light
uhhh idk??
also passes papersprite bool directly instead of rechecking every frame for it
2024-12-14 16:53:23 +01:00
Alug 351cb4a1ac Merge branch 'Saturn-Next' into directionallight 2024-12-14 16:53:20 +01:00
Alug 764a5f3e0a Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2024-12-12 23:15:12 +01:00
indev cb97973b1c Merge pull request #150 from utkumaden/Saturn
Fixed gr_glinfo crash when there are way too many extensions present.
2024-12-12 19:21:15 +03:00
themixedupstuff 331f09cdd9 Fixed gr_glinfo crash when there are way too many extensions present. 2024-12-12 19:17:04 +03:00
indev 939084d57b Avoid overflowing CONS_Printf's buffer by using vsnprintf 2024-12-12 18:47:35 +03:00
indev 1cbfc71fc6 Revert "Change gl_extension to use glGetStringi instead of glGetString"
This reverts commit 7b550200f0.

Not supported on opengl version before 3.0 unfortunately
2024-12-12 18:03:16 +03:00
indev 7b550200f0 Change gl_extension to use glGetStringi instead of glGetString 2024-12-12 17:52:36 +03:00
Alug d41a2adce7 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Testing 2024-12-12 14:40:21 +01:00
indev 665a11fa2b Merge branch 'Saturn-Next' into refactorogl 2024-12-12 14:38:59 +03:00
indev 1a49b161cc Merge pull request #146 from utkumaden/Saturn
Add gr_glinfo.
2024-12-12 14:34:32 +03:00
Alug 521b53dc09 maybe fix fade stuff idk 2024-12-12 02:32:19 +01:00
Alug 2c94ae8bb4 seperate thinkerlist for precip
i sure hope i handled everything right lmao
2024-12-12 02:32:07 +01:00
Alug ebbedc558d Merge branch 'refactorogl' into Saturn-Testing 2024-12-12 02:32:01 +01:00
Alug 0065c3d610 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-12 02:31:52 +01:00
Alug 99e4870a52 check for the flag first 2024-12-12 02:31:44 +01:00
Alug 13ad27bc90 remove some precip code dupe 2024-12-12 00:30:54 +01:00
Alug 7ae361cb7c better cv_lessprecip handling
idk what i was thinking lmao
2024-12-12 00:11:50 +01:00
Alug 0e1bfbb0b5 clean up hw_cache stuff + fix accidental wrong cast 2024-12-11 23:24:00 +01:00
Alug 3dec352245 smol cleanup GL_SetBlend
use early return since i likeit more
2024-12-11 22:14:20 +01:00
Alug 8e273a1f19 GL_UpdateTexture can be static 2024-12-11 22:14:17 +01:00
Alug 1ab20814e9 simplify GL_SetPalette
can just copy the whole struct
2024-12-11 14:39:38 +01:00
Alug 0325ba4c0a simplify GL_SetPalette
can just copy the whole struct
2024-12-11 14:39:24 +01:00
Alug b348bff7a8 Merge branch 'refactorogl' into Saturn-Testing 2024-12-11 14:23:57 +01:00
Alug 37649a0d3c more cleanup GL_UpdateTexture
also some optimizations
2024-12-11 14:23:51 +01:00
Alug f3d1bf1106 clean up GL_UpdateTexture
use switches and reduce code dupe
2024-12-11 14:23:48 +01:00
Alug 93311c628e Merge branch 'Saturn-Next' into refactorogl 2024-12-11 14:23:42 +01:00
Alug b5e43ed73b Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-11 03:11:38 +01:00
Alug f8dfc954a0 test "or" 2024-12-11 03:11:33 +01:00
Alug 7ac2ba90b1 cast this 2024-12-11 02:03:14 +01:00
Alug f869393da4 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-11 02:03:08 +01:00
Alug dbe5f8a4ba clamp splitsprite heights aswell 2024-12-11 01:26:04 +01:00
Alug a05c38b1fe those should better be clamped oops 2024-12-11 01:25:55 +01:00
Alug 91b6143f15 clean up this stuff; make splitwall behave more like vanilla
changes some splitwall issues slightly but gives bit better performance in some cases
2024-12-11 01:25:52 +01:00
Alug 0eaedd4b5e "extra safety" 2024-12-11 01:25:42 +01:00
Alug 727a31fdb5 one line those 2024-12-10 21:18:20 +01:00
Alug 3b64263dc6 Unconditionally interpolate view
even if it may NOT change
but i get the feeling it may cause some issues
2024-12-10 21:18:17 +01:00
Alug 83b6a63f13 dont pass fwrapv to compiler flags
this technically changes behavior of some things, even if it MAY fix some undefined behaviour
2024-12-10 21:18:14 +01:00
Alug 6ccece4603 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-09 23:20:13 +01:00
Alug f6f6600118 interp.subsector is unused
so dont need to assign it nor call pointinsubsector for nothing
2024-12-09 23:20:07 +01:00
themixedupstuff 04c0bf2f17 Fix compiler warning on implicit GLuint* to GLint* conversion. 2024-12-09 17:30:04 +03:00
Alug 4da9c5ac07 "P_CheckSightFast" for lua
should be faster than normal P_CheckSight
only to be used for things like nametags etc so nothing gameplaywise as it will desynch
2024-12-09 10:53:11 +01:00
Alug 97cae4de59 smol things 2024-12-09 10:53:08 +01:00
Alug 9d1bef9ab9 i love menus 2024-12-09 10:19:32 +01:00
Alug 4bd2ba4d13 show commit on main menu for now
dont feel like always changing version strings for testing builds so thisll do
2024-12-09 10:19:14 +01:00
Alug ab0a3cde78 i love menus 2024-12-09 10:18:27 +01:00
Alug 72f9e4485e change testing versionstring 2024-12-09 10:17:58 +01:00
Alug 87c536b698 this does not work on windoze builds
rev-parse seems to do the job tho?
2024-12-09 10:16:56 +01:00
Alug ac03bad282 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-09 10:53:17 +01:00
Alug 9efdcc1f34 HWDEEZ 2024-12-08 19:07:00 +01:00
Alug f26a965ea9 Merge branch 'directionallight' into Saturn-Testing 2024-12-08 19:05:56 +01:00
Alug 5c7bd954a2 fix up! 2024-12-08 19:05:13 +01:00
Alug 184cb8ba19 Merge remote-tracking branch 'origin/jittest' into Saturn-Testing 2024-12-08 18:57:25 +01:00
Alug 1d324a2d94 Merge branch 'optimobjz' into Saturn-Testing 2024-12-08 18:57:21 +01:00
Alug eeeb3440c2 Merge branch 'refactorogl' into Saturn-Testing 2024-12-08 18:57:16 +01:00
Alug a1c965584e Merge branch 'checkposopti' into Saturn-Testing 2024-12-08 18:57:12 +01:00
Alug e5b4905a12 Merge branch 'Saturn-Next' into Saturn-Testing 2024-12-08 18:57:04 +01:00
Alug f64ba96962 Merge remote-tracking branch 'ghg/ljtest' into jittest 2024-12-08 18:53:30 +01:00
Alug 0eec77d8b3 a 2024-12-08 18:43:17 +01:00
Alug 7efbe2213a port over bluajit stuff 2024-12-08 18:41:02 +01:00
Alug ffa25d1690 actually use the flags lol 2024-12-08 16:02:24 +01:00
Alug 74088c1d26 use loop instead of memcpy for setpalette
idk last time this died with models for some reason kek
2024-12-08 15:43:46 +01:00
Alug b03e74c366 rename to "hw_gl" 2024-12-08 15:39:52 +01:00
Alug cd9ee7d139 smol cleanup 2024-12-08 15:31:41 +01:00
Alug 3080f2953d optimized checksight for nametags and camera
idk should this be exposed to lua too?
2024-12-08 15:26:40 +01:00
Alug f7c7dae3a5 smol cleanup p_sight 2024-12-08 15:14:04 +01:00
Alug 3f16f42adf forgor 2024-12-08 05:03:36 +01:00
Alug feeb2d0f1a use early return
no need to check for all this crap if we can use it anyways
2024-12-08 04:39:12 +01:00
Alug 4c680808c1 dont always call R_PointInSubsector if thing has not moved
R_PointInSubsector is quite expensive
needs alot of testing
2024-12-08 04:22:03 +01:00
Alug 13a5909c3f oop 2024-12-08 04:13:16 +01:00
Alug 40be4d25a5 menu oopsie 2024-12-08 04:07:05 +01:00
Alug d84f887be8 clear maplight on toggling
so you only have to wait until nextmap for effect to do smth instead of game restart
2024-12-08 04:07:03 +01:00
Alug 009d851b58 this is needed 2024-12-08 03:36:48 +01:00
Alug 6d5e6add9b Optimize Z Postion checks for collisionless mobjs
a bit of speedup
hopefully should be synchsafe
2024-12-08 03:35:42 +01:00
Alug 62f7915e97 Merge branch 'Saturn-Next' into optimobjz 2024-12-08 03:34:29 +01:00
Alug 7b2e763d07 inline those two
smol speedup
2024-12-08 03:34:19 +01:00
Alug bc29d77aff menu entry 2024-12-08 03:31:53 +01:00
Alug 8db2e646db oop 2024-12-08 03:28:44 +01:00
Alug 3b2e207b6b make random directionallight toggable 2024-12-08 03:27:45 +01:00
Alug f061d66a16 conflict fix 2024-12-08 03:24:58 +01:00
Alug 8c295e8d5f port rr´s directional light 2024-12-08 03:22:34 +01:00
Alug c1b771fdc8 fix make files 2024-12-08 03:16:13 +01:00
Alug e5b12ece35 change this 2024-12-08 03:15:14 +01:00
Alug 43c99f8851 delet this 2024-12-08 03:13:50 +01:00
Alug 7304988071 fix conflitc 2024-12-08 03:12:48 +01:00
Alug d0b0a7490a Merge branch 'Saturn-Next' into refactorogl 2024-12-08 03:06:26 +01:00
Alug de4bcec782 make those less chaotic 2024-12-08 01:34:16 +01:00
Alug 0e843c2a96 stuff 2024-12-08 01:33:53 +01:00
Alug 9abd34baa3 proper macros 2024-12-08 01:33:44 +01:00
Alug 4fca31049f no need to set all that stuff manually 2024-12-07 12:52:09 +01:00
Alug 13f6b62dc0 port updated skydome code from srb2
seems to actually fix some visual issues on certain maps with it
2024-12-07 12:38:53 +01:00
Alug 3a5b282b9b try less maths for projectionmatrix
from dsdadoom again lul
2024-12-07 12:33:13 +01:00
themixedupstuff d763456655 Add gr_glinfo. 2024-12-05 22:38:47 +03:00
themixedupstuff b23fa084f1 Add GL_VENDOR string to the list of global GL variables. 2024-12-05 21:54:31 +03:00
Alug 216acf083a bruh 2024-12-05 14:30:19 +01:00
Alug 686a9f7237 use long M_PI to fix some render issues 2024-12-05 14:30:16 +01:00
Alug 5a206822c5 little extra safety 2024-12-05 08:10:13 +01:00
Alug 9805b03533 reduce the scope of those
only this function needs those
2024-12-05 08:08:00 +01:00
Alug d519f9cf06 try fix keepmusic occasionally not working
idk but sometimes DoReborn broke it?
also this ensures keepmusic and skipintromus flags always get reset
2024-12-05 07:58:20 +01:00
Alug 6265d0e38e why does this need a variable?
it just gets assigned kartstuff[k_aizdriftstrat] anyways?
2024-12-04 14:23:06 +01:00
Alug 55d9d64910 clean up this mess 2024-12-04 14:23:03 +01:00
Alug e2a651e553 make those const 2024-12-04 14:23:00 +01:00
Alug e4343f0935 only ever call pointtoangle for sprites that really need it 2024-12-04 01:39:17 +01:00
Alug 68090a55e1 change this a little 2024-12-03 21:50:45 +01:00
Alug 00bdd684ed 1463 lmao change this to be readable
also raise to 40 secs
2024-12-03 20:52:02 +01:00
Alug f4e498e559 this may be used unitialised lul 2024-12-03 20:40:05 +01:00
Alug 39c33b1f59 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2024-12-03 20:39:54 +01:00
Alug 55acbb208e try to make demo data handling a bit safer
- Use Z_Malloc to allocate demobuffer
- Use Z_Free to free demobuffer
- Make functions for freeing and resseting demobuffer
- Always reset demobuffer when not saving
2024-12-03 20:39:46 +01:00
indev 208f96535e Add MENUCAPS to some menu options 2024-12-03 22:06:35 +03:00
Alug 64bda53a78 Merge pull request #144 from Indev450/mobjcache2
Cache and reuse removed mobjs when spawning mobjs - Take 2
2024-12-02 21:31:25 +01:00
Alug e016777331 Merge pull request #145 from Indev450/hooklibrefactor
Lua Hooklib refactor
2024-12-02 21:31:16 +01:00
Alug 508cab4a0d Merge pull request #142 from Indev450/fastpoinonside
Add R_PointOnSideFast and R_PointInSubsectorFast and use it to optimize some non synch critical things
2024-12-02 21:13:07 +01:00
Alug b779be3574 Merge branch 'Saturn-Next' into hooklibrefactor 2024-12-02 21:12:16 +01:00
Alug fddcebc2d2 Merge branch 'fastpoinonside' into mobjcache2 2024-12-02 21:11:18 +01:00
Alug 91c5dc3c19 Merge branch 'Saturn-Next' into fastpoinonside 2024-12-02 21:11:10 +01:00
Alug 9401eb1591 oops revert this just in case 2024-12-02 21:09:58 +01:00
Alug 521bb88cda gah 2024-12-02 20:58:01 +01:00
Alug c1765258b2 quickncasehash 2024-12-02 20:57:08 +01:00
Alug 6afcb06e08 forgor
- refactored musicdef handling
- other things
2024-12-02 20:56:21 +01:00
Alug 1ae5bb9d27 lugstuff merge
- Completely refactor player camera handling
- Refactor ALOT of gamepad code
- Refactor local cmds
- Refactor automap and add minimap generator ("minigen" command)
- Remove a bunch of unused netcode
- Remove ALOT of unused gametype code
- Remove alot of unused bot code
- Optimize some sectorspecial code slightly
- Remove a bunch of nights mode related stuff that was unused
- Bunch of smaller optimizations and code improvements
2024-12-02 20:49:53 +01:00
Alug 252cd5cde5 better fix for netgame join hoop crash
this actually works and makes em animate
apparently somehow on netjoin some hprev entries get mangled but are not null?
no clue why that happens since hoops arent even netsynched only their "spawnpoint" is
2024-12-01 22:14:24 +01:00
Alug 12558740a4 better fix for G_FixCamera
completely forgor in kart and srb2.1 cmd.angleturn needs to be bitshifted to accomidate localangle
using it again is better, since player mobj angle is not always suitable for localangle and may slightly mismatch where a player is steering
2024-12-01 10:29:06 +01:00
Alug e1fbe8d657 seems like player not always have mobjs
titledemo moment
2024-12-01 10:18:18 +01:00
Alug b29a3ecfba this only ever applies to ogl
no need in software lol
2024-11-30 23:39:18 +01:00
Alug bd3a5ac284 give those better names 2024-11-30 23:23:05 +01:00
Alug 7de8b2d881 save one R_PointToAngle call
very smol optimisation lul
2024-11-30 22:31:45 +01:00
Alug 3139dff6ba missed this 2024-11-30 22:04:56 +01:00
Alug c4211045f2 oops this gets directly called in one instance
also why do we keep checking for null mobj when P_MobjWasRemoved checks that anyways?
2024-11-30 21:59:56 +01:00
Alug 6633dfe1e2 smol cleanup 2024-11-30 21:54:55 +01:00
Alug 9e2a48cae1 whoops 2024-11-30 21:54:52 +01:00
Alug 43f8a0213a sloperoll already has "off" setting, delet spriteroll cvar since redundant 2024-11-30 21:54:48 +01:00
Alug 975978ca9c this is null anyways if disabled 2024-11-30 21:54:45 +01:00
Alug dad630f3eb delet this 2024-11-30 20:29:08 +01:00
Alug 11f8b974df forgor sliptide roll 2024-11-30 20:28:26 +01:00
Alug 00773a0c10 okay? shut up compiler 2024-11-30 20:09:12 +01:00
Alug 6f6066906e optimize sprite rotation / sprite drawing a bit
- make software and ogl use same variable names
- let papersprites also roll in ogl not just software
- throw pitchnroll calc into a function to reduce code dupe
- save some calcs when having sliptide roll disabled
- fix software not calculating camang when just player roll is enabled (did that ever work right before? oops)
- determine early if the sprite is supposed to rotate, and only if it really does, run the rotation stuff
2024-11-30 20:05:15 +01:00
Alug 7730b69ef4 delete A_RollAngle things
they cant be used, since theyre not synchsafe
and nothing uses those anyways
2024-11-30 20:05:13 +01:00
Alug e3084cc28e allow demo play commands while watching a demo again 2024-11-29 23:25:58 +01:00
Alug b784fc58d0 loading not sending
just to clarify
2024-11-29 22:25:13 +01:00
Alug 8baa972bb2 this is also redundant 2024-11-29 13:15:59 +01:00
Alug 3b2251017c use continue instead of huge if block 2024-11-29 12:14:28 +01:00
Alug f0e7dace72 Merge branch 'Saturn-Next' into mobjcache2 2024-11-29 11:34:03 +01:00
Alug 4a837d3339 Fix buffer overrun with players with no associated node
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/810/diffs?commit_id=af9164f336a65634f6908e677b47773d88f583af
2024-11-29 10:41:00 +01:00
Alug a2aa43e7fc dont think we need to reset anything here
kick cmd gets send out which should clear stuff in theory
2024-11-29 10:40:09 +01:00
Alug 3c0899263f those are redundant 2024-11-29 10:14:47 +01:00
Alug 91bb601ecb why? 2024-11-29 10:14:43 +01:00
Alug 1bd0c5d9bf those dont need to be inlined tbh 2024-11-29 09:37:13 +01:00
Alug 8b76426825 remove dupes 2024-11-29 09:37:10 +01:00
Alug 85464921ba eh this looks better 2024-11-29 09:37:07 +01:00
indev 9b6034853f Simplify consistency check a bit 2024-11-28 22:24:51 +03:00
indev 0ab732c9b2 Only check nodes that are in game in SV_ResendingSavegameToAnyone 2024-11-28 22:03:29 +03:00
Alug 8662648ef5 init polyobject thinker->references to 0
otherwise they wont get removed alot of the time
2024-11-27 23:00:32 +01:00
Alug 51808b8ced init polyobject thinker->references to 0
otherwise they wont get removed alot of the time
2024-11-27 23:00:16 +01:00
indev 2a7e442544 Use textinput_t for addon search 2024-11-28 00:54:26 +03:00
Alug dbdd5b8b6e only apply palrender postprocess shader once 2024-11-27 22:34:48 +01:00
Alug b8483376c4 dont draw final screen texture twice if you use native res
no need to
saves some performance
2024-11-27 22:29:49 +01:00
Alug 70105ccefc make own screentex for vhs effect
idk if its really needed tbh, but also doesent hurt
2024-11-27 17:12:25 +01:00
Alug 3a9082a694 memset screentex to 0 in FlushScreenTextures 2024-11-27 17:10:56 +01:00
Alug 82c18be717 why do replay play commands only have netgame check???????
bad things will happen if theyre played ingame regardless of netgame or not
2024-11-27 00:36:29 +01:00
Alug 0d39c2a0f6 we dont even need to check this
this doesent do anything with papersprites so dont even call it kek
2024-11-26 22:30:38 +01:00
Alug 4240af23cf Merge remote-tracking branch 'origin/cleanspriteclip' into Saturn-Next 2024-11-26 22:25:00 +01:00
Alug 80697046d5 clean up spriteclip fix + fix papersprites being affected by it
its now its own function HWR_ApplyDispoffset
papersprites are now also unaffected by it, which caused some minor visual issues before (ex zfighting signposts)
also just check for papersprite once and put it into a bool so we dont have to recheck sprite frames and flags 10 times
2024-11-26 20:31:20 +01:00
Alug 765dd72b38 Merge branch 'Saturn-Next' into fastpoinonside 2024-11-26 19:31:59 +01:00
Alug 403b60240f check for titlescreen music 2024-11-26 19:25:59 +01:00
Alug f973e6cd72 init polyobj thinker cachable bool
otherwise shit will die lol
2024-11-26 19:18:38 +01:00
Alug 5aff1acea8 mobjcache with explicit "true" check
just in case smth throws a garbo value and is not actually a mobj thinker
2024-11-26 19:18:34 +01:00
Alug 9e07ca0007 make hud hooks clean up after themselves 2024-11-22 16:04:16 +01:00
Alug df97bef4b5 Refactor HUD hooks too 2024-11-22 00:40:05 +01:00
indev b402738428 Fix mobj hooks called for mobj type 0 being interpreted as regular hooks 2024-11-22 01:31:02 +03:00
Alug 2de9a6bb94 forgor to remove those 2024-11-21 22:08:50 +01:00
Alug fb0c88cf55 Fix -Warray-bounds warning in lua_hooklib.c 2024-11-21 20:34:09 +01:00
Alug 1f6096e3ff fix pre and post thinkframe perfstats pages 2024-11-21 20:34:06 +01:00
Alug a4e6b5d177 Fix HurtMsg inflictor mobj type discriminator
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1903
2024-11-21 20:34:03 +01:00
Alug 4477f5ab93 Fix MusicChange hook crashing when called 2024-11-21 20:34:01 +01:00
Alug 11992d2e08 MORE MACROS 2024-11-21 20:33:58 +01:00
Alug 802979b81d Refactor hook ref allocation 2024-11-21 20:33:55 +01:00
Alug 06d0f5b95b Automatically count hook values 2024-11-21 20:33:52 +01:00
Alug da06c84aa4 we dont have key event hooks 2024-11-21 20:33:49 +01:00
Alug ecae607b59 this is unused for now 2024-11-21 20:33:46 +01:00
Alug f26717954e change those to fit rest of style 2024-11-21 20:33:44 +01:00
Alug a4080980ec make intermissionthinker use LUA_HookVoid
comment out hookbool since unused
2024-11-21 20:33:41 +01:00
indev 3db21bf778 Fix warning regarding MusicChange hook 2024-11-21 20:33:38 +01:00
indev 66518ced75 Add Should- and Player- Spin/Explode/Squish, and ServerJoin hooks into new hook system 2024-11-21 20:33:36 +01:00
Alug 5598526f52 delet serverjoin stuff i forgor and add old should spin stuff 2024-11-21 20:33:32 +01:00
Alug 14ec6e0674 serverjoin hook 2024-11-21 20:33:29 +01:00
Alug 549112822a port srb2 hooklib refactor (WIP)
lol lmao
2024-11-21 20:33:06 +01:00
indev e1cb858d9a Players that get 'NO CONTEST' can save replays too now 2024-11-21 22:02:25 +03:00
Alug 1659c2e753 try to make shadows not so offset on slopes with rotation enabled
lmaos
2024-11-21 02:11:51 +01:00
Alug e2222f66a9 those should be SHORT i think? 2024-11-21 02:11:48 +01:00
Alug 8a15b5e640 last attempt at fixing those things 2024-11-20 23:44:35 +01:00
Alug f499b11113 add R_PointInSubsectorFast for non critical gameplay stuff like sounds and camera
and some parts of rendering
2024-11-20 21:27:29 +01:00
Alug bec632800d use it for R_IsPointInSubsector
this is fine since R_IsPointInSubsector is only used for precip spawn unless you disable noclipcam lol
2024-11-20 21:26:18 +01:00
Alug a14c2f59b8 rename to R_PointOnSideFast 2024-11-20 21:25:18 +01:00
Alug e66d215dd3 Fix integer overflows on very large numbers 2024-11-20 21:24:16 +01:00
Alug 809ae20558 use highly optmized (but slightly inaccurate) version of R_PointOnSide for rendering 2024-11-20 21:24:04 +01:00
Alug 7b26ecb5f5 fixed float to integer conversion problems
from dsda doom
should hopefully make this behave the same everywhere
2024-11-19 22:10:08 +01:00
Alug 0c2ccc56cd inline _GetZAt stuff
those are very small but frequently used, so cant hurt
2024-11-17 21:42:20 +01:00
Alug 525681b5a5 Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2024-11-17 21:41:33 +01:00
Alug c9a3dfcac9 reset pingtable in SV_ResetServer
and use some memsets cause they look cooler
also use ClearAdminPlayers simply to make this consistent with the other stuff that resets adminplayers
2024-11-17 21:41:25 +01:00
Alug a05aab1c7b Merge pull request #141 from Indev450/interpfixes
Some interpolation related fixes
2024-11-17 21:25:42 +01:00
Alug 7dfc638305 make replay/time attack menu support lowercase if toggled, also levelselect addon names too 2024-11-17 14:41:49 +01:00
Alug 3585969285 why is that declared here?? 2024-11-17 13:30:37 +01:00
Alug 3361ebe3c5 make menucaps stuff global macro and also apply to downloader text 2024-11-17 13:03:32 +01:00
Alug ebfd7f3e4e try make this look less like crap lol 2024-11-17 13:03:18 +01:00
Alug be49bd167b dont do this for papersprites
fickle...
2024-11-15 19:59:54 +01:00
Alug 13e9e41890 Merge remote-tracking branch 'origin/refactorcamstuff' into Saturn-Testing 2024-11-15 19:55:44 +01:00
Alug e6eec622c8 Merge remote-tracking branch 'origin/interpfixes' into Saturn-Testing 2024-11-15 19:55:35 +01:00
Alug 501b8b7bf5 try recursion limit for _RenderBSPNode
its 112 seems like the best compromise, hope it doesent break maps i didnt test visually or smth
2024-11-15 19:55:23 +01:00
Alug 99d78d62fb gu 2024-11-15 19:54:40 +01:00
Alug 1d5758f5d2 inline those 2024-11-15 19:54:24 +01:00
Alug fad1916259 psure it should be like this? 2024-11-15 19:54:20 +01:00
Alug 1bff103e53 use memset here too 2024-11-15 19:54:13 +01:00
Alug 68013b96d6 use memsets here and clear pingdata too 2024-11-15 19:54:10 +01:00
Alug 0c687539fb Merge branch 'Saturn-Next' into Saturn-Testing 2024-11-15 19:54:02 +01:00
GenericHeroGuy 0bf0441f49 Unify I/O library modifications 2024-11-15 15:54:07 +01:00
GenericHeroGuy 0c66ac97e8 Disable bytecode (1930cc9) 2024-11-15 14:18:56 +01:00
GenericHeroGuy 8c261dba73 Fix building with NOBLUAJIT 2024-11-15 00:24:19 +01:00
GenericHeroGuy 6e3b6cb0c1 Check division/modulo by zero (a74a4eb) 2024-11-15 00:00:51 +01:00
GenericHeroGuy 11155cc609 Standard library wipeout (1d1b7ec) 2024-11-13 17:15:08 +01:00
Alug e2c8a773be prevent some palrender startup crashes
thx srb2 apparently this can be null during init so add some extra safety
2024-11-12 16:23:08 +01:00
Alug 6816c6dd19 add some paranthesis here 2024-11-12 15:44:29 +01:00
Alug b9e26a7e2f Merge branch 'Saturn-Next' into interpfixes 2024-11-12 15:44:16 +01:00
GenericHeroGuy a5baa052e2 Fix building on Windows (hopefully) 2024-11-12 00:43:25 +01:00
indev 31d8fe4459 Fix game crashing when increasing number of viewpoints more than by one (again) (needs testing that it didn't break anything else) 2024-11-12 01:40:05 +03:00
GenericHeroGuy 71021982ed Two fixes from master 2024-11-10 22:02:46 +01:00
GenericHeroGuy 4d9c1f7a65 Disable FFI 2024-11-10 19:37:05 +01:00
GenericHeroGuy 406e9dcaf2 HUD interpolation for BLUAJIT
Still glitches for a single tic with JIT on...
2024-11-10 17:56:00 +01:00
GenericHeroGuy d3b0d845eb Fix consolelib once and for all
LuaJIT does not tolerate lightuserdata in luaL_checkudata,
so now cvars are userdata like everything else
2024-11-10 17:47:43 +01:00
GenericHeroGuy 335b977cd4 Fix API assert in LUA_EvalMath 2024-11-10 17:41:00 +01:00
GenericHeroGuy 3554c91b2b Library stuff, cvar, etc 2024-11-10 17:38:41 +01:00
GenericHeroGuy 460dab0342 BLUAJIT makefiles 2024-11-10 17:38:41 +01:00
GenericHeroGuy fb9b04c192 Import BLUAJIT (cb36ab5) 2024-11-10 17:38:37 +01:00
indev 38abb4c9e4 That didn't work in spectator camera, oops 2024-11-10 03:26:15 +03:00
indev fc469d6433 Fix spectating other players setting wrong angle when returning back to local player 2024-11-10 03:18:01 +03:00
Alug 478d809620 Merge branch 'Saturn-Next' into refactorcamstuff 2024-11-09 16:16:40 +01:00
Alug 52f1d727c0 Merge branch 'Saturn-Next' into interpfixes 2024-11-09 16:11:08 +01:00
indev 80a29dc5a1 Fix r_portal.c and r_portal.h missing from src/CMakeLists.txt 2024-11-08 11:52:03 +03:00
indev f4703be2ca Fix r_portal.c and r_portal.h missing from src/CMakeLists.txt 2024-11-08 11:47:58 +03:00
Alug 7c78cf067c forgor ifdef here 2024-11-03 15:35:03 +01:00
Alug 54cbfbe699 forgor ifdef here 2024-11-03 15:33:26 +01:00
Alug 05f454157f Merge pull request #138 from Indev450/Saturn-Next
Saturn v7.2
2024-11-03 16:24:00 +01:00
Alug c451f0f1a6 windoze 2024-11-03 14:23:26 +01:00
Alug 35b85bec36 bleh pls 2024-11-03 14:18:59 +01:00
Alug b0c64be31d try to simplify this alteast a little
shit is awful
2024-11-03 03:40:55 +01:00
Alug d09a28e3da missed this 2024-11-03 03:13:15 +01:00
Alug 550c66b25b add some more checks for this 2024-11-03 02:59:23 +01:00
Alug dfec9e24f3 add just a little more extra safety for fbo 2024-11-03 02:44:42 +01:00
indev 5a7c481f69 Fix normal skin being unable to load if localskins limit is reached (thx Alug for pointing out <3) 2024-11-03 00:26:44 +03:00
indev 2350889445 Fix normal skin being unable to load if localskins limit is reached (thx Alug for pointing out <3) 2024-11-03 00:26:18 +03:00
indev 990854e176 Fix localskins being unable to load if normal skin limit is reached 2024-11-03 00:16:15 +03:00
indev 076e84ed24 Fix localskins being unable to load if normal skin limit is reached 2024-11-03 00:13:45 +03:00
Alug 8c727b979c initialise this to null aswell
just in case
2024-11-02 14:19:53 +01:00
Alug 60de48ad65 add accurate fps counter crap to menu + rename it to force it back on
since shit more or less was broken in saturn before and always showed the more accurate one, force it again since stuff caused confusion
2024-11-02 12:57:17 +01:00
Alug 2fd1abce5c v7.2 2024-11-02 01:20:02 +01:00
Alug 691a61de72 oops 2024-11-02 01:12:56 +01:00
Alug 22164031fe gu? 2024-11-02 01:05:06 +01:00
Alug cb50144624 Merge branch 'Saturn-Next' into Saturn-Testing 2024-11-02 01:04:22 +01:00
Alug 3a153c3abe Merge pull request #137 from Indev450/refactorogl
Cleanup and slightly refactor ogl files
2024-11-02 00:57:49 +01:00
Alug d22645e56a use a "-" here for consistancy 2024-11-02 00:50:28 +01:00
Alug 08fe3beef1 respect cv_showdirectorhud 2024-11-02 00:49:35 +01:00
Alug 2c54c92e14 spec cam disables director, but you can toggle it from speccam
uhhhhhhh
2024-11-02 00:49:32 +01:00
Alug c127cd9016 fix wanted reticle offsets
Zzz...
2024-11-01 20:29:33 +01:00
Alug 9cb790ac23 oops broke encore 2024-11-01 20:01:50 +01:00
Alug c2c7381bc1 use precalced minimap stuff for v.drawOnMinimap 2024-11-01 19:55:23 +01:00
Alug 1e4eeb2bcf fix some issues with cv_minihead and minimap icon drawing 2024-11-01 19:55:20 +01:00
Alug b1f99f8d2f fix minimap not being initialised
causes issues when you switch to maps that dont have a minimap
2024-11-01 18:39:36 +01:00
Alug acd9763b9d Merge branch 'refactorogl' into Saturn-Testing 2024-10-31 13:47:42 +01:00
Alug f752da7d03 formatting stuff lul 2024-10-31 12:02:48 +01:00
Alug 7ddcf6d0d4 Merge branch 'Saturn-Next' into refactorogl 2024-10-31 11:59:33 +01:00
indev b21776183e Add shift+insert shortcut for pasting text 2024-10-30 22:14:17 +03:00
indev 9c0dcac5c6 Fix mapmusname global in lua being renamed to (*mapmusname) 2024-10-30 19:21:07 +01:00
indev 1b75d8b8e2 Fix mapmusname global in lua being renamed to (*mapmusname) 2024-10-30 20:35:17 +03:00
indev 9f2167ac3c Fix mapmusname global in lua being renamed to (*mapmusname) 2024-10-30 20:34:53 +03:00
Alug 145e305494 Merge branch 'Saturn-Next' into refactorogl 2024-10-30 16:04:06 +01:00
Alug 8f4d185ea6 Revert "use highly optmized (but slightly inaccurate) version of R_PointOnSide for rendering"
This reverts commit 9314a24cb2.
2024-10-30 16:03:35 +01:00
Alug 4b5ff6be5d Merge branch 'Saturn-Next' into refactorogl 2024-10-30 15:34:43 +01:00
Alug d27ef85b9e remove some unused stuff in portal struct 2024-10-30 13:52:06 +01:00
Alug 1ac210c2fc improve ogl portal clipping 2024-10-30 13:05:30 +01:00
Alug 878b7f4b43 fix portal culling 2024-10-28 20:25:03 +01:00
Alug 7cbac66935 throw this into an inline func 2024-10-28 20:25:01 +01:00
Alug 7e09223e6e gu 2024-10-28 16:36:04 +01:00
Alug b4e1be5bee dont always call HWR_Startup again 2024-10-28 16:35:44 +01:00
Alug d3e5e236ac those do nothing 2024-10-28 16:34:40 +01:00
Alug 238ce98c44 dont always call HWR_Startup again 2024-10-28 07:21:13 +01:00
Alug 2824e5d850 no need to update this witouth water ripples 2024-10-28 06:49:09 +01:00
Alug cd154d5748 grey out some stuffs in the ogl and advanced video menus 2024-10-28 06:40:23 +01:00
Alug c0a8153a10 sort those a bit 2024-10-28 06:40:19 +01:00
Alug 3433fc7651 those should be disabled 2024-10-28 06:40:17 +01:00
Alug 22d1ee8f60 move CV_PossibleValue_t to their own section like other files 2024-10-28 06:40:14 +01:00
Alug 5155958ade add "gl" to secbright and lightdither cvars
theyre only used in ogl so follow the naming convention
2024-10-28 05:40:59 +01:00
Alug 5fdd486bab reorder all of this to be in same order lol 2024-10-28 05:40:56 +01:00
Alug 4672037bcd check if those are already off before trying to turn them off lol 2024-10-28 05:40:54 +01:00
Alug 2281b82b5a replace last remaining "gr" 2024-10-28 04:28:25 +01:00
Alug 3fe096c7d4 gr -> gl
this has been annoying me since ages lol
2024-10-28 04:23:15 +01:00
Alug dd3ca0e161 change cvar register order for ogl stuff 2024-10-28 03:39:05 +01:00
Alug d8da78f900 more cleanup 2024-10-28 03:38:52 +01:00
Alug 9325e7be8f make a bunch of hwr stuff static and cleanup 2024-10-28 03:38:48 +01:00
Alug f3f94bf80e fr*nch 2024-10-28 03:38:36 +01:00
Alug 506dc2455a fr*nch 2024-10-26 23:24:01 +02:00
Alug 94d6ee15b5 this should be portalcullsector lol 2024-10-26 19:44:32 +02:00
Alug 2d918d32a1 reduce the scope of this since not needed 2024-10-26 19:44:28 +02:00
Alug dd516b573b rename this to avoid confusion 2024-10-26 19:31:14 +02:00
Alug de9698efc8 just use the same as software lol
i never saw any differernce except in performance for this
also viewsin and viewcos get calced in r_fps so no need to do here again
2024-10-26 19:29:53 +02:00
Alug 14b026f04b slight cleanup ogl portals again 2024-10-26 19:29:51 +02:00
Alug 9dd45440c0 rename and slight cleanup 2024-10-26 19:29:46 +02:00
Alug c59e8387ca smth smth shadows a global declaration 2024-10-26 19:29:35 +02:00
Alug 772ad9f04f throw ogl portals into their own files 2024-10-26 19:29:32 +02:00
Alug 6053c2c619 readd mobj null check here 2024-10-26 16:40:08 +02:00
Alug a515b133c5 inline this since its super smol 2024-10-26 16:40:04 +02:00
Alug 240dae9a1a move chasecam postimg stuff into own function + add comments for what stuff does lol
shit got me really confused
2024-10-26 16:12:43 +02:00
Alug b8a703233a forgor to remove this 2024-10-26 00:51:58 +02:00
Alug bf44c95d00 clean up portals 2024-10-26 00:51:55 +02:00
Alug c3dd1755dc port srb2 software portal refactor 2024-10-26 00:51:44 +02:00
indev b6e766ee44 Fix A_Lua not removing error handler from lua stack 2024-10-25 23:15:52 +03:00
Alug 5437040b78 move the return ealier in V_DoPostProcessor 2024-10-25 20:21:10 +02:00
Alug c786569981 Merge branch 'refactorpostimg' into Saturn-Next 2024-10-25 20:12:56 +02:00
Alug 7064b14539 Merge branch 'autoloadagain' into Saturn-Next 2024-10-25 20:12:53 +02:00
Alug f275ae98f5 this is needed for postimg stuff in first person
lol
also adds break in splitscreen lööp
2024-10-25 20:12:14 +02:00
Alug ef07d89e29 Revert "update lzf compression to 1.6"
This reverts commit 48e71afec1.
2024-10-25 19:50:16 +02:00
Alug b9bbd45e15 Revert "shut up mingw"
This reverts commit 75637e361c.
2024-10-25 19:50:10 +02:00
Alug 2bda27b80d Revert "those should be size_t"
This reverts commit b357c09171.
2024-10-25 19:49:26 +02:00
Alug e9cfff8165 Merge branch 'Saturn-Next' into Saturn-Testing 2024-10-25 03:28:50 +02:00
Alug 6ebf90cc50 Merge branch 'Saturn-Next' into autoloadagain 2024-10-25 03:28:43 +02:00
Alug ea00bebb04 Merge branch 'Saturn-Next' into refactorpostimg 2024-10-25 03:28:20 +02:00
Alug b862d835a5 save one calc lol 2024-10-25 03:27:51 +02:00
Alug d6602747ae oops forgor lol 2024-10-25 03:26:22 +02:00
Alug 9f79429d03 slight cleanup + make static + smol optimize ogl sprite drawers 2024-10-25 03:26:19 +02:00
Alug 5ff0c09868 just check for noencore bool in hwr_processseg instead of checked line flags everytime 2024-10-23 21:33:31 +02:00
Alug ad1c3e63a4 why not reuse those? 2024-10-23 21:33:28 +02:00
Alug 24dd6ba675 cleanup HWR_ProcessSeg
stuff was quite the mess
2024-10-23 21:33:21 +02:00
Alug 85f036a45b dont always calc this twice 2024-10-23 21:33:14 +02:00
Alug 6f8342b9a8 remove cv_splitwallfix
tbh i dont think anyone even knows about this, never heard any complains, never had any issues, neither visually or performancewise.
its just clutter at this point
2024-10-23 21:33:04 +02:00
Alug c5c6f6b820 this does nothing 2024-10-23 21:30:21 +02:00
Alug 3d472c34a1 no need to check stuff in already postload marked addons 2024-10-23 15:48:44 +02:00
Alug 63ca366bd8 dont play rain sounds when weather is disabled 2024-10-23 13:00:36 +02:00
Alug e9e888ab7f remove debug print 2024-10-23 02:41:28 +02:00
indev 5ea55b3e3a Add W_CheckFileContains for W_CheckPostLoadList 2024-10-23 02:41:25 +02:00
Alug 8b1797927a attempt to check for things in file for postload detection 2024-10-23 02:41:23 +02:00
Alug 05a98964fb split auto and postload, let autoload run on gamestart again
prep for smth
2024-10-23 02:41:20 +02:00
Alug 8cbf798de8 redo rain sound overflow fix
https://git.do.srb2.org/KartKrew/RingRacers/-/commit/3eac1fed0f44a8285a9f6b82a12e86997bbb0d34
2024-10-23 02:37:32 +02:00
Alug 9314a24cb2 use highly optmized (but slightly inaccurate) version of R_PointOnSide for rendering 2024-10-23 02:37:08 +02:00
Alug 1153d477ee Revert "maybe fix mobj interp spawn bugs?"
This reverts commit 037f45df1e.
2024-10-22 15:52:37 +02:00
Alug d63b158966 Revert "fix ghost interpolation"
This reverts commit f23202545b.
2024-10-22 15:52:32 +02:00
Alug f23202545b fix ghost interpolation 2024-10-22 02:32:01 +02:00
Alug 19b1683e61 make those not look terrible thx 2024-10-22 01:18:13 +02:00
Alug d029107e75 refactor postimg stuff so it can be combined with each other better
thx much indev! <3
everything now works with encore!
software now also supports screen effects in splitscreen!
2024-10-22 01:17:57 +02:00
Alug bc97e0b703 actually remove "renderflags" lol 2024-10-21 22:53:44 +02:00
Alug 037f45df1e maybe fix mobj interp spawn bugs?
idk maybe has some odd side effects?
2024-10-21 22:50:51 +02:00
Alug 0eeb6758f4 Merge branch 'Saturn-Next' into Saturn-Testing 2024-10-21 22:50:46 +02:00
Alug f47c663f79 remove renderflags
those literally did nothing
2024-10-21 22:47:32 +02:00
Alug 6f9d41eadb fix R_ThingVisible
those are "eflags" in kart smh
2024-10-21 22:46:59 +02:00
Alug 1b512edc56 add proper null check here too 2024-10-21 21:28:08 +02:00
Alug 884a6da2bd dont use cv_sloperolldist in splitscreen + save some assignments and one fixedhypot call
also use tabs lul
2024-10-21 21:07:32 +02:00
Alug 7a3d958fc1 tab pls 2024-10-21 18:43:08 +02:00
Alug 7223581539 Clarify we're calculating a cross product 2024-10-21 18:10:29 +02:00
Alug 664bd2de3f dont draw fadescreen when minimap iss active 2024-10-21 17:47:44 +02:00
indev 63568e3861 Fix off-by-one error for using '?' as map name 2024-10-21 18:43:37 +03:00
indev 5279192102 Fix off-by-one error for using '?' as map name 2024-10-21 18:40:16 +03:00
indev f149d058a1 Fix off-by-one error in lib_setSfxInfo 2024-10-21 18:06:35 +03:00
Alug 0c8516d33a also check here ig? 2024-10-21 17:01:35 +02:00
Alug 970251ced3 also check here ig? 2024-10-21 17:01:27 +02:00
Alug 651f9637fc prevent map command crash from maps with invalid or non existing mapinfo 2024-10-21 15:39:37 +02:00
Alug dba7a7dc3c prevent map command crash from maps with invalid or non existing mapinfo 2024-10-21 15:37:44 +02:00
Alug 393c0be407 Revert "attempt to optimize some p_maputl stuff"
This reverts commit 81d415c5ba.
2024-10-21 14:19:35 +02:00
Alug 36c5c9939b replace those two P_MobjWasRemoved with simple null check insteead
since those may actually segfault if null anyways
2024-10-21 06:23:23 +02:00
Alug 5e9ea2429b replace those two P_MobjWasRemoved with simple null check insteead
since those may actually segfault if null anyways
2024-10-21 06:23:14 +02:00
Alug 613e32194f Merge branch 'Saturn-Next' into Saturn-Testing 2024-10-21 06:14:36 +02:00
Alug 81a14995da trailing space hell 2024-10-21 06:14:24 +02:00
Alug 4267ac9a8d remove more P_MobjWasRemoved checks
same as before, those may be not synchsafe
2024-10-21 06:04:47 +02:00
Alug bcf72cc0e8 revert some P_MobjWasRemoved checks i forgor about
those may NOT be vanilla netsafe
2024-10-21 06:04:17 +02:00
indev 9a1e96fb99 Add commit title in comprevision 2024-10-20 21:20:57 +03:00
Alug bdcbf12246 add small quickncasehash function 2024-10-20 19:59:26 +02:00
Alug 894b843ccb Merge branch 'clientkick' into Saturn-Testing 2024-10-20 19:57:07 +02:00
Alug 4a9d67521f attempt to fix automap + add minimap generator command "minigen" 2024-10-20 19:56:32 +02:00
Alug a353dceaa3 better M_Random implementation
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1780
2024-10-20 19:50:44 +02:00
Alug 802dd2608e dont draw fadescreen when minimap iss active 2024-10-20 19:44:52 +02:00
Alug ebc4bf4b45 move displayplayer assignment earlier 2024-10-20 19:43:29 +02:00
Alug 906828fadb remove useless code in S_StopChannel 2024-10-20 19:42:56 +02:00
Alug e35612a6f6 massive cleanup unused code
all team stuff, gametypes, bots, etc.
hopefully this wont cause any weird netsynch issues for some reason
2024-10-20 19:41:41 +02:00
Alug f4e0272db9 Start bustable FOF sounds at the correct height 2024-10-20 19:25:26 +02:00
Alug 5ecfc5e09d Use PU_LEVEL for texture caching 2024-10-20 19:24:01 +02:00
Alug 927b819bc8 if game crashes, attempt to save replay 2024-10-20 19:22:04 +02:00
Alug 857731e89f remove broken and unused netcode stuff
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2523
2024-10-20 19:20:32 +02:00
Alug 24fed58c81 Merge branch 'interpfixes' into Saturn-Testing 2024-10-20 19:19:29 +02:00
Alug 57cef86ca1 dont think this needs to be reset every frame 2024-10-20 19:19:14 +02:00
Alug 0f91e18fce Merge branch 'unglobsavep' into Saturn-Testing 2024-10-20 19:16:23 +02:00
Alug c01a0147f2 Merge branch 'remusicdef' into Saturn-Testing 2024-10-20 19:16:19 +02:00
Alug d695b6d51a Merge branch 'refactorgamepads' into Saturn-Testing 2024-10-20 19:16:12 +02:00
Alug 3d1e4a93fd Merge branch 'refactorcamstuff' into Saturn-Testing 2024-10-20 19:15:53 +02:00
Alug 54d9a98090 rotsprite stuff also should be SHORT 2024-10-20 19:11:54 +02:00
Alug 6a5d36c57a Merge branch 'Saturn-Next' into remusicdef 2024-10-20 16:30:24 +02:00
Alug 86ea7dde40 Merge branch 'Saturn-Next' into unglobsavep 2024-10-20 16:27:26 +02:00
Alug 7f709aee53 Merge branch 'Saturn-Next' into refactorcamstuff 2024-10-20 16:26:08 +02:00
Alug 4df7bcd87f Merge branch 'Saturn-Next' into refactorgamepads 2024-10-20 16:25:26 +02:00
Alug 81d415c5ba attempt to optimize some p_maputl stuff 2024-10-20 16:25:12 +02:00
Alug de1b801bda try to take some registers for span drawers too 2024-10-20 16:24:02 +02:00
Alug 2c665fef6f remove this again 2024-10-20 15:21:42 +02:00
Alug c6fbf405bf optimize R_PointOnSegSide
its only used for 2 rendering functions, so being potentially inaccurate is not that dangerous and the speedup in some instances might be worth the tradeoff
2024-10-20 15:16:37 +02:00
Alug 7076c35521 HWR_RenderPlane can be static 2024-10-20 14:57:28 +02:00
Alug 86ed1b709e fix some rendering issues and crashes in software renderer
- Increase MINZ from 4 fracunits to 16
- R_StoreWallRange: do not render textures with holes
- fix off-by-one error in R_ProjectSprite
- Avoid rendering unused left/right edges of screen while rolling
- Clamp patch column post drawing bounds
- Vissprites: set dc.texheight
- Add null check for column in R_DrawMaskedColumn
2024-10-20 14:57:22 +02:00
Alug 0be25bd362 Merge branch 'Saturn-Next' into Saturn 2024-10-20 14:56:56 +02:00
Alug d30c96e8cb fix a maybe-uninitialized warning 2024-10-20 00:22:06 +02:00
Alug 0af52ba3ae dont need to always check this 16 times if we already know theres more than one player ingame 2024-10-19 21:15:11 +02:00
Alug fbe97556de change versionstring
also remove the fbo one, its honestly not necessary anymore
2024-10-18 20:36:16 +02:00
Alug 7a6f43bece dont show encore toggle text in record attack menu
dont think you can even record attack in encore hmm
2024-10-18 20:34:22 +02:00
Alug afca521fe5 dont run director if theres only one player ingame
idk if this is good lol
2024-10-18 19:53:44 +02:00
Alug bfd61893a1 forgor joyscale 2024-10-16 13:28:25 +02:00
Alug 72d374786f huge cleanup controller code
hope i didnt break anything here lel
2024-10-16 13:28:22 +02:00
Alug d3e2875c94 those can be registered in lööp 2024-10-16 13:14:31 +02:00
Alug eb40eec4c1 clean up cvar register a bit 2024-10-16 12:57:41 +02:00
Alug 1daac9a124 revert all the cam things for now here
Dont wanna deal with this shit for 7.1 anymore
2024-10-14 22:15:27 +02:00
Alug 991f1b17dd spec cam needs mo angle and aiming
atleast now ik why it checks for consoleplayer Zzz...
2024-10-14 19:23:47 +02:00
Alug 38f3e48aed only do this in software renderer
doesent work even with pal rendering in ogl
2024-10-13 23:07:37 +02:00
Alug 9a9aa75684 forgor about shadows lol 2024-10-13 21:33:17 +02:00
Alug d1b023c8c8 whoops forgor 2024-10-13 23:25:38 +02:00
Alug 0d6faed3d5 lol 2024-10-13 23:13:22 +02:00
Alug b3750f78ff only do this in software renderer
doesent work even with pal rendering in ogl
2024-10-13 23:07:32 +02:00
Alug 82f96dd080 remove unused/nonunsable analog cvars 2024-10-13 22:44:50 +02:00
Alug d640ce06d7 fix cam stuff for good + huge cleanup 2024-10-13 22:44:47 +02:00
Alug b8fb74fef3 fix the cam loops 2024-10-13 22:44:43 +02:00
Alug ab4bbbff72 use arrays for all the cam cvars 2024-10-13 22:44:37 +02:00
Alug 4180949307 dont need this splitscreen check 2024-10-13 22:43:14 +02:00
Alug e68ff858f2 attempt to clean up cam shit even more 2024-10-13 22:43:08 +02:00
indev 4cf4d49f48 Fix error handler staying on lua stack after lua commands being called 2024-10-13 15:37:39 +03:00
indev a19c4dc5e5 Fix game crashing when using P_DoPlayerExit on player without mobj 2024-10-13 15:37:39 +03:00
Alug d37505ff06 this should be SHORT 2024-10-13 02:59:10 +02:00
Alug 7f6ce1f299 this uhhh actually makes things crash lol 2024-10-13 02:47:57 +02:00
Alug 262a84aac6 fix ogl shearing
no clue wtf kart was doing here lmao
2024-10-13 02:42:37 +02:00
Alug 3f12ebb2bd only interp cam during pause for replay freecam to not jitter during pause 2024-10-13 01:11:59 +02:00
Alug b58fcf331c ignore keepmusic when called from P_RestoreMusic
most of the sound handling just calls this and this may just stop the music entirely on some occasions so just ignore keepmusic for that
2024-10-13 00:40:51 +02:00
Alug b978645c28 Merge branch 'Saturn-Next' into clientkick 2024-10-13 00:05:28 +02:00
Alug fe51278295 Merge branch 'newmusicstuff' into Saturn-Next 2024-10-13 00:04:59 +02:00
Alug c3fb84981e Merge branch 'pakcheck' into Saturn-Next 2024-10-13 00:02:32 +02:00
Alug 919aad4f30 Merge branch 'vres-skip-map-marker' into Saturn-Next 2024-10-12 23:57:27 +02:00
Alug 818e6046b7 Merge branch 'Saturn-Next' into vres-skip-map-marker 2024-10-12 23:30:03 +02:00
Alug 59a99f4c21 Merge branch 'Saturn-Next' into clientkick 2024-10-12 23:29:43 +02:00
Alug f01d2a0ba6 print saturnpak print into debfile instead of console 2024-10-12 23:29:11 +02:00
Alug 8df0a2d059 Merge branch 'Saturn-Next' into pakcheck 2024-10-12 23:28:05 +02:00
Alug d7ed91af1d Refactor TTY input handling
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2451#b2f76b3273f1780347c35ec752bcde560c5f73a5
2024-10-12 23:26:14 +02:00
Alug 081dcc021b fix tty converting everything to lowercase 2024-10-12 23:21:11 +02:00
Alug 70ebd0d475 Merge remote-tracking branch 'origin/unified-text-input' into Saturn-Next 2024-10-12 23:19:38 +02:00
Alug 02bbb38606 Fix insane TTY input latency
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2360
2024-10-12 23:16:42 +02:00
indev d00014ea59 If corrupted save received, leave netgame 2024-10-12 22:10:58 +02:00
indev 210d6ac8ac Add few checks to prevent game crashing if netgame archive becomes corrupted 2024-10-12 22:10:48 +02:00
indev 55248e7fcf Attempt to fix a lua panic when unarchiveing extvars (print error to console instead. Not sure if it would be safe for game to read from save afterwards though) 2024-10-12 22:09:51 +02:00
indev cb94235ac1 If corrupted save received, leave netgame 2024-10-12 22:09:20 +02:00
Alug d0c50c49a7 Add few checks to prevent game crashing if netgame archive becomes corrupted
https://github.com/alufolie91/saturn-32p/commit/1e47728ea8c60a1f04130170ddfab9b02e1a7e4c#diff-0c6396d5a9ad45f461741cd44ffb2c0d3cf0eb2ec7b0500053005196fe53f1a6R1517
2024-10-12 22:09:18 +02:00
Alug 7f1217b2ab Attempt to fix a lua panic when unarchiveing extvars (print error to console instead. Not sure if it would be safe for game to read from save afterwards though)
https://github.com/alufolie91/saturn-32p/commit/a770ecdbd4afd56a9d8325eae47f0c69f71661ee#diff-0c6396d5a9ad45f461741cd44ffb2c0d3cf0eb2ec7b0500053005196fe53f1a6R1462
2024-10-12 22:09:15 +02:00
Alug 3b01393a71 Merge branch 'Saturn-Next' into unglobsavep 2024-10-12 22:08:49 +02:00
Alug 23b36b5074 oops 2024-10-12 21:29:49 +02:00
Alug 2e7f0721b9 make s_sound a little prettier 2024-10-12 21:24:43 +02:00
Alug 4927e55c7e fix some warnings when compiling with older sdl version 2024-10-12 21:24:04 +02:00
Alug c51d33fa6e save 1 G_BuildMapTitle call kek 2024-10-12 20:19:53 +02:00
Alug 8630d8cd47 clean bird music stuff again
we dont need to return everywhere but instead stuff can be mostly just set to 0
this also somewhat ensures stuff works after toggling without having to restart the game or map
2024-10-12 19:55:02 +02:00
Alug 659243baa1 always assign stutter_threshold 2024-10-12 19:44:21 +02:00
Alug b6a84c1646 readd music_resync_powerups_only 2024-10-12 19:40:12 +02:00
Alug c33afa4a3b shut up mingw 2024-10-11 19:09:49 +02:00
Alug 1428c3c2bf fix spec cam bug + more cleanup 2024-10-11 21:00:13 +02:00
Alug aa0cbfda74 Revert "rendertimefrac_unpaused should be fracunit on netlag"
This reverts commit 6722b43244.
2024-10-09 15:33:19 +02:00
Alug 9d13ff3c9f proper inline P_MobjWasRemoved 2024-10-07 23:01:52 +02:00
Alug e47c13b7ac proper inline M_Memcpy 2024-10-07 23:01:45 +02:00
Alug 3f5b96bd45 this shouldnt be here lol 2024-10-07 13:15:08 +02:00
Alug 63c1372c34 keep debug print for now 2024-10-07 12:57:55 +02:00
Alug 8b915f9ac1 make this less ugly 2024-10-07 12:53:31 +02:00
Alug f3a18a0655 false 2024-10-07 12:48:36 +02:00
Alug e8351d44b6 add crap to menu 2024-10-07 12:45:03 +02:00
Alug 297af069cb doubt anyone wants this
also psure this will cause some weird issues somewhere idk
2024-10-07 12:41:59 +02:00
Alug baa5d6630d Merge branch 'Saturn-Next' into newmusicstuff 2024-10-07 12:39:41 +02:00
Alug 0c30730ef6 Merge branch 'Saturn-Next' into pakcheck 2024-10-06 18:52:24 +02:00
Alug ef763487a5 this doesent make much sense tbh 2024-10-06 18:51:43 +02:00
Alug 03f5ac87fa Merge branch 'Saturn-Next' into interpfixes 2024-10-06 18:51:20 +02:00
Alug c82148fafc prevent this from become super large somehow lol
just like cap it at 19 it works just fine
2024-10-06 18:50:32 +02:00
Alug d1346dee53 shouldnt that be a bool? 2024-10-06 18:31:54 +02:00
Alug 6722b43244 rendertimefrac_unpaused should be fracunit on netlag
makes this a little more sane tbh
2024-10-06 18:31:51 +02:00
Alug b2cac97106 fix this 2024-10-06 14:53:25 +02:00
Alug cfdbf1f4ad hopefully fix awayview cam interp crap 2024-10-06 14:53:10 +02:00
Alug 48a00ba911 this needs to be set twice
Zzz...
2024-10-06 14:52:54 +02:00
Alug 4b1102357a only do this in replays
otherwise shit will jitter during netlag
2024-10-06 14:46:11 +02:00
Alug e3b0204b2c fix main menu interpolation
apparently in main menu, opening the menu pauses the game so rendertimefrac was FRACUNIT and didnt interpolate
2024-10-06 14:46:06 +02:00
Alug a2799ddcca Interpolate view, even when paused
https://github.com/KartKrewDev/RingRacers/commit/3320faec8cebecb124882d38c7ec0ad37b79340a#diff-607b68058edc6124b3061267d902aabeddb6ba338c6483df0af8b1a7cf796a01R43
2024-10-06 14:46:03 +02:00
Alug 76198f61de add missing break 2024-10-06 14:45:50 +02:00
Alug c3ce75055a only do this in replays
otherwise shit will jitter during netlag
2024-10-06 14:30:28 +02:00
Alug 90d64c4e15 fix main menu interpolation
apparently in main menu, opening the menu pauses the game so rendertimefrac was FRACUNIT and didnt interpolate
2024-10-06 13:47:20 +02:00
Alug 595648a2b3 Interpolate view, even when paused
https://github.com/KartKrewDev/RingRacers/commit/3320faec8cebecb124882d38c7ec0ad37b79340a#diff-607b68058edc6124b3061267d902aabeddb6ba338c6483df0af8b1a7cf796a01R43
2024-10-06 13:47:17 +02:00
Alug 8e799ddd74 fix a interp bug where the jitter on tally increase would be for only one rendered frame, not one full tic. 2024-10-06 13:47:14 +02:00
Alug a754e9c08a HACK: reset interp values in case 412 teleporter without using P_Setorigin
since that function does some wonky stuff and idk if that would be synch safe
2024-10-06 13:47:11 +02:00
Alug 112c9398e7 add missing break 2024-10-06 13:47:08 +02:00
Alug ccd691548e more R_ResetViewInterpolation stuff 2024-10-06 13:47:05 +02:00
Alug afd7b85005 R_ResetViewInterpolation: wait an extra tic if R_UpdateViewInterpolation has not run yet, do not add extra time for subsequent calls 2024-10-06 13:47:02 +02:00
Alug f9e1cdb940 P_Ticker: update view interpolation at the start of a tic 2024-10-06 13:46:43 +02:00
Alug 63fe657c7d Do not set hu_stopped on interpolated frame 2024-10-06 13:46:31 +02:00
Alug ff2006ad74 smol fix 2024-10-06 12:40:01 +02:00
Alug 55c9c7297f throw this into own function too 2024-10-06 12:39:56 +02:00
Alug 4b083ee72e make function for quakes, scale with mobjscale 2024-10-06 12:39:54 +02:00
Alug 6574ec2fb9 attempt to cleanup R_SetupFrame 2024-10-06 12:39:48 +02:00
Alug f54bb349b5 add G_FixCamera 2024-10-06 12:39:44 +02:00
Alug 6f1252e27d set timeinmap for demo rewind
idk maybe this helps with that feature desynching all the time lol
2024-10-06 12:39:26 +02:00
Alug 7d65b5369f add some brackets lul 2024-10-06 12:34:51 +02:00
Alug 4877c81728 comment this out for now so v7 clients dont use vanilla resynch system
keep sending PT_WILLRESENDGAMESTATE packets to everyone for now
saturnpak will still mark the right clients so they will use the right consistency check without having to desynch first
2024-10-06 12:32:57 +02:00
Alug 5cb207edfa add debfile prints whenever gamestate counter changes 2024-10-06 12:14:32 +02:00
Alug fc39a0dedf make the debug print a little better 2024-10-06 12:12:59 +02:00
Alug 0b3e7240a8 use saturn packet to determine if client can receive gamestate
before the server always assumed every client cant receive the gamestate using the vanilla consistency check for everyone.
aswell as before the first resynch it tried to send the gamestate resend packets to everyone
2024-10-06 12:07:17 +02:00
Alug f32c346534 this needs gamestate check
sometimes the title music kept playing
2024-10-05 06:56:31 +02:00
Alug 3165004d0e add comment to try and explain this crap 2024-10-03 18:15:19 +02:00
Alug ec3b1cf130 make this more readable 2024-10-03 17:55:08 +02:00
Alug a0437713bf smol dupe 2024-10-02 14:40:03 +02:00
Alug 96f7ff550c prevent this from overflowing
ye well idk anymore.
2024-10-02 14:22:48 +02:00
Alug 837216d78e we dont need any of this in ogl 2024-10-02 14:22:39 +02:00
Alug dfb6006f9c fix up old fps counter 2024-10-02 12:14:40 +02:00
indev fb0765a5f3 Fix selection in replay save prompt 2024-10-01 20:55:27 +03:00
indev 2e8769496f Use textinput_t for replay save prompt too 2024-10-01 20:39:04 +03:00
Alug bdb39fcd8d dont leak pls 2024-10-01 17:57:45 +02:00
Alug 31516c7987 fix G_BuildMapTitle leaks 2024-10-01 17:56:15 +02:00
Alug b985ce06a2 lol 2024-10-01 16:03:56 +02:00
Alug 12d6546062 dumb special case for wandering balls Zzz... 2024-10-01 16:03:00 +02:00
indev fb71da3627 Remove debug print 2024-10-01 16:50:44 +03:00
indev a90ffff320 Fix (hopefully) all other menu types that use IT_CV_STRING 2024-10-01 16:49:59 +03:00
Alug 9abf2bca75 fix some stuff 2024-10-01 15:46:22 +02:00
indev 3db6770dfd Fix IT_CV_STRING crashing game in M_DrawGenericMenu 2024-10-01 16:24:14 +03:00
Alug 3a951576ee use stricmp for this 2024-10-01 15:22:29 +02:00
Alug 6b0d67ac36 more 2024-10-01 15:22:25 +02:00
Alug d06b8ac398 cleanup + comments 2024-10-01 15:22:22 +02:00
Alug 67435ebf9e work around encore music again
S_InitMapMusic would play before the level actually started thus playing a smol bit of non encore music in encore
2024-10-01 15:22:19 +02:00
Alug 2ee29630fb fix encore music again lol 2024-10-01 15:22:16 +02:00
Alug 7fa21e9aea work around custom vote theme music + rename a bunch of stuff
please help me
2024-10-01 15:22:08 +02:00
Alug b4b206f575 encoremusic... 2024-10-01 15:22:04 +02:00
Alug f363663b3e fix up everything and make stuff work
i hope lmao
2024-10-01 15:22:01 +02:00
Alug 42d957e21b change how keepmusic works
compare map and encore instead of the music itself
2024-10-01 15:21:57 +02:00
Alug 07f9756bc8 forgor about encore music 2024-10-01 15:21:54 +02:00
Alug e958e43b49 update comments a little 2024-10-01 15:21:51 +02:00
Alug 0d150e4b08 add some basics of what i wanna have for music stuff
- basic keepmusic implementation (currently checks for if the song changes instead of the map, idk if i keep this, since this allows certain maps to change the music on start, ex abstract avenue or wandering balls)
- Toggle to ignore any kind of music change during the level (includes intermission music, depends on how custom intermission music works)
-toggle to start map music instantly on levelload and skip the intro fanfare (also skips any linedef executed sound so some map intros dont interfere with this)
2024-10-01 15:21:47 +02:00
Alug 0deff73a46 make a function for the music level start stuff 2024-10-01 15:21:43 +02:00
Alug bf67c6b1d0 remove code dupe and let S_LoadMusicDefs also load MUSCINFO def 2024-10-01 15:19:51 +02:00
Alug f1cf370680 make a funky macro 2024-10-01 15:19:46 +02:00
Alug affa23040b refactor musicdef stuff
well it fixed the hash find lmao
2024-10-01 15:19:42 +02:00
Alug a15cefc80f oops 2024-10-01 15:19:38 +02:00
Alug 5cf00d903b super smol optimization to S_FindMusicCredit 2024-10-01 15:19:25 +02:00
Alug b24caf397a add "map ?" shortcut for random map 2024-10-01 14:49:46 +02:00
Alug f051e33a0c cv_showdirectorhud didnt save Zzz... 2024-09-30 23:00:39 +02:00
indev ff2b28ac73 Use m_textinput for chat too 2024-09-30 12:13:25 +03:00
indev e2367d26d1 Use same keyboardlayout code as in chat for textinput, also add a null terminator after ctrl-v just in case string is not always zeroed out already 2024-09-30 12:08:21 +03:00
indev e1a65add5d Put all text input logic into separate file and use it for all text input fields 2024-09-30 10:35:27 +03:00
Alug 913426bfdb let SOC also use PRECIP_BLANK/ weather = 4
no idea why it couldnt doesent make any sense
2024-09-29 22:28:35 +02:00
Alug d7b0726e42 no need to even traverse part of the blockmap when PRECIP_STORM_NORAIN and PRECIP_BLANK 2024-09-29 22:28:31 +02:00
Alug cadb67e6c9 move this stuff
so dont need check for renderisnewtic multiple  times and dont need to check for menu and dpad stuff every single frame
2024-09-29 15:15:53 +02:00
Alug 564838a439 only draw lua hud stuff when patch exists 2024-09-29 15:15:49 +02:00
Alug 4554bcc565 reset rumble on some conditions 2024-09-28 03:29:12 +02:00
Alug fd48335688 Replace portalline boolean with g_portal pointer to current portal Beta 2024-09-28 03:29:09 +02:00
Alug 222f56d1b2 smol director stuffs 2024-09-28 01:03:44 +02:00
Alug b71870f57b this needs no dedi check actually 2024-09-28 01:03:41 +02:00
Alug 01c9632025 set those in P_SpawnGhostMobj too 2024-09-28 01:03:39 +02:00
Alug 1533e13d68 let player pointer be const in P_IsLocalPlayer and P_IsDisplayPlayer 2024-09-28 01:03:34 +02:00
Alug 89965ad718 forgor remove this 2024-09-28 01:03:31 +02:00
Alug eb74f3525a consolidate this 2024-09-28 01:03:29 +02:00
Alug 536f88dee0 this does nothing 2024-09-28 01:03:26 +02:00
Alug 2622ba286e z 2024-09-28 01:03:18 +02:00
Alug a1d490cb49 R_DrawMaskedColumn: do not draw zero length column 2024-09-28 01:03:15 +02:00
Alug b357c09171 those should be size_t 2024-09-28 01:03:11 +02:00
Alug 48e71afec1 update lzf compression to 1.6 2024-09-28 01:03:08 +02:00
Alug 1c6fce9339 fix encore minimap 2024-09-27 15:05:38 +02:00
Alug 96551d3b75 use qs22j here again
it is really faster
thought it wasnt in this case
2024-09-27 15:05:34 +02:00
Alug 7a832df4d3 cleanup + reformatting 2024-09-27 15:05:31 +02:00
Alug c3b6121968 forgor this 2024-09-27 15:04:15 +02:00
Alug b3b2b65c5f reformat this 2024-09-27 15:04:12 +02:00
Alug 47a805ede7 Merge branch 'Saturn-Next' into clientkick 2024-09-26 18:18:53 +02:00
Alug 7a3ccec38d ; 2024-09-26 18:18:42 +02:00
Alug d8da0a11a2 gamestate resend counter was never proper reset for nodes
means it would carry over to the next person occupieing that node and made them have less chances to get the gamestate resent
2024-09-25 19:31:25 +02:00
Alug d5c3332635 those can be static 2024-09-24 22:23:29 +02:00
Alug 0137f2254d add toggle for water ripples Zzz... 2024-09-24 22:18:27 +02:00
Alug 206d562f3f Kick clients that fail to catch up with server gamelogic
version from rr to accomidate kart netcode a bit better
2024-09-24 19:11:03 +02:00
Alug 63f649724e Merge branch 'Saturn-Next' into unglobsavep 2024-09-24 17:05:42 +02:00
Alug da769ce524 only allow director toggling with button when you spec someone 2024-09-24 16:57:25 +02:00
Alug 2e99636bb0 make director text disappear after 13 seconds, and in replays after 4 2024-09-24 15:25:56 +02:00
indev ff7f68f5b4 Expose demo.freecam as replayfreecam 2024-09-24 16:05:22 +03:00
Alug 14eec0c902 dont show director text when in replay freecam 2024-09-24 15:03:31 +02:00
Alug b064c534d8 hide viewpoint text when in replay freecam 2024-09-24 15:03:28 +02:00
Alug e7c0f322ee dont show driftgauge when in replay freecam 2024-09-24 15:03:14 +02:00
Alug 725754c427 dont run director when you use spectator freecam 2024-09-24 15:03:07 +02:00
Alug 9a6c0a0280 check vres data before freeing it 2024-09-23 23:13:08 +02:00
Alug 26d8c05ce7 forgor some casting 2024-09-23 23:13:05 +02:00
indev 91a9f20af7 Skip map marker in vres_GetMap 2024-09-24 00:08:48 +03:00
indev 90745d91aa Add showdownloadprompt cvar, so addon download prompt can be disabled 2024-09-23 23:39:25 +03:00
Alug 0dbae34998 completely forgor to revert this lol 2024-09-23 15:53:05 +02:00
Alug eec93b8013 Revert "beta hud driftgauge"
This reverts commit 26e8c2ca2b.
2024-09-23 01:35:14 +02:00
Alug cfe3f01b32 Revert "extra check"
This reverts commit 0bb1efcd50.
2024-09-23 01:35:11 +02:00
Alug df10262ebb Revert "beta hud driftgauge"
This reverts commit 26e8c2ca2b.
2024-09-23 01:34:47 +02:00
Alug a87ac3e35e Revert "extra check"
This reverts commit 0bb1efcd50.
2024-09-23 01:34:41 +02:00
Alug b71d9d2e68 Merge branch 'Saturn-Next' into unglobsavep 2024-09-23 01:04:04 +02:00
Alug 43452e1af4 dont actually call Nullprecipthinker 2024-09-23 01:03:59 +02:00
Alug a4706e0785 read precip row in perfstats 2 2024-09-23 01:03:24 +02:00
Alug c921ab463c dont count precip towards thinkers in perfstats 2024-09-23 01:03:20 +02:00
Alug 892816dadf fix precip performance issuess on certain maps 2024-09-23 01:03:17 +02:00
Alug cc44a5785d lets not archive players as mobjs 2024-09-22 23:08:33 +02:00
Alug 172d2bf545 Merge branch 'Saturn-Next' into unglobsavep 2024-09-22 22:20:19 +02:00
Alug e7e1fd711e dont check consistency/attempt to resend the gamestate while a client is currently getting the save resend
perhaps that makes mass synchs less bad
2024-09-22 22:16:21 +02:00
Alug 7493b3d2ab Revert "clean up leveload a bit"
This reverts commit c14af4a136.
2024-09-22 22:10:57 +02:00
Alug ba5459eeb6 Revert "clean up leveload a bit"
This reverts commit c14af4a136.
2024-09-22 17:52:26 +02:00
Alug 31370741f2 Merge branch 'Saturn-Next' into unglobsavep 2024-09-22 17:01:27 +02:00
Alug 0bd9c696df try to prevent unknown packet type spam when client attempt to connect while levelloading 2024-09-22 16:53:31 +02:00
Alug c14af4a136 clean up leveload a bit 2024-09-22 16:53:25 +02:00
Alug 8dfa841a7b Load palette before map data 2024-09-22 16:52:07 +02:00
Alug a6de843c75 cleanup r_draw8 2024-09-22 16:52:04 +02:00
Alug 0bb1efcd50 extra check 2024-09-22 04:14:31 +02:00
Alug 26e8c2ca2b beta hud driftgauge
eh needs some stuff for menu still
also should replace driftgauge gfx sometime
2024-09-22 04:13:53 +02:00
Alug 12ffca7374 precalc automap and minimap stuff on mapload instead of every frame 2024-09-22 04:13:02 +02:00
Alug e187f73044 Merge branch 'Saturn-Next' into unglobsavep 2024-09-21 17:41:58 +02:00
Alug 6ecf65d83a Merge remote-tracking branch 'origin/Saturn-Next' into Saturn-Next 2024-09-21 16:03:17 +02:00
Alug 231c173545 move this so speccing resets your laptime 2024-09-21 16:03:13 +02:00
Alug f12b7fd772 move this 2024-09-19 12:41:40 +02:00
Alug 14ea041c72 always reset cam subsector regardless of splitscreen 2024-09-18 12:11:14 +02:00
Alug 6fb804292c Prevent integer div by 0 in curl progress callback 2024-09-18 01:07:43 +02:00
Alug f77f7361a9 this also does nothing 2024-09-18 01:06:54 +02:00
Alug d6d19d5dab smol cleanup 2024-09-18 01:02:42 +02:00
Alug 8074bfacb6 this does nothing 2024-09-18 00:58:37 +02:00
Alug f5f7b99479 Fix crash if a packet fails to reach the client
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2480 but keeps the returns;
2024-09-17 21:02:05 +02:00
Alug f0a8c27829 Fix crash when trying to send to an unreachable client
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2232
2024-09-17 20:58:23 +02:00
Alug 30024f2341 this is the correct value 2024-09-17 19:47:30 +02:00
Alug ff0dcafeea make ticcmds on gamestateresend
resynch will still stop making em
should hopefully fix some weird issues where you might end up somewhere weird if the resend takes a little longer
2024-09-17 16:47:34 +02:00
Alug 8580451bce properly reset all splitscreen cameras on resynch
also fix some casting
2024-09-17 16:47:31 +02:00
Alug d867868854 Revert "dont run playerjoin hook on resynch"
This reverts commit 5f7bf4164d.
2024-09-17 16:43:25 +02:00
indev b1644d4817 Ignore case here 2024-09-17 17:23:16 +03:00
indev a9a3a04379 Add proper skin search in skin command 2024-09-17 17:16:35 +03:00
Alug 3aa55ee9c3 dont need this 2024-09-16 18:12:52 +02:00
Alug 8cfc8a5492 "player" 2024-09-16 17:52:58 +02:00
Alug 3f1c8db362 some stuff i forgor 2024-09-16 17:33:31 +02:00
Alug 0d999d7a70 Revert "Contain end & size into savebuffer_t"
This reverts commit 1a810bc923.
2024-09-16 17:17:19 +02:00
Alug 8bc081d937 Use Zone memory functions for sending compressed saves 2024-09-16 13:47:46 +02:00
Alug 42eb8d1af5 Only save demo if demobuf.p is ready 2024-09-16 13:47:43 +02:00
Alug 1a810bc923 Contain end & size into savebuffer_t 2024-09-16 13:47:40 +02:00
Alug 065572ef64 more fixup 2024-09-16 12:56:19 +02:00
Alug e88702e10c fix demo checkspace 2024-09-16 12:56:16 +02:00
Alug ee2d934525 rest smol fixes 2024-09-16 12:42:39 +02:00
Alug 2a3a33226e fixup demo savebuf 2024-09-16 12:42:36 +02:00
Alug 539315710c clean up 2024-09-16 12:42:33 +02:00
Alug 191a6ca76f unglobalize savebuffer
needs some cleanup
2024-09-16 12:42:29 +02:00
Alug 7ac9f0cbef dont rerun mapload hook on resynch 2024-09-16 00:54:29 +02:00
Alug 5f7bf4164d dont run playerjoin hook on resynch 2024-09-16 00:54:26 +02:00
Alug 43690c9b2c fix sound bug lol 2024-09-16 00:08:21 +02:00
Alug 02c14bfa5c Merge branch 'Saturn' into Saturn-Next 2024-09-16 00:08:11 +02:00
Alug 0544811c7d Merge pull request #135 from Indev450/Saturn-Next
Saturn v7
2024-09-15 13:02:42 +02:00
Alug e079bac283 make advanced server menu scroll menu
grrrrr green res
2024-09-15 12:03:20 +02:00
Alug 862f1fce2c ... 2024-09-15 12:03:16 +02:00
Alug 5aeb78f2a5 Merge pull request #134 from Indev450/absolutehell
Huge Netcode/Resynchcode changes
2024-09-15 11:45:35 +02:00
Alug cb42bc581b squish options menu a little
im honestly too lazy too move shit around just before release lmao
2024-09-15 11:43:44 +02:00
Alug 5fc9410b59 Merge branch 'Saturn-Next' into absolutehell 2024-09-14 22:23:51 +02:00
Alug 84d3ee7170 maths..... 2024-09-14 22:23:11 +02:00
Alug accef8f1e1 version change 2024-09-14 21:10:55 +02:00
Alug 4a8edff694 Merge remote-tracking branch 'origin/Saturn-Next' into absolutehell 2024-09-14 21:01:08 +02:00
Alug aac3b8d025 forgor this one 2024-09-14 19:45:23 +02:00
Alug 4034658e44 some cleanup 2024-09-14 19:44:01 +02:00
Alug 7d4898dd8b remove code dupe in r_segs 2024-09-14 18:43:13 +02:00
indev 71fe6ec9da should be != here 2024-09-14 19:04:51 +03:00
indev 075097c219 Don't default to sonic if skin was changed to unknown skin, use current skin instead 2024-09-14 16:40:17 +03:00
Alug f70ec60ae4 use continues in hooklib loops too
idk if this is any faster, but it makes smth i wanna port over potentally easier
2024-09-14 12:35:29 +02:00
Alug aeafd46f24 smol m_menu cleanup 2024-09-13 14:17:13 +02:00
Alug 5f57044118 replace tooltip crap with a macro + fix adv video options tooltips 2024-09-13 14:02:15 +02:00
Alug 65006c11d3 move credits a tiny bit 2024-09-13 13:37:10 +02:00
Alug 76bc184f6c whoops wrong tooltip 2024-09-13 13:35:18 +02:00
Alug dd39a444f2 add smol comment 2024-09-13 13:30:30 +02:00
Alug 1a16012a5c this used to be const 2024-09-13 13:22:51 +02:00
Alug c49aae8d49 no need to save saturnjoin value + smol cleanup 2024-09-13 13:21:25 +02:00
Alug d5dc52d3d3 super smol optimization R_ThingWithinDist
no need to run fixedhypot on every sprite when you dont use draw distance limit
2024-09-13 12:44:38 +02:00
Alug 4f1f1ede97 smol menu visual cleanup 2024-09-13 12:33:49 +02:00
Alug c98b896fc8 add old line whatever in intermission add beta intermission visual to menu 2024-09-13 12:33:02 +02:00
Alug 3714735c2a small cleanup intermission drawer 2024-09-13 12:32:59 +02:00
Alug 025cc093db Merge remote-tracking branch 'origin/Saturn-Next' into absolutehell 2024-09-13 10:48:34 +02:00
Alug 924d79c20d only need to check all this when in splitscreen
retains vanilla behaviour
2024-09-13 00:23:07 +02:00
Alug 0926f68776 clean up sprite stuff 2024-09-13 00:16:35 +02:00
Alug 26f3806b3c fix wöter shader interpolation
accidentally reverted that when redoing palette rendering
2024-09-12 22:43:14 +02:00
Alug d628320c8d forgor this 2024-09-12 01:05:07 +02:00
Alug 41fc4c7cfd delete DEH_WriteUndoline
it literally does nothing lol
2024-09-12 01:05:05 +02:00
Alug 1c8ca2b110 apparently this always runs
i am in pain
2024-09-11 21:10:41 +02:00
Alug 241d107485 let item button toggle encore in mapselect screen
guh
2024-09-11 21:10:38 +02:00
Alug 8d0601c2ad add missing masterserver ifdef 2024-09-11 21:10:35 +02:00
Alug 31118254a0 this can be int16 2024-09-10 19:56:52 +02:00
Alug 85a1636776 Revert "smol optimization to HWR_AddLine"
This reverts commit 77c9badeca.
2024-09-10 10:58:15 +02:00
Alug 3b227932e9 Revert "smol optimization R_AddLine"
This reverts commit 677cdc77e4.
2024-09-10 10:58:12 +02:00
Alug ff591bce04 Revert "Zzz..."
This reverts commit c3a03d89c4.
2024-09-10 10:58:09 +02:00
Alug c3a03d89c4 Zzz... 2024-09-10 10:31:25 +02:00
indev dd405532af Snap title demo logo to bottom right corner 2024-09-09 23:56:53 +03:00
Alug 677cdc77e4 smol optimization R_AddLine 2024-09-09 22:57:21 +02:00
Alug f9463d8efa smol cleanup 2024-09-09 22:57:18 +02:00
Alug 77c9badeca smol optimization to HWR_AddLine 2024-09-09 22:57:15 +02:00
Alug 926287eb97 remove redundant check 2024-09-09 22:57:12 +02:00
Alug 7a91b19962 only change lightlevel/colormap behaviour in palette rendering 2024-09-09 21:51:09 +02:00
Alug c148ff5a05 fix off by one in sprite lightlevels 2024-09-09 21:51:06 +02:00
Alug ef7e658f9d Merge branch 'Saturn-Next' into absolutehell 2024-09-09 18:51:37 +02:00
Alug 0e9b9d15ea revert this ig 2024-09-09 18:51:23 +02:00
Alug dd2d437a21 Merge branch 'Saturn-Next' into absolutehell 2024-09-09 16:05:16 +02:00
Alug b9779d4dba add toggle for director prompt
cause ik some ppl will complain lol
2024-09-09 16:05:08 +02:00
Alug 1d40d8c4ef make this less complicated lol 2024-09-09 15:58:45 +02:00
Alug 847b1f5cb7 fade director hud after 4 secs after toggling it 2024-09-09 15:58:43 +02:00
Alug 9448a98573 disable director on title screen and record attack demos 2024-09-09 09:25:06 +02:00
Alug 14bce36b95 make it static actually 2024-09-08 23:36:57 +02:00
Alug ba4c54004a turn off director by default when playing replays and restore the setting when done
you can  still toggle it in replays no issues
but you mostly want to watch yourself or a certain person during replays, so having to manually toggle it off always is weird
2024-09-08 23:34:35 +02:00
Alug 9fdfc09229 dont trigger rumble in offroad when under hyu effect 2024-09-08 23:09:17 +02:00
Alug b19bc7d77e slight portal cleanup 2024-09-08 16:53:52 +02:00
Alug 58815ae9c4 fix potential rendering issues on large maps 2024-09-08 16:45:50 +02:00
Alug 0b12c9b5a8 smol cleanup 2024-09-08 16:45:48 +02:00
Alug 863abe86ca oops 2024-09-07 20:09:49 +02:00
Alug f54d2fb0fe clean up and improve ogl portals 2024-09-07 20:09:45 +02:00
Alug 8824ba3824 this is literally broken and noone knows about it anyways lol 2024-09-07 17:52:24 +02:00
Alug 8a8db796be Show a console error if the gamestate contains too many tables 2024-09-07 17:30:08 +02:00
Alug 4f532b766f this needs to be shifted 2024-09-07 17:04:06 +02:00
Alug e175a4e00b guh 2024-09-07 16:57:41 +02:00
Alug 473e843142 this should use angleturn
uhhh
2024-09-07 16:46:29 +02:00
Alug ef8e71cb11 set camera angle to player angle in CL_ReloadReceivedSavegame
hope i did this right lol
should hopefully fix more jarring visual stuffs
2024-09-07 16:28:17 +02:00
Alug ea985151dd dont rerun levelload executors when gamestate resent 2024-09-07 16:27:35 +02:00
Alug 62fae0ad8b dont print "Map is now" everytime you resynch from gamestate resend 2024-09-07 16:27:32 +02:00
Alug f9210ee3bc smol fixes for gamestate resend in P_SetupLevel
- dont reset cameras during gamestate resynch
- dont reinit director during gamesate resynch
- dont reset view interpolators aswell
- dont reset localaiming aswell

should make resynching less jarring visually hopefully
2024-09-07 15:35:41 +02:00
indev d5101dd0b2 Document changes to lua P_PlayRinglossSound and K_PlayHitEmSound functions 2024-09-07 11:47:09 +03:00
Alug 2a7940bfd1 Merge branch 'Saturn-Next' into absolutehell 2024-09-06 22:37:53 +02:00
Alug 047d38daab Merge branch 'noZ_unlock' into Saturn-Next 2024-09-06 22:37:39 +02:00
Alug 2d61f5c861 add compiler flags NOSATURNSYNCH, NOSATURNJOIN and NOSATURNPAK
not building with SATURNSYNCH also will disable SATURNJOIN since it makes not much sense to have that when synch stuff is unused
2024-09-06 21:41:53 +02:00
Alug 750f305c46 % 2024-09-06 21:06:06 +02:00
Alug 51b79e58d3 smol cleanup + add comments 2024-09-06 21:05:33 +02:00
Alug 915b4e9d15 set netgame save stuff to false for replays
to retain max vanilla compat for replays
dont want those breaking between clients
2024-09-06 21:05:30 +02:00
Alug c9c0c06763 reserve saturn packet even if unused
to not cause any weird isssues if either one is undefined and stuff like that
2024-09-06 20:36:27 +02:00
Alug 406037dabe menu offset stuff for if not using SATURNSYNCH 2024-09-06 20:06:57 +02:00
Alug d9affe2331 oops again 2024-09-06 19:59:45 +02:00
Alug 6df675523f hide gamestate resynch stuff behind SATURNSYNCH ifdef 2024-09-06 19:55:34 +02:00
Alug 65e66e8ace oops 2024-09-06 19:55:32 +02:00
Alug 5efb0c7136 put saturn specific join allow stuff behind SATURNJOIN define
so it can be seperate from SATURNPAK
2024-09-06 19:25:02 +02:00
Alug 1793340474 Merge branch 'Saturn-Next' into absolutehell 2024-09-06 19:13:31 +02:00
Alug d10db6d1d2 make this completely toggable actually 2024-09-06 18:51:06 +02:00
Alug 9eefbcea72 only save demo in map command if you atleast spend 35 seconds in one map 2024-09-05 18:34:50 +02:00
Alug d56b70a8e7 toggle for saving replays on changing to same map 2024-09-05 10:52:45 +02:00
Alug 54ebb9dfec test also save replay on mapchange command 2024-09-05 10:52:42 +02:00
Alug 43b6597ec0 this should also check for screentex cvar value 2
dont run certain postprocessor effects when you dont have screentextures enabled
2024-09-04 23:45:08 +02:00
Alug b7d887d610 add a little bit of safety to R_SetupFrame 2024-09-04 23:31:54 +02:00
Alug ff9b35ab45 remove IFCHANGED macro, check directly in R_Lerp funcs + inline those
basically does the same thing lol just looks better
2024-09-04 18:49:16 +02:00
Alug 20b5175180 scale precip momz with mobjscale when cv_mobjscaleprecip enabled 2024-09-04 18:48:13 +02:00
Alug 596c8e2ecc also scale precip sprite with mobjscale when cv_mobjscaleprecip enabled 2024-09-04 18:48:08 +02:00
Alug 94218a6549 only call HWR_RenderPlayerView in ogl explictly 2024-09-04 18:48:05 +02:00
Alug 2d36f798e7 Merge branch 'Saturn-Next' into absolutehell 2024-09-04 15:26:42 +02:00
Alug 853004dad9 smol cleanup for led stuff again 2024-09-04 15:26:31 +02:00
Alug 0cc86430ca smol cleanup hw_shaders 2024-09-04 15:26:28 +02:00
Alug 8760886f57 smol cleanup p_map 2024-09-04 15:26:24 +02:00
Alug 821669d03d Revert "optimize z position checking for mobjs without collision and camera"
This reverts commit c11d925580.
2024-09-04 15:23:28 +02:00
Alug 17f8996afc revert pretty much all mobj changes for now
might reapply them some other time, but since we need to maintain vanilla compat as much as possible gonna revert crap
kinda sick of desynching stuffs and honestly most the mobj stuff rarely ever crashes
2024-09-04 15:23:14 +02:00
Alug 7ef4eedd06 Revert "optimize pointon functions"
This reverts commit 94ddd01427.

may be readded in v7.1 
since this is pretty sensitive code and i dont want to desynch or crap so this def needs more testing
2024-09-04 15:04:54 +02:00
indev df6a31767e Make server send serverinfo packet so client can know server name even when connecting just by ip 2024-09-02 21:47:02 +03:00
Alug 882a3b7824 revert this 2024-09-02 17:58:35 +02:00
Alug 94ddd01427 optimize pointon functions 2024-09-02 17:46:41 +02:00
Alug e614decae0 optimize MT_TUBEWAYPOINT
Store waypoints at map load instead of iterating through the thinker list to find them

https://git.do.srb2.org/STJr/SRB2/-/merge_requests/938
2024-09-02 17:45:57 +02:00
Alug e0f46ea80d oop 2024-09-02 17:44:55 +02:00
Alug 3391018606 some stuffs from lugstuff
mostly just cleanup and smoler optimizations
2024-09-02 17:40:05 +02:00
Alug 61fd11f7cd those are unused 2024-09-02 14:23:24 +02:00
Alug 4a469aebdc dont draw precip in skyboxes in opengl like software does 2024-09-02 14:23:22 +02:00
Alug 341815c0ed this can be static 2024-09-02 14:23:19 +02:00
Alug 5830270bda optimize polyobject spawn
should speed up level loading with maps with polyobjects
thx geezeedoom
2024-09-02 14:23:16 +02:00
Alug 8a1ff58dff free texture patchlumps proper in R_LoadTextures
drastically reduces ram usage
2024-09-01 20:43:40 +02:00
Alug 0523d98a1c Test: remove Z_Unlock and proper free some stuff 2024-09-01 20:41:42 +02:00
Alug 983af4e7a1 Merge branch 'Saturn-Next' into absolutehell 2024-08-31 20:19:42 +02:00
Alug f8bec7296c no idea why i put those here 2024-08-31 20:19:12 +02:00
Alug 2be4bd3d6a update camera when paused and changing cam dist or height 2024-08-31 20:15:41 +02:00
Alug 7d74296604 throw menu bg conditions into own function since it s terrible 2024-08-31 19:53:09 +02:00
Alug 0504a355d2 add camera options menu 2024-08-31 19:52:35 +02:00
Alug 036df817f1 give camera lookback a toggle + extra option 2024-08-31 18:46:01 +02:00
Alug ba331caff6 when looking back camera momentum should inherit the mom of the player
makes using shoes or any boost stuff less jarring when looking back
2024-08-31 18:45:58 +02:00
Alug e2ac9708cb super tiny cleanup m_menu again 2024-08-31 18:45:55 +02:00
Alug 783ce7bada give camera lookback a toggle + extra option 2024-08-31 18:45:47 +02:00
Alug 594931e07e when looking back camera momentum should inherit the mom of the player
makes using shoes or any boost stuff less jarring when looking back
2024-08-31 18:45:43 +02:00
Alug 3e245d49d8 super tiny cleanup m_menu again 2024-08-31 18:45:36 +02:00
Alug 76ed4aae12 forgor speedo doesent draw in splitscreen + change offsets 2024-08-31 18:11:06 +02:00
Alug 565f36d4b7 forgor speedo doesent draw in splitscreen + change offsets 2024-08-31 18:10:59 +02:00
Alug 75a94b050d Merge branch 'Saturn-Next' into absolutehell 2024-08-31 18:01:34 +02:00
Alug 91fac0880d add battlespeedometer to saturn hud menu + apply offset to bumper gfx when enabled 2024-08-31 18:01:22 +02:00
Alug 42fa29f78b make timer flash at 99´59´99 again 2024-08-31 17:39:30 +02:00
Alug 28d8e84d6b this can be static and inlined 2024-08-31 16:53:33 +02:00
Alug c11d925580 optimize z position checking for mobjs without collision and camera
idk how much this does tbh
only for stuff without collision since it may desynch otherwise

based on
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2214

and

https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2250
2024-08-28 02:35:42 +02:00
Alug d7c1b12dbd changes to saturn menu
-Add new Saturn Hud options menu to declutter normal saturn options
- If in any of the hud options the game will force display the kart hud and disable the fade background
- i hate m_menu
2024-08-27 18:26:18 +02:00
Alug e2c3d5b20d respawn precip when toggling any of its settings 2024-08-27 16:41:19 +02:00
Alug 8581d87e41 toggle to scale weather with mobjscale
toggle since it may tank performance on certain maps for some + may make visability worse
2024-08-27 16:27:28 +02:00
Alug fe853d4bee fix compileur warnings
idk if this is right lol
2024-08-27 06:07:38 +02:00
Alug b8038130b8 fix conflict 2024-08-27 05:51:35 +02:00
Alug 31c5d8d67c fix precip switching 2024-08-27 05:44:31 +02:00
Alug a2f4430378 stuff 2024-08-27 05:44:27 +02:00
Alug a8e4f6e2ea Reapply "lol"
This reverts commit 340450a67e.
2024-08-27 05:44:20 +02:00
Alug aac89f270b Reapply "optimize precip thinker"
This reverts commit dd73787c8b.
2024-08-27 05:44:13 +02:00
Alug 9022e02ccd fix potential crash in P_TryCameraMove for dedi servers 2024-08-23 15:31:58 +02:00
Alug 5ddd2e4fbc cleanup P_DoSuperTransformation
its still exposed to lua for whatever reason
so cant really remove crap kek
2024-08-23 15:31:55 +02:00
Alug 3b500add73 cleanup birdmusic crap again
music_resync_powerups_only literally didnt do shit lol
removed some other unused crap
changed some conditions to better check for stuff
etc idk
i just rather remove this whole thing at this point but oh well
2024-08-23 15:31:52 +02:00
Alug 4a6635f8a8 Revert "smol interp fixes"
This reverts commit 77a2976d05.
2024-08-22 14:54:43 +02:00
Alug af6393af50 forgor 2024-08-21 15:38:46 +02:00
Alug 6a14543e9e cleanup FBO on shutdown + make some stuff static 2024-08-20 23:26:43 +02:00
Alug 3d827570e6 more changes to FBO stuff
now it wont ever do anything when disabled
also properly deletes the FBO when disabling it
2024-08-20 23:18:35 +02:00
Alug 9f8eb07442 revert this in y_inter 2024-08-20 21:33:41 +02:00
Alug 31c64b63de make this more robust ig 2024-08-20 03:57:49 +02:00
Alug cf5c0ca5f7 forgor return 2024-08-19 21:54:22 +02:00
Alug f0d91a9708 do not constantly query ogl extensions 2024-08-19 21:48:56 +02:00
Alug 0f94a26dc6 dumbass workaround for issues on xwayland with nvidia
this will run automatically when it detects an nvidia gpu even with gr_framebuffer disabled lol

we have safeguards everywhere so shouldnt be an issue
2024-08-19 19:37:02 +02:00
Alug cded0af061 change some stuff for saturn 2024-08-19 17:51:35 +02:00
NepDisk fffa7e44c5 Appimage compile pt2 2024-08-19 17:51:31 +02:00
NepDisk a38aee7fe3 Appimage compile pt1 2024-08-19 17:51:29 +02:00
Alug 4d03fa06e1 raise maxpng res 2024-08-19 17:51:26 +02:00
Alug dcd470b2e1 Merge branch 'Saturn-Next' of https://github.com/Indev450/SRB2Kart-Saturn into Saturn-Next 2024-08-19 14:58:08 +02:00
Alug 2259ef3f71 Update LUASTUFF
idk i suck at explaining lmao
but atleast those should be mentioned
2024-08-19 14:58:01 +02:00
indev af18e2b7d1 Don't execute exitgame command on dedicated servers 2024-08-19 14:14:59 +03:00
indev 9e8d79f246 Fix compilation when SDL_VERSION_ATLEAST(2,0,18) is false (if its false then 'else' statement would not be valid) 2024-08-19 14:14:17 +03:00
Alug 5b480be6dc smol cleanup for downsample stuff 2024-08-19 12:16:32 +02:00
Alug 54d897fc33 smol i_video cleanup 2024-08-19 12:15:47 +02:00
Alug cfebe422d3 Fix typo 2024-08-19 12:00:27 +02:00
NepDisk fcc5c13274 Fix Compile without with out of date SDL 2024-08-19 11:59:48 +02:00
Alug 707448193b Fix some tooltips so they don't go offscreen
grr git not crediting neppy for some reason
2024-08-19 11:59:45 +02:00
NepDisk 84a1f86037 Allow the control binds menu to use lower case 2024-08-19 11:59:42 +02:00
NepDisk b2129011c2 Fix gamepad menus for green reses via scrolling 2024-08-19 11:59:38 +02:00
Alug 9d359ef8c5 use qsort instead of qs22j for vissprite sorting
seems to be actually faster in this case
2024-08-19 11:59:35 +02:00
Alug 87a2b74a88 this should not be in HWRENDER ifdef 2024-08-19 11:59:33 +02:00
Alug d5388e8dad fix NOHW compile 2024-08-19 11:59:29 +02:00
Alug fe7677c5c8 Revert "Do not access memory on misaligned addresses"
This reverts commit 112716dae5.
2024-08-19 11:59:25 +02:00
Alug f36ac0bb4b this should not be in HWRENDER ifdef 2024-08-17 20:03:35 +02:00
Alug d24bcc9fd7 fix NOHW compile 2024-08-17 20:01:46 +02:00
Alug daf8151a32 Revert "Do not access memory on misaligned addresses"
This reverts commit 112716dae5.
2024-08-17 19:56:14 +02:00
Alug b432491d34 throw saturnpacket and join stuff behind "SATURNPAK" ifdef, disable it for now 2024-08-17 19:54:56 +02:00
Alug 1313b4c112 Merge branch 'Saturn-Next' into absolutehell 2024-08-17 19:43:42 +02:00
Alug 164d7399d2 smol fix to slope light 2024-08-17 16:31:09 +02:00
Alug 87176cfd0b better slope light 2024-08-17 16:09:43 +02:00
Alug bab96b73e0 smol changes 2024-08-17 16:09:40 +02:00
Alug f10db3900a Use a const for the contrast 2024-08-17 16:09:37 +02:00
Alug 7d4b1d0852 Update light offset on polyobjects when they rotate 2024-08-17 16:09:34 +02:00
Alug 6ab99218f2 precalc fakecontrast on mapload 2024-08-17 16:09:31 +02:00
indev 1959edf357 Always allow typing replay search query, similar to addon search 2024-08-16 01:58:33 +03:00
indev 6fc2681b34 Add 'Hit Em Delay' option in menu 2024-08-16 01:51:29 +03:00
indev 02dcf85c46 Prioritize display players when assigning delayed 'hit em' 2024-08-16 01:51:29 +03:00
indev 89f0521cce Oops forgot to change that
Dunno if this function ever gets called for non-player objects but just in case
2024-08-16 01:51:28 +03:00
indev 35029e826f Add delayed hit em sound (like in DRRR), togglable via 'karthitemdialog' cvar 2024-08-16 01:51:28 +03:00
Alug f6c170b53c add onchange func for led + fix rumble onchange 2024-08-16 00:34:16 +02:00
Alug 7991a5ce5e Merge branch 'Saturn-Next' into absolutehell 2024-08-16 00:09:46 +02:00
Alug 3973851dd2 add toggles for gamepad led stuff 2024-08-16 00:09:08 +02:00
Alug f6361e29bd reset rumble when player is exiting 2024-08-16 00:08:52 +02:00
Alug 9f8db631f0 reset rumble when player is exiting 2024-08-15 23:46:02 +02:00
Alug ada1de7ad6 dont change connect behaviour regardless of client + smol cleanup and fixes
should hopefully fix any remaining issues
2024-08-15 23:44:48 +02:00
Alug ac55d473e7 smol cleanup 2024-08-15 17:34:58 +02:00
Alug 2100f11af7 remove duplicates in ResetNode 2024-08-15 17:34:55 +02:00
Alug ea1b5cd1a9 Merge branch 'Saturn-Next' into absolutehell 2024-08-15 17:34:50 +02:00
Alug e100fff230 check for changed state before everything else 2024-08-15 16:38:19 +02:00
Alug 5393ac526a move this in hw_main 2024-08-15 16:38:12 +02:00
Alug 808f7baf53 move this in coindition 2024-08-15 16:38:08 +02:00
Alug 35f54822be smol cleanup HWR_RenderPlane 2024-08-15 16:38:05 +02:00
indev 94714fe571 Fix increasing number of viewpoints in replays by more than 1 (like pressing '3' with only one viewpoint) crashing game 2024-08-14 16:08:39 +03:00
Alug 5bdf8698bd completely disable director in splitscreen
will eventually get to splitscreen support lul
2024-08-14 14:45:42 +02:00
Alug 2398e60e89 fix director lol 2024-08-14 14:10:40 +02:00
Alug b4e563bfd6 Merge remote-tracking branch 'origin/Saturn-Next' into absolutehell 2024-08-11 11:22:21 +02:00
indev a56ce09923 Fix LUA_EvalMath warnings being broken sometimes 2024-08-11 12:01:10 +03:00
Alug 68c7a6bd93 Merge branch 'Saturn-Next' into absolutehell 2024-08-09 19:48:28 +02:00
indev b4612d6bd4 Fix smol memory leak in replay search thread oops 2024-08-09 19:45:16 +03:00
indev c2cfc96d87 Load replay titles in separate thread 2024-08-09 16:05:48 +03:00
indev 8db99291ac Visual improvements for replay search 2024-08-08 22:40:22 +03:00
indev c9aa764444 Add alternative button ('/') to open replay search 2024-08-08 22:09:30 +03:00
indev ee4869993d Oops shouldn't z_free that 2024-08-08 22:03:00 +03:00
indev 0758cf39c2 Greatly improve replay search perfomance by only reading replay name, and not entire file. Increase default search rate up to 1000 2024-08-08 22:01:19 +03:00
indev bb0c777cac Fix M_HutCheckReplays still being called in menu (hopefully) 2024-08-08 21:31:09 +03:00
indev 0bd2c49dae Search replays using title instead of filename 2024-08-08 18:43:03 +03:00
indev d25c6fa0b2 Test replay search 2024-08-08 16:51:39 +03:00
Alug 8f2d36aab0 smol cleanup 2024-08-05 12:40:06 +02:00
indev 6c764a8487 Fix chat not saving in console
Not sure why it was working before but broke now, maybe making va use snprintf instead of sprintf broke that
2024-08-04 16:57:24 +03:00
Alug dd6056a07a check if theres even controllers in rumble ticker 2024-08-04 14:53:24 +02:00
Alug a83d364ba7 update led status in main loop
makes this whole ordeal alot less hacky tbh
player color always gets updated if it changes
still allows for directly setting led color elsewhere by using G_SetPlayerGamepadIndicatorColor directly
hoping crap doesent cost any perf but honestly shouldnt
2024-08-04 14:53:21 +02:00
Alug 9c4b2b0abf no need for this 2024-08-04 14:53:18 +02:00
Alug 4235801ae4 proper pass fwrapv to gcc 2024-08-04 14:53:16 +02:00
Alug 6791f2e883 forgor 2024-08-04 12:50:39 +02:00
Alug caeec35c66 fix warning in director 2024-08-04 12:50:02 +02:00
Alug 7b95df150a support gcc 14.2.1 + fix some stuff 2024-08-04 12:49:59 +02:00
Alug 852651cefe better statdisplay offsets in splitscreen
lots of trial and error.....
2024-08-03 23:50:03 +02:00
Alug 22b9915ad7 smol fix to viewroll interp 2024-08-03 22:50:46 +02:00
Alug 0f994a0676 expose viewroll to lua 2024-08-03 22:50:42 +02:00
indev 5d68fd690b Add ctrl-w (delete word), ctrl-left (move to word beginning) and ctrl-right (move to word end) shortcuts for console 2024-08-03 23:19:54 +03:00
Alug c55bc6db4d Merge branch 'Saturn-Next' into absolutehell 2024-08-03 21:46:13 +02:00
Alug a77d8b4762 fix spriteshadows 2024-08-03 21:44:28 +02:00
Alug 23596d2516 add controller rumble to menu 2024-08-03 21:26:08 +02:00
indev 352b958da1 Fix few remaining uses of this_scale and ty
Not too sure if this is correct tho
2024-08-03 22:06:18 +03:00
Alug e9f2ef1422 Merge branch 'Saturn-Next' into absolutehell 2024-08-03 20:48:37 +02:00
Alug 7baa711744 this somehow was not reverted 2024-08-03 20:48:31 +02:00
indev 65e274a65f Smol safeguard for R_PointToDist2 2024-08-03 21:27:25 +03:00
Alug a874691bce Merge branch 'Saturn-Next' into absolutehell 2024-08-03 18:02:42 +02:00
Alug d60d101e75 dont set localangle or smth 2024-08-03 18:02:36 +02:00
Alug 8d9a648dce misplaced this 2024-08-03 18:02:21 +02:00
Alug 2332cc76ee Merge branch 'Saturn-Next' into absolutehell 2024-08-03 17:44:05 +02:00
Alug 5c3a2bf5be make inline macros for pointtodist 2024-08-03 17:43:57 +02:00
Alug 5e2b50c49e add very light rumble to brakedrift 2024-08-03 17:43:53 +02:00
Alug 3a56bf2bb5 fix up ogl sprite drawers, fix floor clip fix remove ty and reduntand hires stuff 2024-08-03 17:43:47 +02:00
Alug 3f4afb604a check if displayplayer skincolor is availible before returning it 2024-08-03 17:43:25 +02:00
Alug 77a2976d05 smol interp fixes 2024-08-03 17:43:17 +02:00
Alug 0eda508cf6 revert some lightlevel stuff in hw_main 2024-08-03 17:43:13 +02:00
Alug 4301e0f750 make this more explicit 2024-08-03 17:43:09 +02:00
Alug c5eb81c26a remove redundant check 2024-08-03 17:43:05 +02:00
Alug 47d3cf3e62 change rumble ticker loop a bit 2024-08-03 17:42:59 +02:00
Alug 41dc34efe8 set default duration to 84 2024-08-03 17:42:53 +02:00
Alug 4acbca4c8f do not constantly reset rumble
so it can work from lua
2024-08-03 17:42:47 +02:00
Alug 11329d5794 throw rumble ticker into right place 2024-08-03 17:42:44 +02:00
Alug b0880607d4 fix cassting, make one tic duration default, but can still pass ms to it 2024-08-03 17:42:39 +02:00
Alug 2afa18bbdd add duration field to G_PlayerDeviceRumble
duration is in ms
2024-08-03 17:42:35 +02:00
Alug acad230daa expose rumble and led to lua 2024-08-03 17:42:31 +02:00
Alug 49fcf3e486 rename to G_SetPlayerGamepadIndicatorColor 2024-08-03 17:42:26 +02:00
Alug acb0144742 splitscreen support for rumble 2024-08-03 17:42:21 +02:00
Alug 6efc8fdad3 add splitscreen support to gamepad led
also add more proper device check
2024-08-03 17:42:18 +02:00
Alug c75e6ba63c add basic rumble support for gamepads 2024-08-03 17:42:14 +02:00
Alug 7bd1808c88 change gamepad rgb color when switching viewpoints 2024-08-03 17:42:04 +02:00
Alug fe8e00895a simplify reduntand condition 2024-08-03 17:42:00 +02:00
Alug 9dc5e3d338 ressting to defaultcolor should also set led color 2024-08-03 17:41:29 +02:00
Alug 694c1ad808 change color light when you cycle between colors in player setup 2024-08-03 17:41:18 +02:00
Alug 754b028623 give rgb custom color support, change rgb light color earlier in Color_OnChange
so it always unconditionally changes the color
also
2024-08-03 17:41:14 +02:00
Alug 4423fb300f set controller rgb to playercolor
eh only for 1st player now no splitscreen support
idk if everything here is even correct
2024-08-03 17:41:06 +02:00
Alug 5c7d9327e3 SDL: only react to window focus changes if state actually changes 2024-08-03 17:40:41 +02:00
Alug cd72bce3cb dont reload palette until config was loaded 2024-08-03 17:40:34 +02:00
Alug 64ef0465d5 calloc soundchannels insteal of mallocing 2024-08-03 17:40:28 +02:00
Alug fe6ad4f762 Do not run ST_Ticker if dedicated 2024-08-03 17:39:54 +02:00
Alug 4b69b39d39 HMS_fetch_rules: Return NULL if the curl connection failed, instead of producing garbled rules 2024-08-03 17:39:44 +02:00
Alug a6fc237c88 try to prevent potential infinite SIGARBT hang in signal handler 2024-08-03 17:39:40 +02:00
Alug 2448a0b735 Cache pk3 central directory and Refactor ResFindSignature to work in chunks
https://github.com/KartKrewDev/RingRacers/commit/8ca2dc77e75b1ba8c511380257f0bbaf6d21c27b
https://github.com/KartKrewDev/RingRacers/commit/dedd0047bd8f9f73aba4defc19c429af7c987983
2024-08-03 17:39:36 +02:00
Alug 685220140a fix potential crash on nix while quitting 2024-08-03 17:39:32 +02:00
Alug 99779629d0 dont always reset texture depth in ogl 2024-08-03 17:39:27 +02:00
Alug 9fceabed8f Ensure Z_Malloc provides same alignment as libc 2024-08-03 17:39:22 +02:00
Alug e11363db3a Fix sound falloff calculation overflow 2024-08-03 17:39:17 +02:00
Alug 023cade51d smol fix to frameskipping 2024-08-03 17:39:12 +02:00
Alug d675b98330 Revert "Fix mobj reference management of player->mo"
This reverts commit c5ec61baa5.
2024-08-03 17:38:15 +02:00
Alug b3f16e935d Revert "more mobj reference fixes + cleanup"
This reverts commit bd8ff77fe0.
2024-08-03 17:37:46 +02:00
Alug 5b9e179017 Revert "dont access delayremoved thinkers"
This reverts commit df9ad5a31f.
2024-08-03 17:37:12 +02:00
Alug 6f53263107 Revert "Clean up mobj and thinker removal"
This reverts commit 048ccf52b0.
2024-08-03 17:37:06 +02:00
Alug fd797436fa Revert "fix declaration"
This reverts commit 8f195530b5.
2024-08-03 17:36:53 +02:00
Alug 96ee117657 Revert "more reference fixes"
This reverts commit 94bd1cb37b.
2024-08-03 17:36:31 +02:00
Alug 8b60fb6b6c revert this 2024-08-03 17:36:07 +02:00
Alug 67542d3cf1 i didnt knew k_positiondelay exists 2024-07-29 20:16:21 +02:00
Alug 41e97ffa79 another smol fix to director 2024-07-29 16:40:43 +02:00
Alug ffcff99a79 lower breakawaydist in director 2024-07-29 15:42:20 +02:00
Alug 48bcaacada fix K_DrawDirectorDebugger 2024-07-29 15:42:17 +02:00
Alug 01b060b0fe cleanup k_director 2024-07-29 15:42:15 +02:00
Alug 51ce092a6a lower pinchdist in director
since we cant get an accurate value for distance to finish line, this should do it perhaps
2024-07-29 15:42:12 +02:00
Alug d09e02721b e 2024-07-27 15:56:56 +02:00
Alug 88b81aa28b e 2024-07-27 15:56:51 +02:00
Alug 84c4f4f428 Merge branch 'Saturn-Next' into absolutehell 2024-07-27 15:49:46 +02:00
Alug ab5bc92a95 Revert "raise MAXVISSPRITES for 64-bit again"
This reverts commit d5258786e5.
2024-07-27 15:49:39 +02:00
Alug b44dd3edf0 Merge branch 'Saturn-Next' into absolutehell 2024-07-27 15:04:09 +02:00
Alug 80498a78ea lagless cam toggle 2024-07-27 15:03:59 +02:00
Alug 40663eb2b5 lagless cam test 2024-07-27 15:03:55 +02:00
Alug dca2827154 this is not a server cvar lol 2024-07-27 15:03:43 +02:00
Alug eec069b4e8 Merge branch 'rrdirectorport' into Saturn-Next 2024-07-27 14:42:26 +02:00
Alug 26eedc3341 small change to director for battle 2024-07-27 14:39:08 +02:00
Alug b19cefee3c Merge branch 'Saturn-Next' into rrdirectorport 2024-07-27 14:39:04 +02:00
Alug fb54b969d1 toggle for laptimes 2024-07-27 14:38:58 +02:00
Alug 034724b03e Show last lap time on HUD
god this is kinda ass lol
doesent work when you join midgame so disabled for there
2024-07-27 14:38:53 +02:00
Alug b80762eaf5 rename draw dist settings 2024-07-27 14:38:45 +02:00
Alug d5258786e5 raise MAXVISSPRITES for 64-bit again 2024-07-27 14:38:42 +02:00
Alug 9bfe2d3138 add more sprite draw dist settings for 64bit clients 2024-07-27 14:38:38 +02:00
Alug ae3b3f750d when no autoload config is found skip everything in D_AddAutoloadFiles
stuff doesent need to run if theres nothing to autoload so things can be skipped
2024-07-26 15:03:17 +02:00
Alug f83090e299 when no autoload config is found skip everything in D_AddAutoloadFiles
stuff doesent need to run if theres nothing to autoload so things can be skipped
2024-07-26 15:03:12 +02:00
Alug 3e4f497cbc Merge branch 'Saturn-Next' into absolutehell 2024-07-26 14:29:26 +02:00
Alug ce2398fdb7 add some extra safety to orbit and bananachain funcs 2024-07-26 14:29:14 +02:00
indev f545cce6fe Add check for if lua state exist in UnArchiveExtVars, since server can have local luas that may add player/mobj fields into savegame 2024-07-26 14:29:10 +02:00
Alug f614725fcb some cleanup 2024-07-26 14:29:03 +02:00
Alug 59e4f9ce4a let autoload run later to mitigate server join issues
itll now run at a similar place to postautoload
this may hopefully prevent some issuess with freeslotting lua
however sadly this makes menu replacements not work at startup anymore
2024-07-26 14:29:00 +02:00
Alug dff6b15263 fix fail condition 2024-07-26 14:28:57 +02:00
Alug 977ee8ccfc make backup of kartconfig before writing to it 2024-07-26 14:28:54 +02:00
Alug 161815e6fb Merge branch 'Saturn-Next' into absolutehell 2024-07-24 15:02:42 +02:00
Alug 8dda864909 toggle palrendering and fbo off if screen textures are disabled 2024-07-23 20:32:18 +02:00
Alug f6f9542d6e add cam check here 2024-07-23 20:32:16 +02:00
Alug 6655c0d881 reset tilt when respawning 2024-07-23 20:32:13 +02:00
Alug 98c8176d59 simplify this 2024-07-23 20:32:10 +02:00
Alug 2e7f64458d forgor this 2024-07-23 20:32:07 +02:00
Alug d6a9cdc452 fix up bird screen tilting
removes old lerp variables that did nothing
properly interpolated viewroll
made it proper adjust to mobjscale
doesent roll view when spectating
general cleanup
2024-07-23 20:32:05 +02:00
Alug 17dbe77cd3 allowjoin now sets saturnjoin to its value use CV_StealthSet to prevent
its only for scripts pretty much so no need to toggle it seperately
2024-07-23 17:45:27 +02:00
Alug 4b71d9a48d add "allowsaturnjoin" cvar to let toggle allowjoin for saturn clients seperately 2024-07-23 17:45:25 +02:00
Alug 1f41cb9a3f e 2024-07-23 00:59:20 +02:00
Alug c6351c6c53 add to menu 2024-07-23 00:55:55 +02:00
Alug 283218f2d6 changuer how this works
counter decrements - 1 double the cooldown time
2024-07-23 00:47:39 +02:00
Alug 4de22e9d66 add gamestateresendattempts
so you can specify how often the game tries to resend gamestate to player in given time
so they dont get stuck in a synch loop
this is gamestateresendattempts value in the time of resynchcooldown *2
2024-07-23 00:47:34 +02:00
Alug b4a737d910 Test: Restore save_p after P_LoadLevel
P_LoadLevel calls some functions that save gamedata and
unset save_p.

this is kinda hacky but i perhaps will port the redone save buffer sometime
2024-07-23 00:47:13 +02:00
Alug 0f2c17324a Merge branch 'Saturn-Next' into absolutehell 2024-07-23 00:47:03 +02:00
Alug 6a1b10eaf9 Make polyobjects agree with sector lighting/colormap like a FOF. 2024-07-23 00:46:58 +02:00
Alug 824211c2f6 prevent potential level load crash 2024-07-23 00:46:54 +02:00
Alug 02d115f119 don't check flippedness in HWR_RotateSpritePolyToAim if the mobj is actually a precipmobj! 2024-07-23 00:46:52 +02:00
Alug b44617413b gitignore deez 2024-07-22 12:59:07 +02:00
Alug c447f25e0a add missing copyright stuff to k_director 2024-07-22 12:57:11 +02:00
Alug 34ce92d9fa Merge branch 'Saturn-Next' into absolutehell 2024-07-21 23:29:11 +02:00
Alug 7ad5dc61ac Revert "Free mipmaps before freeing tags"
This reverts commit 2437c5a19a.
2024-07-21 23:25:10 +02:00
Alug 7072332ab7 clean director up a little
toggling director now resets cooldown so it switches players immediately
also consolidated condition to be active
and ensure DirectorFollowAttack doesent always run when it doesent need to be
2024-07-21 22:50:04 +02:00
indev 60e933eb00 Add director hud indicator 2024-07-21 22:49:59 +02:00
Alug 43e3d07acb fix cmake 2024-07-21 22:49:54 +02:00
indev 228252ee6f Add bind for director toggle 2024-07-21 22:49:51 +02:00
Alug 56a919eb60 oops 2024-07-21 22:49:47 +02:00
Alug bfcb906b12 add stuff for directordebugger i forgor 2024-07-21 22:49:41 +02:00
Alug b94776063f only update director if consoleplayers specs or in demo playback
dont need to update this ever if we dont even use it lol
2024-07-21 22:49:38 +02:00
Alug 3f412373bc fix crash if everyone spectates 2024-07-21 22:49:35 +02:00
Alug e7d1858052 port director from RR 2024-07-21 22:49:31 +02:00
Alug bd106308fc revert this
doesent do anything but complicate stuff lol
2024-07-21 22:46:07 +02:00
Alug 6ec96b37bd remove hw_light 2024-07-21 22:38:57 +02:00
Alug 3653786e14 cleanup hw_main 2024-07-21 22:24:55 +02:00
Alug 5824d9e803 cleanup r_things a little 2024-07-21 22:24:51 +02:00
Alug 3ad3cdfa38 stop yelling clang 2024-07-21 22:24:49 +02:00
Alug efcd1df365 fix this oops 2024-07-21 22:24:46 +02:00
Alug aef62c45de smol cleanup
also check for splitscreen and if not dont run a for loop lul
2024-07-21 22:24:44 +02:00
Alug 94bd1cb37b more reference fixes 2024-07-21 22:24:41 +02:00
Alug f7bf3fe510 cleanup hw_main 2024-07-21 22:24:28 +02:00
Alug a771ebf0e8 cleanup r_things a little 2024-07-21 22:24:21 +02:00
Alug 6b4d02ae99 stop yelling clang 2024-07-21 22:24:15 +02:00
Alug 3e6cab1ec9 fix this oops 2024-07-21 22:24:11 +02:00
Alug 147c59c26b smol cleanup
also check for splitscreen and if not dont run a for loop lul
2024-07-21 22:24:09 +02:00
Alug db6f76d12d more reference fixes 2024-07-21 22:24:01 +02:00
Alug 86950c26d0 add check here too 2024-07-21 11:49:48 +02:00
Alug e1d4f10223 add "gamestatecooldown" cvar
to be able to change the cooldown between gamestate resends
2024-07-21 11:49:21 +02:00
Alug 01c1ae42a1 fix saturn packet going the wrong way 2024-07-20 18:30:10 +02:00
Alug 550871f576 smol cleanup 2024-07-20 18:21:19 +02:00
Alug 56fcca1f6b mark if node can receive savegame so it doesent run resynch code on em
should prevent some issues for when a client received gamestate but thinks it needs to be resynched getting stuck
2024-07-20 18:15:42 +02:00
Alug 930bde785c just reset everything resynchwise here 2024-07-20 16:24:36 +02:00
Alug 13aadc41ff should reset those here perhaps 2024-07-20 16:22:51 +02:00
Alug ea4998f666 add gamestate resend ontop of resynch code lmao
absolute hell
will fallback to just normal resynching when the client doesent send gamestate request packet
2024-07-20 16:17:19 +02:00
Alug 6f0e92e0d1 Merge branch 'Saturn-Next' into absolutehell 2024-07-20 15:02:41 +02:00
Alug a4085cb155 fix hoop midjoin crash in the dumbest way possible
cant figure out why it crashes so thisll do lol
2024-07-19 22:57:18 +02:00
Alug b7e77e10b6 improve virtual resource management 2024-07-19 22:57:16 +02:00
Alug 8f195530b5 fix declaration 2024-07-19 21:29:10 +02:00
Alug 048ccf52b0 Clean up mobj and thinker removal 2024-07-19 21:26:42 +02:00
Alug df9ad5a31f dont access delayremoved thinkers
uhhh
2024-07-19 21:26:02 +02:00
Alug 0b3284e23c fix ScreenCoords on 2 plyr splitscreen and shearing
+ remove non 16:10 hack since that issue was fixed elsewhere
2024-07-19 19:25:20 +02:00
Alug 36d598440a disable hudoffsets in splitscreen 2024-07-19 19:25:18 +02:00
indev 9cc42e6430 Add option to play power items sfx for growmusic and supermusic 2024-07-19 19:03:47 +03:00
Alug 3f5c19bffd add boolean to tell if node is saturn 2024-07-19 15:01:30 +02:00
Alug 800dbf5e78 add packet into packettypename 2024-07-19 15:00:45 +02:00
Alug 2b5db9ff3f make saturn packet reliable 2024-07-19 14:46:24 +02:00
Alug b07c8848ca make smol function for now 2024-07-19 14:43:19 +02:00
Alug 9bff8dd91f whoopss remove test stuff 2024-07-19 14:40:25 +02:00
Alug 19eee66c39 make a packet to tell if a joined client is on saturn
initial stuff
works and seems to be vanilla compatible
needs its own function and other things to be useful
2024-07-19 14:40:23 +02:00
Alug fbf7be8808 add audio buffer size into sound menu 2024-07-18 14:43:14 +02:00
Alug fcda4c1188 revert this in teleport 2024-07-17 22:19:11 +02:00
Alug deae234afa Revert "clean up mapload code a little more"
This reverts commit 79a5d174a5.
2024-07-17 12:21:05 +02:00
indev 82e33fd4e4 Attempt to fix possible use-after-free for awayviewmobj 2024-07-17 12:30:34 +03:00
Alug 15914c2f25 Skip over empty entries when populating vres, saving memory 2024-07-17 11:13:07 +02:00
Alug da64d3ccbf vres_GetMap: Count resources in folders up until next 0-length lump
justs in case the order of stuff may be weird
fixes keepmapmusic crash on some maps
2024-07-17 11:12:58 +02:00
Alug 79a5d174a5 clean up mapload code a little more 2024-07-17 09:21:15 +02:00
indev 295d9768ce Fix linedef 415 executing random text if script lump doesn't have null terminator 2024-07-16 16:42:32 +03:00
Alug 9490b1235d did not mean to add this lol 2024-07-16 10:43:55 +02:00
Alug 55eb984ccd remove this check 2024-07-15 21:58:00 +02:00
Alug 4b1a82e14e fix more warnings 2024-07-15 21:43:25 +02:00
Alug 3c224923e9 fix some warnings in clang 2024-07-15 21:19:25 +02:00
Alug 2c4f5a68b9 fix A_ action protottypes 2024-07-15 21:10:11 +02:00
Alug d324c917ad Revert "fix some clang warnings"
This reverts commit fea89de037.
2024-07-15 20:57:09 +02:00
Alug bd8ff77fe0 more mobj reference fixes + cleanup 2024-07-15 13:56:28 +02:00
Alug 35d40e1d37 ndef 2024-07-14 17:30:52 +02:00
Alug e9e281fd2a clean up some net stuff 2024-07-14 17:22:25 +02:00
Alug 2437c5a19a Free mipmaps before freeing tags
ŝhould hopefully fix some random Z_free crashes
2024-07-14 17:17:01 +02:00
Alug b9b4de929d this does nothing lol 2024-07-14 17:15:43 +02:00
indev 28fc55b653 Refactor music name scrolling in music test 2024-07-14 15:33:31 +03:00
Alug 8f4df0ceca version string otherwise i forger 2024-07-14 10:18:27 +02:00
Alug ecde8a5e8b shut up 32bit gcc 2024-07-14 10:17:47 +02:00
Alug 715b106c9e shut up windoze 2024-07-14 09:51:13 +02:00
Alug 2114afa536 inline M_Memcpy 2024-07-13 16:04:43 +02:00
Alug c78816a8d1 also use IFCHANGED macro for levelinterpolators
just looks a bit neater
2024-07-13 16:04:41 +02:00
Alug 28516c4833 fix NOHW compile 2024-07-13 14:55:10 +02:00
Alug 837ed3535d Revert "smol optimization to HWR_Addline"
This reverts commit e6359663b1.
2024-07-13 13:06:45 +02:00
Alug bcb332e88f Revert "shut up gcc"
This reverts commit 17a5c6ed06.
2024-07-13 13:06:42 +02:00
Alug f4be7a8034 Revert "dont do this with portals"
This reverts commit f949fa54af.
2024-07-13 13:06:39 +02:00
Alug e69413f1e8 smol cleanup 2024-07-10 19:31:35 +02:00
Alug ee6dcfc678 fix conflict 2024-07-10 19:31:22 +02:00
Alug d4370a1811 clean up P_SetupLevel a little more 2024-07-10 19:31:17 +02:00
Alug babf4ca06a Map data lump interface
cleans up code alot and stuff

https://git.do.srb2.org/STJr/SRB2/-/merge_requests/535
2024-07-10 19:30:38 +02:00
Alug ccf0905469 change when dynamic slopes run depending on if you joined midgame 2024-07-10 19:29:48 +02:00
Alug 970130e02b mitigate dynamic slope desynchs
Perform dynamic slope thinking before other thinkers.
2024-07-10 19:28:44 +02:00
Alug 6088fa5134 Clean up graphic menus
- Renamed Experimental Options to Advanced Options
- Fixed the tooltips not displaying
- Made it look good again
2024-07-10 19:25:49 +02:00
indev 33bc484d69 Call ServerJoin hook when consoleplayer becomes available, since it is needed for configs (which what this hook is created for) 2024-07-10 19:09:14 +02:00
indev 6bf113d0ff Add info about ServerJoin into LUASTUFF.md (so i don't forget to do it later) 2024-07-10 19:09:11 +02:00
indev 630d910a9e Add ServerJoin lua hook, which gets called when client joins a server (listen server hosts joining their server also count) 2024-07-10 19:09:08 +02:00
Alug 3c70963f56 only interpolate pitch and roll when using 3d models
sprites dont need this for now
2024-07-10 18:58:55 +02:00
Alug 4c4f6f6d80 dont think precip mobj angle ever changes 2024-07-10 18:58:52 +02:00
Alug f949fa54af dont do this with portals 2024-07-10 18:58:05 +02:00
Alug 17a5c6ed06 shut up gcc 2024-07-10 18:58:02 +02:00
Alug e6359663b1 smol optimization to HWR_Addline 2024-07-10 18:57:59 +02:00
Alug 405cef6a01 fix IFCHANGED macro 2024-07-10 18:32:22 +02:00
Alug d4886f8923 forgor this 2024-07-10 10:18:50 +02:00
Alug c5ec61baa5 Fix mobj reference management of player->mo
https://git.do.srb2.org/KartKrew/RingRacers/-/commit/d0719ef5ba86a1da32fed171d74eb76c7254f4f6
2024-07-10 10:18:46 +02:00
Alug 7a9ffa7ee8 test remove all the networking crap from rendering code 2024-07-10 10:13:53 +02:00
Alug 5ff665a073 remove those 2 from experimental video menu
no reason to ever toggle them off
2024-07-10 10:08:19 +02:00
Alug 3d4e078a90 another m_menu moment 2024-07-10 10:07:51 +02:00
Alug 8ef613ef9b remove cv_mobjssector
idk why it even checks for pointinsubsector
2024-07-10 10:06:31 +02:00
Alug 988a672dea remove cv_grfofcut
same story
2024-07-10 09:59:50 +02:00
Alug cca9c51315 remove cv_slopepegfix
same as the other ones
2024-07-10 09:57:23 +02:00
Alug 18aa3689d9 m_menu moment 2024-07-10 09:54:43 +02:00
Alug 59ab6572b1 remove cv_fofzfightfix
more bloat
2024-07-10 09:54:03 +02:00
Alug b6cf933159 remove R_Pointtoangle toggle
its bloat, the difference is negigble at best
2024-07-10 09:50:25 +02:00
Alug 48f36ca8f3 35/2 != 17 = 17.5 ? 2024-07-10 04:55:01 +02:00
Alug fea89de037 fix some clang warnings 2024-07-10 04:53:28 +02:00
Alug e2f1dd1ce8 a 2024-07-10 04:51:59 +02:00
Alug 48ac3353cb Maybe hopefully fix ogl masterserver crash thing
port from durr
2024-07-10 04:51:52 +02:00
Alug 63015c3a93 Merge branch 'Saturn-Next' of https://github.com/Indev450/SRB2Kart-Saturn into Saturn-Next 2024-07-10 04:50:06 +02:00
Alug c7bd402e54 Merge remote-tracking branch 'origin/packetstat' into Saturn-Next 2024-07-10 04:49:58 +02:00
Alug 0c6f9b6cc1 basic frame skipping system 2024-07-10 04:49:32 +02:00
Alug b5d7b84c1e more changes to dither
use interger for distance scales
start z factor earlier
rename halfResolution to endResolution
2024-07-09 09:06:19 +02:00
Alug cbbde8dea5 more tweaks 2024-07-08 21:43:06 +02:00
Alug 58dd0b7591 oops that actually didnt fade out at all lol 2024-07-08 21:43:03 +02:00
Alug d9f2535402 scale and fade out dither pattern
makes the image a bit cleaner and easier to look at in palrender
2024-07-08 21:43:00 +02:00
Alug 66eb201466 simplify this a little 2024-07-08 21:42:53 +02:00
Alug edbf20d975 oops this should be min 2024-07-08 21:42:49 +02:00
Alug 711d7dcfcc Always use system-specific path seperator
https://git.srb2.org/KartKrew/RingRacers/-/commit/0f16c61d04f42b463db5c8987571fc986ae6ce9f
2024-07-08 21:42:38 +02:00
Alug 219979e20b dont think kart even supports trivial maps
so no need to constantly check for this
2024-07-08 21:42:36 +02:00
Alug 27917a0e85 shut up gcc 2024-07-03 17:37:29 +02:00
Alug 4b4b2d5cbc some crap from asan 2024-07-03 17:37:16 +02:00
Alug 8d968d7f89 fix some clang warnings 2024-07-03 17:36:37 +02:00
Alug 9090a5cd73 Merge pull request #131 from Indev450/optimizeluaactions
Only call the Lua API for overridden actions
2024-07-03 11:10:15 +00:00
Alug 59a50994b8 Merge branch 'Saturn-Next' into optimizeluaactions 2024-07-03 13:10:03 +02:00
Alug ac99a6ac3c Merge pull request #132 from Indev450/lua-hooks-table
Store hooks in a table with integer keys instead of registry with string keys
2024-07-03 11:08:58 +00:00
Alug fa2257ad3b Merge pull request #133 from Indev450/luafieldlookup
Optimize field lookups in Lua metatables
2024-07-03 11:08:44 +00:00
NepDisk 66ce0871bc Fix automap multiplayer crash
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2488
2024-07-03 13:07:29 +02:00
Alug c59564723c Clamp lindex during vissprite light calculation
Mitigates against negative or very large xscale values causing lindex
to evaluate < 0, preventing a potential colormap indexing-related crash.
2024-07-03 13:07:17 +02:00
Alug 606717d253 prevent potential crash when trying to kill bananachain 2024-07-03 13:07:13 +02:00
Alug f73e84e0ad stuff 2024-07-03 13:07:04 +02:00
Alug fc01453544 scale dithering a little diff for a little smoother "fade" in pal render 2024-07-03 13:07:00 +02:00
Alug d37a1c799f change dither matrix to 4x4
a little grittier also smol cleanup
2024-07-03 13:06:57 +02:00
indev 3456ef96a7 Use a fake 2d array in dither shader so it compiles with older glsl versions (1.20 at least) 2024-07-03 13:06:53 +02:00
indev 40143375fc If shader compilation failed, print info log 2024-07-03 13:06:50 +02:00
Alug 7f34a1d83e add gr_lightdithering to shader
mhhm dithering
2024-07-03 13:06:47 +02:00
Alug 2316c117b1 improve teleport interpolation stuff 2024-07-03 13:06:44 +02:00
Alug 31b7482c3a small optimization to batching 2024-07-03 13:06:40 +02:00
Alug 0974625769 no need for this 2024-07-03 13:06:36 +02:00
Alug 266f5149b5 smoller opitmizations 2024-07-03 13:06:25 +02:00
Alug 008a9b9b3f optimize ogl polyobjs slightly 2024-07-03 13:06:22 +02:00
Alug ec2fd5b38f prevent crash in hw bsp 2024-07-03 13:06:19 +02:00
Alug d449a1b714 remove this again 2024-07-03 13:06:16 +02:00
NepDisk 0bd5ca5e3f Allow Users to Connect to Servers While In-Game
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2401/
2024-07-03 13:06:12 +02:00
NepDisk 06248e5388 Linux customshader compilation fix
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2418/
2024-07-03 13:06:09 +02:00
Alug 9c5a0ed7ee move HWR_LoadLevel to hw_main 2024-07-03 13:06:04 +02:00
Alug b199354167 this should be called on mapload 2024-07-03 13:06:02 +02:00
Alug 74ce725e3d oops 2 2024-07-03 13:05:59 +02:00
Alug 3d5e033158 oops 2024-07-03 13:05:56 +02:00
Alug ca58c1dee2 these appear to be unused so comment them out
dont need 6 arrays being allocated with MAXSKINS for nothing lul
2024-07-03 13:05:53 +02:00
Alug d51a69b052 Merge remote-tracking branch 'origin/lua-enumlib-sfxslotsfix' into Saturn-Next 2024-07-03 13:05:48 +02:00
Alug 1a96d96837 forgor this 2024-07-03 13:05:45 +02:00
Alug 2e7cd51ff8 limit localskins to 32
hope this doesent just die lol
2024-07-03 13:05:42 +02:00
Alug 112716dae5 Do not access memory on misaligned addresses
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2438
2024-07-03 13:05:39 +02:00
indev c13e780f29 Try fix glib preallocating too much space for sound freeslots 2024-06-20 16:55:58 +03:00
Alug c35887f5ee Revert "fix some interpolation issues"
This reverts commit e19f6f6656.
2024-06-17 12:52:09 +02:00
Alug 2f55c10ce3 Revert "more interp fixes"
This reverts commit 3a1a58bcfc.
2024-06-17 12:52:00 +02:00
Alug 0068312ce3 Revert "revert this part"
This reverts commit efe7dd23b6.
2024-06-17 12:51:57 +02:00
Alug ea49d92932 add missing HAVE_THREADS 2024-06-13 14:47:28 +02:00
Alug efe7dd23b6 revert this part
idk if that was netsafe so
2024-06-12 22:36:03 +02:00
Alug 3a1a58bcfc more interp fixes 2024-06-12 22:35:21 +02:00
Alug 953862f133 change this to int64 cause it fixes the intermission thing on high res
idk why that fixes it tbh but it does
2024-06-12 22:34:02 +02:00
Alug 41eb2ee969 fix oopsie on titled software wöter 2024-06-12 22:33:51 +02:00
Alug 225ecce676 lower min audio buffersize to 256 2024-06-12 22:33:44 +02:00
Alug 335b10a694 forgor 2024-06-12 22:33:36 +02:00
Alug 967220178c remove windows timing crap again
it actually made stuff a little wonky so revert that
2024-06-12 22:32:54 +02:00
Alug be7461ad51 use sdl ogl render instead of software for software mode on nix
oops
2024-06-12 22:31:53 +02:00
indev 5af7cf850a Fix string format warning for packetstat 2024-06-12 21:26:41 +03:00
indev 86395d4d8b Add a way to count number of handled packets (for debugging) 2024-06-12 21:05:21 +03:00
Alug 3412bb5380 fix encore flipcam with ogl shearing 2024-06-09 22:02:52 +02:00
Alug d66e7e660d reset those here ig
need a better place tbh
but those occasionally could get stuck for some reason
so just reset them when the menu gets opened
2024-06-09 18:56:18 +02:00
Alug 07d631e320 e 2024-06-09 18:55:52 +02:00
Alug 6ffb50530d add mobj check here 2024-06-09 18:55:49 +02:00
Alug bd7103d109 add check earlier in p_killmobj 2024-06-09 18:55:46 +02:00
Alug 4abc2ab5bd fix redifinition warning 2024-06-06 18:58:03 +02:00
Alug f8a8b8ac6e disable upx on nix by default 2024-06-06 18:58:00 +02:00
Alug cfe6e08168 fix masterserver ifdef 2024-06-06 18:57:57 +02:00
Alug 5139259037 fix HAVE_CURL 2024-06-06 18:57:55 +02:00
Alug 1503daf02b more minor loop stuff 2024-06-06 18:57:52 +02:00
Alug 4246e42948 minor sprite opitmizations 2024-06-06 18:57:31 +02:00
Alug 9b3eaa6fe8 smol optimization to skin loading 2024-06-06 18:57:25 +02:00
Alug 716685d809 zzz... 2024-06-03 17:15:43 +02:00
Alug dd72871ba6 Revert "use shader to prevent sprite floor clipping"
This reverts commit ee2ec01eb9.
2024-06-03 17:15:39 +02:00
Alug ea510f95b8 Revert "fix le dispoffset"
This reverts commit f977af6a80.
2024-06-03 17:15:36 +02:00
Alug 9de3db7c97 add shader for shadows to also fix sprite shadows in pal render 2024-06-03 16:52:25 +02:00
indev 0e927ce4bd Make sfxinfo_t and state_t use field tables too 2024-06-02 00:43:42 +03:00
indev 1747ebf481 Lua_optoption shouldn't change stack state at the end of call now 2024-06-02 00:43:09 +03:00
indev da9d57a624 Fix compilation for some gcc versions 2024-06-02 00:39:22 +03:00
Alug 086d0113c5 Optimize field lookups in Lua metatables
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2024#cd5b5ee262bf5129c4d400ad60d006e1fa917c1f
2024-05-28 18:16:43 +02:00
Alug 8cf6050d10 Only call the Lua API for overridden actions 2024-05-25 16:01:34 +02:00
indev b310168c12 Store hooks in a table with integer keys instead of registry with string keys 2024-05-25 16:39:16 +03:00
396 changed files with 48526 additions and 67460 deletions

No files matched your search

+8 -7
View File
@@ -13,16 +13,17 @@ Win32_LIB_ASM_Release
*.dgb
*.debug
*.debug.txt
/bin/VC10/
/objs/VC10/
*.user
*.db
*.opendb
/.vs
/debian
/assets/debian
compile.sh
*.gz
.vscode/
out
build
/make
/bin
/build
/build/*
/CMakeUserPresets.json
/out
/objs/VC10
*.kate-swp
+346
View File
@@ -0,0 +1,346 @@
#!/bin/bash
set -e # Enable auto-exit for debugging :))
# Make Linux AppImage program data
# https://docs.appimage.org/reference/appdir.html
# PWD: {repo_root}/build
# See deployer.sh for usage
# Terminal stuff
RESET="$(tput sgr0)" #"\e[0m" # Resets terminal colors
# Colors for various information types
FAILURE="$(tput setaf 1)" #"\e[91m"
SUCCESS="$(tput setaf 2)" #"\e[92m"
NOTICE="$(tput setaf 3)" #"\e[93m"
VERBOSE="$(tput setaf 4)" #"\e[94m"
verbosity=0 # By default don't print anything unless it's *ultra* important.
quiet=0 # Also don't print anything if they supplied the quiet argument
# URL from which to download appimagetool if there isn't one available in your $PATH
# at time of writing only aarch64, armhf, i686, and x86_64 versions are available via this method
# in those cases, and honestly even outside of those cases, it's better to just put a working one in your $PATH yourself..
url="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage"
# A whitelist of libraries to include into SRB2's AppImage if SRB2 is dynamically linked.
# please don't add a newline at the end of this or i will cry :(
libraryWhitelist="
libbacktrace
libnsl
libSDL2
libSDL2_mixer
libgme
libopenmpt
libpng
libfluidsynth
libpulse
libmodplug
libvorbisfile
libopusfile
libFLAC
libmad
libmpg123
libvorbis
libpulsecommon
libsndfile
libsndio
libogg
libvorbisenc
libjson
libreadline
libwrap
libtinfo
libtirpc
libpng16"
# these kinda look like macros don't they
function print { (( "$quiet" == 0 )) && echo "$@" || :; } # echo if not quiet
function coloredText { printf "$1"; print "${@:2}"; printf "$RESET"; } # use print to inherit quiet
function success { coloredText "$SUCCESS" "$@"; } # use coloredText to inherit quiet
function important { coloredText "$NOTICE" "$@"; } # use coloredText to inherit quiet
function verboseOnly { (( "$verbosity" >= $1 )) && (coloredText "$VERBOSE" "${@:2}") || :; } # use coloredText to inherit quiet
# Parses an argument with a single dash
function parseSingleDashArg() {
while read -n 1 char; do
if [[ "$char" == '-' || "$char" == '' ]]; then
:
elif [[ "$char" == 'h' ]]; then
helppassed=1
elif [[ "$char" == 'q' ]]; then
quiet=1
elif [[ "$char" == 'v' ]]; then
verbosity="$((verbosity + 1))"
elif [[ "$char" == 'd' ]]; then
dry=1
elif [[ "$char" == 's' ]]; then
small=1
else
echo "$0: invalid option -- '$1'"
echo "Try '$0 --help' for more information."
return 1
fi
done <<<"$1"
}
# Simple help argument checker.
currentarg=1; # Which argument is --help...
# For $arg in the argument array...
for arg in "$@"; do
# Is it a help argument?
if [[ "$arg" == "--help" ]]; then
helppassed=1; # Help is passed, set $helppassed!
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}" # Remove argument from list
elif [[ "$arg" == "--quiet" ]]; then
quiet=1
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"
elif [[ "$arg" == "--verbose" ]]; then
verbosity="$((verbosity + 1))" # Increase verbosity!
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"
elif [[ "$arg" == "--dry" ]]; then
dry=1; # Show parameters instead of using them.
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"
elif [[ "$arg" == "--small" ]]; then
small=1; # Don't copy assets to save on bandwidth.
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"
elif [[ ! "$arg" == *'--'* && "$arg" == *'-'* ]]; then
parseSingleDashArg "$arg"
if [[ "$?" == 0 ]]; then
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}" # Remove argument from list
fi
elif [[ $arg == *'--'* ]]; then
print "$0: invalid option -- '$1'"
print "Try '$0 --help' for more information."
return 1
else
currentarg="$((currentarg+1))" # Increment current argument number otherwise...
fi
done
important "SRB2Kart AppImage Packager v1.0 modified for kart by NepDisk."
important "Orignal for SRB2 my mazmazz and Golden."
# Get root directory from the full path of this script.
__ROOT_DIR="$3"
if [[ -z "$3" ]]; then
# finds out where this script is and goes to that directory and goes up one for the root
scriptdir="$(dirname "${BASH_SOURCE[0]}")"
scriptbase="$(basename "${BASH_SOURCE[0]}")"
__ROOT_DIR="$(cd "$scriptdir" && pwd -P)"
fi
# If it starts with '.', put the current working directory behind it so things work.
if [[ "$__ROOT_DIR" == '.' || "$__ROOT_DIR" == '..' ]]; then
__ROOT_DIR="$PWD/$__ROOT_DIR"
fi
# Set up defaults
__PROGRAM_NAME="${PROGRAM_NAME:-"SRB2Kart Saturn"}"
__PROGRAM_DESCRIPTION="${PROGRAM_DESCRIPTION:-"Modded version of SRB2kart with more features."}"
__PROGRAM_FILENAME="${PROGRAM_FILENAME:-"lsdl2srb2kart"}"
__PROGRAM_ASSETS="${PROGRAM_ASSETS:-"$__ROOT_DIR/assets/installer"}"
__BUILD_DIR="${1:-"$__ROOT_DIR/bin"}"
__OUTPUT_FILENAME="${2:-"$__PROGRAM_FILENAME.AppImage"}"
__APPIMAGETOOL="${4:-"appimagetool"}"
if (! command -v "$__APPIMAGETOOL" &> /dev/null); then
__APPIMAGETOOL=
fi
# Stuff that prints and exits.
# Prints setup text using method given by arguments.
# Example: printSetup "print" # print "Setup for AppImage...
function printSetup {
$@ "Setup for AppImage in BUILD_DIR: '$__BUILD_DIR'..."
$@ "With the OUTPUT_FILENAME: '$__OUTPUT_FILENAME'"
$@ "And SRB2 Repository Root ROOT_DIR: '$__ROOT_DIR'"
$@ "Using APPIMAGETOOL: '$([ -z "$__APPIMAGETOOL" ] && echo '(download)' || echo $__APPIMAGETOOL)'"
$@ ""
$@ "This should be run from a Makefile or from the directory of the build. If it is not, then change to that directory or specify that directory as an argument."
$@ "If ROOT_DIR isn't SRB2's repository root, specify that as an argument too."
$@ "Make must have built the program before you run this script."
$@ ""
$@ "Make sure these Environment Variables are correct."
$@ "If not, then enter: export PROGRAM_VARIABLE=value"
$@ "PROGRAM_NAME: $__PROGRAM_NAME"
$@ "PROGRAM_DESCRIPTION: $__PROGRAM_DESCRIPTION"
$@ "PROGRAM_FILENAME: $__PROGRAM_FILENAME"
$@ "PROGRAM_ASSETS: $__PROGRAM_ASSETS"
}
if [[ "$helppassed" ]]; then
print "Usage: $(basename "$0") [OPTION]... [BUILD_DIR] [OUTPUT_NAME] [ROOT_DIR] [APPIMAGETOOL]"
print "Packages a SRB2 binary into an AppImage."
print "OPTIONs may be included anywhere within the arguments."
print ""
print "Arguments:"
print " -h, --help display this help and exit."
print " -q, --quiet don't display any text."
print " -v, --verbose make commands more verbose, will always print."
print " -s, --small don't copy SRB2 assets to save on bandwidth."
print " parameters regardless of --dry."
print " -d, --dry print parameters and exit."
print ""
if (( "$verbosity" > 0 )) || [[ "$dry" ]]; then
printSetup "print"
else
print "This should be run from a Makefile or from the directory of the build."
print "Make must have built the program before you run this script."
fi
exit;
fi
if (( "$verbosity" > 0 )) || [[ "$dry" ]]; then
printSetup "verboseOnly" "0"
verboseOnly 0 ""
if [[ "$dry" ]]; then
set -n # Enable debug mode and verbose for dry run.
fi
fi
# End stuff that prints and exits.
if (( "$verbosity" >= 4 )); then
set -v # Really verbose? Print *everything*!
fi
# Define AppDir structure
mkdir -p "$__BUILD_DIR/AppDir/usr/bin"
mkdir -p "$__BUILD_DIR/AppDir/lib"
mkdir -p "$__BUILD_DIR/AppDir/usr/share/applications"
mkdir -p "$__BUILD_DIR/AppDir/usr/share/icons/hicolor/256x256/apps"
# Copy program data
if [[ ! $small ]]; then
verboseOnly 1 "Packaging program assets..."
cp -r "$__PROGRAM_ASSETS"/* "$__BUILD_DIR/AppDir/usr/bin/"
cp -r "$__BUILD_DIR/$__PROGRAM_FILENAME" "$__BUILD_DIR/AppDir/usr/bin"
else
verboseOnly 1 "Skipping program asset packing, --small or -s passed..."
fi
verboseOnly 1 "Packaging SRB2..."
verboseOnly 1 "Assuming executable name $__PROGRAM_FILENAME"
cp -r "$__BUILD_DIR/$__PROGRAM_FILENAME" "$__BUILD_DIR/AppDir/usr/bin"
# Copy required dependencies, but only if the program is dynamically linked.
verboseOnly 1 "Testing if this build is dynamically linked..."
set +e # Disable auto-exit for ldd.
srb2Libraries="$(ldd "$__BUILD_DIR/$__PROGRAM_FILENAME")"
exitcode="$?"
set -e # Enable it again!
if (( $exitcode == 0 )); then
verboseOnly 1 "This build *is* dynamically linked! Packaging dependencies."
# read the dynamic libraries of srb2, trim off beginning whitespace, and get the third field seperated by spaces
# this gives us a newline-seperated list of libraries with their full paths.
srb2Libraries="$(echo "$srb2Libraries" | cut -f 2 | cut -d ' ' -f 3)"
# remove any extraneous newlines around the string
libraryWhitelist="$(echo $libraryWhitelist | head -c -1 | tr ' ' '\n')"
# replace e.g. 'abc' with '(/abc\b)', and replace newlines with '|'.
# this converts it into a grep regular expression to check for any whitelisted library names.
libraryWhitelist="$(printf "%s" "$libraryWhitelist" | sed 's|.*|(/\0\\b)|' | tr '\n' '|')"
# grab only the entries that match the regex
__LDD_LIST="$(printf "%s" "$srb2Libraries" | grep -E "$libraryWhitelist")"
# use echo to convert the newline-seperated list into an argument list
__LDD_LIST="$(echo $__LDD_LIST)"
# read into an array because i can't be bothered iterating the lines of a string today
# there's so many other things in this file that'd need to be adjusted to be POSIX-compliant anyway
IFS=' ' read -r -a paths <<< "$__LDD_LIST"
for path in "${paths[@]}"; do
if [ -f "$path" ]; then
verboseOnly 2 "Packaging dependency $(basename "$path")..."
cp "$path" $__BUILD_DIR/AppDir/lib/
else
verboseOnly 2 "Dependency $(basename "$path") not found"
fi
done
else
verboseOnly 1 "This SRB2 build is statically linked, skipping dependency packing."
fi
cd "$__BUILD_DIR/AppDir"
# Copy icons
verboseOnly 1 "Packaging resources..."
cp "$__ROOT_DIR/srb2.png" "./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png"
ln -sf "./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png" "./.DirIcon"
ln -sf "./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png" "./$__PROGRAM_FILENAME.png"
# Make desktop descriptor
cat > "./usr/share/applications/$__PROGRAM_FILENAME.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=$__PROGRAM_NAME
Comment=$__PROGRAM_DESCRIPTION
Icon=$__PROGRAM_FILENAME
Exec=AppRun %F
Categories=Game;
EOF
ln -sf "./usr/share/applications/$__PROGRAM_FILENAME.desktop" "./$__PROGRAM_FILENAME.desktop"
# Make entry point
echo -e '#!'"$(dirname "$SHELL")/sh" > ./AppRun
echo -e 'HERE="$(dirname "$(readlink -f "${0}")")"' >> ./AppRun
echo -e 'SRB2WADDIR=$HERE/usr/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HERE/lib exec $HERE/usr/bin/'"$__PROGRAM_FILENAME"' "$@"' >> ./AppRun
chmod +x ./AppRun
cd .. # now in $__BUILD_DIR
# Package AppImage
if [ -z "$__APPIMAGETOOL" ]; then
verboseOnly 1 "No valid appimagetool path given or detected, downloading appimagetool..."
# Print notice for internet connection.
important "If the command hangs here, check your internet connection, or download appimagetool and add it to your \$PATH and try compiling again."
(( "$verbosity" >= 3 )) && wget "$url" || wget -q "$url"
APPIMAGETOOL="./$(basename "$url")"
chmod a+x "$APPIMAGETOOL"
else
verboseOnly 1 "appimagetool path given or detected, no download required."
APPIMAGETOOL="$__APPIMAGETOOL"
fi
verboseOnly 1 "Packing AppImage $__OUTPUT_FILENAME"
if (( verbosity >= 3 )); then
"$APPIMAGETOOL" ./AppDir "$__OUTPUT_FILENAME"
elif (( verbosity >= 2 )); then
"$APPIMAGETOOL" ./AppDir "$__OUTPUT_FILENAME" >/dev/null
else
"$APPIMAGETOOL" ./AppDir "$__OUTPUT_FILENAME" >/dev/null 2>&1
fi
success "AppImage ready!"
verboseOnly 1 "Cleaning up files..."
rm -r ./AppDir
if [ -z "$__APPIMAGETOOL" ]; then
rm "$APPIMAGETOOL"
fi
cd "$__ROOT_DIR" # snap back to reality
+1 -1
View File
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.5)
# DO NOT CHANGE THIS SRB2 STRING! Some variable names depend on this string.
# Version change is fine.
project(SRB2
+42
View File
@@ -28,6 +28,10 @@ exist.
Returns the values of the given HUD item's `xoffset`/`yoffset` cvars.
Available for any HUD item with offset cvars.
## patch = v.cachePatchRotated(name, rollangle)
Like v.cachePatch, it caches a new patch with the corresponding name. Unlike v.cachePatch, however,
a rollangle can be supplied to the function so that it returns a rotated patch instead.
## x, y, flags = v.getDrawInfo(item)
Returns the X, Y and flags where the given HUD item will be drawn for the current displayplayer.
@@ -130,3 +134,41 @@ if rawget(_G, "S_StopSoundByNum") ~= nil then
... -- Can use it
end
```
## addHook("ServerJoin", function())
ServerJoin hook called when client joins server (starting a listen server also calls it for host).
Generally it was made to make loading custom config files less hacky, but can be used for anything else too.
## player.viewrollangle field
Returns player's current view roll angle for the Screen Tilting feature, useful for HUD elements.
## G_SetPlayerGamepadIndicatorColor(player, skincolor)
Set a custom color for Supported Gamepads with RGB LED functionality.
To be used with Displayplayers.
Only takes Skincolors.
Best to be used in a Loop to ensure the color wont get overwritten by the game.
## G_PlayerDeviceRumble(player, low_strength, high_strength, -optional- duration)
Add Gamepad Rumble support for things.
To be used with Displayplayers.
Duration is in milliseconds and is optional to set, default value is 84ms.
## P_CheckSightFast(mo1, mo2)
Exactly same as P_CheckSight but uses cheaper algorithm, useful for things like nametags. Doesn't work exactly
like P_CheckSight so don't use it for anything gameplay-related.
# Other changes
## P_PlayRinglossSound(source, damager)
Add optional `damager` argument (should be `mobj_t`), which causes hurt sound also play for damager
if `karthitemdialog` option is enabled
## K_PlayHitEmSound(mobj, victim)
Add optional `victim` argument (should be a player's `mobj_t`), which causes "hit em" sound to be
delayed and played for victim too if `karthitemdialog` option is enabled
+8
View File
@@ -0,0 +1,8 @@
ifdef SILENT
MAKEFLAGS+=--no-print-directory
endif
all :
% ::
@$(MAKE) -C src $(MAKECMDGOALS)
+1 -1
View File
@@ -76,7 +76,7 @@ Crashlogs now contain alot more informations. and even more if your build has de
Also allows 64bit Windows builds to produce Crashlogs!
## MISC
- Bird's Camara Tilting feature is no longer turned on by default
- Bird's Camera Tilting feature is no longer turned on by default
- Bird's warning on the title screen has been removed
## Bugs
-5
View File
@@ -1726,11 +1726,6 @@ HW3SOUND for 3D hardware sound support
<Option compilerVar="CC" />
</Unit>
<Unit filename="src/r_draw.h" />
<Unit filename="src/r_draw16.c">
<Option compilerVar="CC" />
<Option compile="0" />
<Option link="0" />
</Unit>
<Unit filename="src/r_draw8.c">
<Option compilerVar="CC" />
<Option compile="0" />
-10
View File
@@ -773,16 +773,6 @@ Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit79]
FileName=src\r_draw16.c
Folder=R_Rend
Compile=0
CompileCpp=0
Link=0
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit80]
FileName=src\r_draw8.c
Folder=R_Rend
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-1
View File
@@ -1 +0,0 @@
/lsdlsrb2
-3
View File
@@ -1,3 +0,0 @@
/lsdlsrb2
/pnd
/*.mo
-1
View File
@@ -1 +0,0 @@
/lsdlsrb2
-1
View File
@@ -1 +0,0 @@
/lsdlsrb2
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-3
View File
@@ -1,3 +0,0 @@
/srb2sdl.exe
/srb2win.exe
/r_opengl.dll
-4
View File
@@ -1,4 +0,0 @@
*.exe
*.mo
r_opengl.dll
*.bat
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
+32 -32
View File
@@ -1,32 +1,32 @@
@echo off
set BRA=Unknown
set REV=illegal
copy nul: /b +%1\comptime.c tmp.$$$ > nul
move tmp.$$$ %1\comptime.c > nul
if exist .git goto gitrev
if exist ..\.git goto gitrev
if exist .svn goto svnrev
goto filwri
:gitrev
set GIT=%2
if "%GIT%"=="" set GIT=git
for /f "usebackq" %%s in (`%GIT% rev-parse --abbrev-ref HEAD`) do @set BRA=%%s
for /f "usebackq" %%s in (`%GIT% rev-parse HEAD`) do @set REV=%%s
set REV=%REV:~0,8%
goto filwri
:svnrev
set BRA=Subversion
for /f "usebackq" %%s in (`svnversion .`) do @set REV=%%s
set REV=r%REV%
goto filwri
:filwri
echo // Do not edit! This file was autogenerated > %1\comptime.h
echo // by the %0 batch file >> %1\comptime.h
echo // >> %1\comptime.h
echo const char* compbranch = "%BRA%"; >> %1\comptime.h
echo const char* comprevision = "%REV%"; >> %1\comptime.h
@echo off
set BRA=Unknown
set REV=illegal
copy nul: /b +%1\comptime.c tmp.$$$ > nul
move tmp.$$$ %1\comptime.c > nul
if exist .git goto gitrev
if exist ..\.git goto gitrev
if exist .svn goto svnrev
goto filwri
:gitrev
set GIT=%2
if "%GIT%"=="" set GIT=git
for /f "usebackq" %%s in (`%GIT% rev-parse --abbrev-ref HEAD`) do @set BRA=%%s
for /f "usebackq" %%s in (`%GIT% rev-parse HEAD`) do @set REV=%%s
set REV=%REV:~0,8%
goto filwri
:svnrev
set BRA=Subversion
for /f "usebackq" %%s in (`svnversion .`) do @set REV=%%s
set REV=r%REV%
goto filwri
:filwri
echo // Do not edit! This file was autogenerated > %1\comptime.h
echo // by the %0 batch file >> %1\comptime.h
echo // >> %1\comptime.h
echo const char* compbranch = "%BRA%"; >> %1\comptime.h
echo const char* comprevision = "%REV%"; >> %1\comptime.h
+1 -1
View File
@@ -17,7 +17,7 @@ EOF
versiongit() {
gitbranch="$(git rev-parse --abbrev-ref HEAD)"
gitversion="$(git rev-parse HEAD | cut -c -8)"
gitversion="$(git show --pretty=format:'%h %s' -s HEAD | sed 's/"/\\"/g')"
version "$gitbranch" "$gitversion";
exit 0
}
+9 -8
View File
@@ -1,5 +1,5 @@
/* backtrace.h -- Public header file for stack backtrace library.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
Copyright (C) 2012-2024 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Google.
Redistribution and use in source and binary forms, with or without
@@ -54,13 +54,14 @@ struct backtrace_state;
invalid after this function returns.
As a special case, the ERRNUM argument will be passed as -1 if no
debug info can be found for the executable, but the function
requires debug info (e.g., backtrace_full, backtrace_pcinfo). The
MSG in this case will be something along the lines of "no debug
info". Similarly, ERRNUM will be passed as -1 if there is no
symbol table, but the function requires a symbol table (e.g.,
backtrace_syminfo). This may be used as a signal that some other
approach should be tried. */
debug info can be found for the executable, or if the debug info
exists but has an unsupported version, but the function requires
debug info (e.g., backtrace_full, backtrace_pcinfo). The MSG in
this case will be something along the lines of "no debug info".
Similarly, ERRNUM will be passed as -1 if there is no symbol table,
but the function requires a symbol table (e.g., backtrace_syminfo).
This may be used as a signal that some other approach should be
tried. */
typedef void (*backtrace_error_callback) (void *data, const char *msg,
int errnum);
Binary file not shown.
-8
View File
@@ -1,8 +0,0 @@
#All folders
SRB2.res
depend.dep
depend.ped
*.o
#VC9 folder only
/VC9/Win32
/VC9/x64
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
-2
View File
@@ -1,2 +0,0 @@
# DON'T REMOVE
# This keeps the folder from disappearing
+2 -1
View File
@@ -1,2 +1,3 @@
/cscope.out
/srb2wii
*.json
*.idx
+1
View File
@@ -28,6 +28,7 @@ LOCAL_SRC_FILES := am_map.c \
m_cheat.c \
m_fixed.c \
m_menu.c \
m_textinput.c \
m_misc.c \
m_queue.c \
m_random.c \
+573 -551
View File
File diff suppressed because it is too large. Load diff
+358 -772
View File
File diff suppressed because it is too large. Load diff
+25 -18
View File
@@ -12,7 +12,8 @@
# to avoid a false positive with the version detection...
SUPPORTED_GCC_VERSIONS:=\
141 14\
151 150 15\
142 141 140 14\
132 131 130 13\
123 122 121 120 12\
114 113 112 111 110 11\
@@ -24,7 +25,7 @@ SUPPORTED_GCC_VERSIONS:=\
55 54 53 52 51 50\
49 48 47 46 45 44 43 42 41 40
LATEST_GCC_VERSION=14.1
LATEST_GCC_VERSION=14.2.1
# gcc or g++
ifdef PREFIX
@@ -78,12 +79,32 @@ ifeq (,$(filter GCC%,$(.VARIABLES)))
endif
endif
ifdef GCC141
ifdef GCC151
GCC150=1
endif
ifdef GCC15
GCC150=1
endif
ifdef GCC150
GCC142=1
endif
ifdef GCC142
GCC141=1
endif
ifdef GCC141
GCC140=1
endif
ifdef GCC14
GCC14=1
GCC140=1
endif
ifdef GCC140
GCC132=1
endif
ifdef GCC132
@@ -437,9 +458,6 @@ endif
ifdef GCC44
WFLAGS+=-Wno-error=array-bounds
endif
ifdef GCC45
opts+=-fwrapv
endif
ifdef GCC46
WFLAGS+=-Wno-error=suggest-attribute=noreturn
endif
@@ -464,7 +482,6 @@ ifdef GCC81
WFLAGS+=-Wno-error=multistatement-macros
endif
#indicate platform and what interface use with
ifndef LINUX
ifndef FREEBSD
@@ -472,7 +489,6 @@ ifndef CYGWIN32
ifndef MINGW
ifndef MINGW64
ifndef SDL
ifndef DUMMY
$(error No interface or platform flag defined)
endif
endif
@@ -480,7 +496,6 @@ endif
endif
endif
endif
endif
#determine the interface directory (where you put all i_*.c)
i_net_o=$(OBJDIR)/i_net.o
@@ -505,11 +520,6 @@ UPX_OPTS+=-q
endif
#Interface Setup
ifdef DUMMY
INTERFACE=dummy
OBJDIR:=$(OBJDIR)/dummy
BIN:=$(BIN)/dummy
else
ifdef LINUX
SDL=1
ifdef LINUX64
@@ -556,7 +566,6 @@ endif
endif
endif
endif
endif
ifdef ARCHNAME
OBJDIR:=$(OBJDIR)/$(ARCHNAME)
@@ -571,7 +580,6 @@ ifdef SDL
OBJDIR:=$(OBJDIR)/SDL
endif
ifndef DUMMY
ifdef DEBUGMODE
OBJDIR:=$(OBJDIR)/Debug
BIN:=$(BIN)/Debug
@@ -579,4 +587,3 @@ else
OBJDIR:=$(OBJDIR)/Release
BIN:=$(BIN)/Release
endif
endif
+19
View File
@@ -0,0 +1,19 @@
makedir:=$(makedir)/Dedicated
sources+=$(call List,dedicated/Sourcefile)
opts+=-DDEDICATED
ifdef MINGW
libs+=-mconsole
endif
ifndef NOTHREADS
opts+=-DHAVE_THREADS
sources+=dedicated/i_threads.c
endif
NOOPENMPT=1
NOGME=1
NOHW=1
NOUPNP=1
+124
View File
@@ -0,0 +1,124 @@
#
# Detect the host system and compiler version.
#
# Previously featured:\
PANDORA\
DUMMY\
DJGPPDOS\
SOLARIS\
MACOSX\
all_systems:=\
LINUX64\
MINGW64\
MINGW\
UNIX\
LINUX\
FREEBSD\
HAIKU\
# check for user specified system
ifeq (,$(filter $(all_systems),$(.VARIABLES)))
ifeq ($(OS),Windows_NT) # all windows are Windows_NT...
ifeq ($(shell uname -s | grep -o MINGW64),MINGW64) # 64-bit MinGW
_m=Detected a Windows system,\
compiling for 64-bit MinGW SDL...)
$(call Print,$(_m))
MINGW64=1
else # 32-bit MinGW
_m=Detected a Windows system,\
compiling for 32-bit MinGW SDL...)
$(call Print,$(_m))
MINGW=1
endif
NOOBJDUMP=1
else # if you on the *nix
system:=$(shell uname -s)
ifeq ($(system),Linux)
new_system:=LINUX
else ifeq ($(system),Haiku)
new_system:=HAIKU
else
$(error \
Could not automatically detect your system,\
try specifying a system manually)
endif
ifeq ($(shell getconf LONG_BIT),64)
system+=64-bit
new_system:=$(new_system)64
endif
$(call Print,Detected $(system) ($(new_system))...)
$(new_system):=1
endif
endif
# This must have high to low order.
gcc_versions:=\
151 150 15\
142 141 140 14\
132 131 130 13\
123 122 121 120 12\
114 113 112 111 110 11\
105 104 103 102 101 100 10\
95 94 93 92 91 90\
85 84 83 82 81 80\
75 74 73 72 71 70\
64 63 62 61 60\
55 54 53 52 51 50\
49 48 47 46 45 44 43 42 41 40
latest_gcc_version:=15.1.1
# Automatically set version flag, but not if one was
# manually set. And don't bother if this is a clean only
# run.
ifeq (,$(call Wildvar,GCC% destructive))
# can't use $(CC) --version here since that uses argv[0] to display the name
# also gcc outputs the information to stderr, so I had to do 2>&1
# this program really doesn't like identifying itself
shellversion:=$(shell $(CC) -v 2>&1)
# Try to remove "-win32"
version:=$(subst -win32,.0,$(shellversion))
# check if this is in fact GCC
ifneq (,$(findstring gcc version,$(version)))
# in stark contrast to the name, gcc will give me a nicely formatted version number for free
shellversion:=$(shell $(CC) -dumpfullversion)
# Try to remove "-win32"
version:=$(subst -win32,.0,$(shellversion))
# Turn version into words of major, minor
v:=$(subst ., ,$(version))
# concat. major minor
v:=$(word 1,$(v))$(word 2,$(v))
# If this version is not in the list,
# default to the latest supported
ifeq (,$(filter $(v),$(gcc_versions)))
define line =
Your compiler version, GCC $(version), \
is not supported by the Makefile.
The Makefile will assume GCC $(latest_gcc_version).
endef
$(call Print,$(line))
GCC$(subst .,,$(latest_gcc_version)):=1
else
$(call Print,Detected GCC $(version) (GCC$(v)))
GCC$(v):=1
endif
endif
endif
+106
View File
@@ -0,0 +1,106 @@
#
# Makefile for feature flags.
#
passthru_opts+=\
NOHW NOMD5 NOPOSTPROCESSING\
MOBJCONSISTANCY PACKETDROP ZDEBUG\
HAVE_MINIUPNPC\
HAVE_DISCORDRPC DEVELOP\
NOBLUAJIT
# build with debugging information
ifdef DEBUGMODE
PACKETDROP=1
opts+=-DPARANOIA -DRANGECHECK
endif
ifndef NOHW
opts+=-DHWRENDER
ifndef NOSCREENFBO
opts+=-DUSE_FBO_OGL
endif
sources+=$(call List,hardware/Sourcefile)
endif
ifndef NOMD5
sources+=md5.c
endif
ifndef NONET
ifndef NOSATURNJOIN
opts+=-DDOSATURNJOIN
endif
ifndef NOSATURNPAK
opts+=-DDOSATURNPAK
endif
endif
ifndef NOZLIB
ifndef NOPNG
ifdef PNG_PKGCONFIG
$(eval $(call Use_pkg_config,PNG_PKGCONFIG))
else
PNG_CONFIG?=$(call Prefix,libpng-config)
$(eval $(call Configure,PNG,$(PNG_CONFIG) \
$(if $(PNG_STATIC),--static),,--ldflags))
endif
ifdef LINUX
opts+=-D_LARGEFILE64_SOURCE
endif
opts+=-DHAVE_PNG
sources+=apng.c
endif
endif
ifndef NOCURL
CURLCONFIG?=curl-config
$(eval $(call Configure,CURL,$(CURLCONFIG)))
opts+=-DHAVE_CURL
endif
ifdef HAVE_MINIUPNPC
MINIUPNPC_PKGCONFIG?=miniupnpc
$(eval $(call Use_pkg_config,MINIUPNPC))
HAVE_MINIUPNPC=1
opts+=-DHAVE_MINIUPNPC
endif
ifndef NOLIBBACKTRACE
$(eval $(call Propogate_flags,LIBBACKTRACE))
libs+=-lbacktrace
opts+=-DHAVE_LIBBACKTRACE
endif
#windoze hack
ifdef MINGW
ifndef NODISCORDRPC
HAVE_DISCORDRPC=1
endif
endif
ifdef HAVE_DISCORDRPC
$(eval $(call Propogate_flags,DISCORDRPC))
libs+=-ldiscord-rpc
opts+=-DUSE_STUN
sources+=discord.c stun.c
endif
# (Valgrind is a memory debugger.)
ifdef VALGRIND
VALGRIND_PKGCONFIG?=valgrind
VALGRIND_LDFLAGS=
$(eval $(call Use_pkg_config,VALGRIND))
ZDEBUG=1
opts+=-DHAVE_VALGRIND
endif
default_packages:=\
GME/libgme/LIBGME\
OPENMPT/libopenmpt/LIBOPENMPT\
ZLIB/zlib\
$(foreach p,$(default_packages),\
$(eval $(call Check_pkg_config,$(p))))
+71
View File
@@ -0,0 +1,71 @@
#
# Makefile options for Haiku
#
opts+=-DUNIXCOMMON -DLUA_USE_POSIX
ifndef DEDICATED
ifndef DUMMY
SDL?=1
DEDICATED?=0
endif
endif
NOEXECINFO=1
ifeq (${SDL},1)
EXENAME?=srb2haiku
else ifeq (${DEDICATED},1)
EXENAME?=srb2haikud
endif
ifndef NONET
libs+=-lnetwork
endif
define _set =
$(1)_CFLAGS?=$($(1)_opts)
$(1)_LDFLAGS?=$($(1)_libs)
endef
lib:=../libs/gme
LIBGME_opts:=-I$(lib)/include
LIBGME_libs:=-l:libgme.so.0
$(eval $(call _set,LIBGME))
lib:=../libs/libopenmpt
LIBOPENMPT_opts:=-I$(lib)/inc
LIBOPENMPT_libs:=-l:libopenmpt.so.0
$(eval $(call _set,LIBOPENMPT))
ifdef SDL
lib:=../libs/SDL2_mixer
mixer_opts:=-I$(lib)/include
mixer_libs:=-l:libSDL2_mixer-2.0.so.0
lib:=../libs/SDL2
SDL_opts:=-I$(lib)/include $(mixer_opts)
SDL_libs:=$(mixer_libs) -l:libSDL2-2.0.so.0
$(eval $(call _set,SDL))
endif
lib:=../libs/zlib
ZLIB_opts:=-I$(lib)
ZLIB_libs:=-l:libz.so.1
$(eval $(call _set,ZLIB))
ifndef PNG_CONFIG
PNG_opts:=
PNG_libs:=-l:libpng16.so.16
$(eval $(call _set,PNG))
endif
lib:=../libs/curl
CURL_opts:=-I$(lib)/include
CURL_libs:=-l:libcurl.so.4
$(eval $(call _set,CURL))
lib:=../libs/miniupnpc
MINIUPNPC_opts:=-I$(lib)/include
MINIUPNPC_libs:=-l:libminiupnpc.so.17
$(eval $(call _set,MINIUPNPC))
+47
View File
@@ -0,0 +1,47 @@
#
# Makefile options for unices (linux, bsd...)
#
opts+=-DUNIXCOMMON -DLUA_USE_POSIX
# Use -rdynamic so a backtrace log shows function names
# instead of addresses
libs+=-lm -rdynamic
ifndef NOHW
opts+=-I/usr/X11R6/include
libs+=-L/usr/X11R6/lib
endif
ifndef DEDICATED
SDL?=1
DEDICATED?=0
endif
ifeq (${SDL},1)
EXENAME?=lsdl2srb2kart
endif
ifeq (${DEDICATED},1)
EXENAME?=lsrb2kartd
endif
# In common usage.
ifdef LINUX
libs+=-lrt
passthru_opts+=NOTERMIOS
endif
# Tested by Steel, as of release 2.2.8.
ifdef FREEBSD
opts+=-I/usr/X11R6/include -DLINUX -DFREEBSD
libs+=-L/usr/X11R6/lib -lkvm -lexecinfo
endif
# FIXME: UNTESTED
#ifdef SOLARIS
#NOIPX=1
#opts+=-I/usr/local/include -I/opt/sfw/include \
# -DSOLARIS -DINADDR_NONE=INADDR_ANY -DBSD_COMP
#libs+=-L/opt/sfw/lib -lsocket -lnsl
#endif
+16
View File
@@ -0,0 +1,16 @@
#
# Warn about old build directories and offer to purge.
#
_old:=$(wildcard $(addprefix ../bin/,FreeBSD Linux \
Linux64 Mingw Mingw64 SDL dummy) ../objs ../dep)
ifdef _old
$(foreach v,$(_old),$(info $(abspath $(v))))
$(info )
$(info These directories are no longer\
required and should be removed.)
$(info You may remove them manually or\
by using 'make distclean')
$(error )
endif
+76
View File
@@ -0,0 +1,76 @@
#
# Platform specific options.
#
PKG_CONFIG?=pkg-config
ifdef WINDOWSHELL
rmrf=-2>NUL DEL /S /Q
mkdir=-2>NUL MD
cat=TYPE
else
rmrf=rm -rf
mkdir=mkdir -p
cat=cat
endif
ifdef LINUX64
LINUX=1
endif
ifdef MINGW64
MINGW=1
endif
ifdef LINUX
UNIX=1
ifdef LINUX64
NONX86=1
# LINUX64 does not imply X86_64=1;
# could mean ARM64 or Itanium
platform=linux/64
else
platform=linux
endif
else ifdef FREEBSD
UNIX=1
platform=freebsd
else ifdef HAIKU
# Give Haiku its own configuration, since it
# isn't actually UNIX.
include Makefile.d/haiku.mk
else ifdef SOLARIS # FIXME: UNTESTED
UNIX=1
platform=solaris
else ifdef CYGWIN32 # FIXME: UNTESTED
platform=cygwin
else ifdef MINGW
ifdef MINGW64
NONX86=1
NOASM=1
# MINGW64 should not necessarily imply X86_64=1,
# but we make that assumption elsewhere
# Once that changes, remove this
X86_64=1
platform=mingw/64
else
platform=mingw
endif
include Makefile.d/win32.mk
endif
ifdef platform
makedir:=$(makedir)/$(platform)
endif
ifdef UNIX
include Makefile.d/nix.mk
endif
ifeq ($(SDL), 1)
include Makefile.d/sdl.mk
else ifeq ($(DEDICATED), 1)
include Makefile.d/dedicated.mk
else
include Makefile.d/dummy.mk
endif
+71
View File
@@ -0,0 +1,71 @@
#
# Makefile options for SDL2 backend.
#
#
# SDL...., *looks at Alam*, THIS IS A MESS!
#
# ...a little bird flexes its muscles...
#
makedir:=$(makedir)/SDL
opts+=-DDIRECTFULLSCREEN -DHAVE_SDL
sources+=$(call List,sdl/Sourcefile)
NOUPNP=1
# FIXME: UNTESTED
#ifdef PANDORA
#include sdl/SRB2Pandora/Makefile.cfg
#endif #ifdef PANDORA
# FIXME: UNTESTED
#ifdef CYGWIN32
#include sdl/MakeCYG.cfg
#endif #ifdef CYGWIN32
ifndef NOHW
sources+=sdl/ogl_sdl.c
endif
ifdef NOMIXER
sources+=sdl/sdl_sound.c
else
opts+=-DHAVE_MIXER
sources+=sdl/mixer_sound.c
ifndef HAIKU # Haiku has a special import path
libs+=-lSDL2_mixer
endif
endif
ifndef NOTHREADS
opts+=-DHAVE_THREADS
sources+=sdl/i_threads.c
endif
ifdef SDL_PKGCONFIG
$(eval $(call Use_pkg_config,SDL))
else
SDL_CONFIG?=$(call Prefix,sdl2-config)
SDL_CFLAGS?=$(shell $(SDL_CONFIG) --cflags)
SDL_LDFLAGS?=$(shell $(SDL_CONFIG) \
$(if $(STATIC),--static-libs,--libs))
$(eval $(call Propogate_flags,SDL))
endif
ifdef MINGW
ifndef NOSDLMAIN
SDLMAIN=1
endif
endif
ifdef SDLMAIN
opts+=-DSDLMAIN
else
ifdef MINGW
opts+=-Umain
libs+=-mconsole
endif
endif
+93
View File
@@ -0,0 +1,93 @@
#
# Utility macros for the rest of the Makefiles.
#
Ifnot=$(if $(1),$(3),$(2))
Ifndef=$(call Ifnot,$($(1)),$(2),$(3))
# Match and expand a list of variables by pattern.
Wildvar=$(foreach v,$(filter $(1),$(.VARIABLES)),$($(v)))
# Read a list of words from file and prepend each with the
# directory of the file.
_cat=$(shell $(cat) $(call Windows_path,$(1)))
List=$(addprefix $(dir $(1)),$(call _cat,$(1)))
# Convert path separators to backslash on Windows.
Windows_path=$(if $(WINDOWSHELL),$(subst /,\,$(1)),$(1))
define Propogate_flags =
opts+=$$($(1)_CFLAGS)
libs+=$$($(1)_LDFLAGS)
endef
# Set library's _CFLAGS and _LDFLAGS from some command.
# Automatically propogates the flags too.
# 1: variable prefix (e.g. CURL)
# 2: start of command (e.g. curl-config)
# --- optional ----
# 3: CFLAGS command arguments, default '--cflags'
# 4: LDFLAGS command arguments, default '--libs'
# 5: common command arguments at the end of command
define Configure =
$(1)_CFLAGS?=$$(shell $(2) $(or $(3),--cflags) $(5))
$(1)_LDFLAGS?=$$(shell $(2) $(or $(4),--libs) $(5))
$(call Propogate_flags,$(1))
endef
# Configure library with pkg-config. The package name is
# taken from a _PKGCONFIG variable.
# 1: variable prefix
#
# LIBGME_PKGCONFIG=libgme
# $(eval $(call Use_pkg_config,LIBGME))
define Use_pkg_config =
$(call Configure,$(1),$(PKG_CONFIG),,,$($(1)_PKGCONFIG))
endef
# Check disabling flag and configure package in one step
# according to delimited argument.
# (There is only one argument, but it split by slash.)
# 1/: short form library name (uppercase). This is
# prefixed with 'NO' and 'HAVE_'. E.g. NOGME, HAVE_GME
# /2: package name (e.g. libgme)
# /3: variable prefix
#
# The following example would check if NOGME is not
# defined before attempting to define LIBGME_CFLAGS and
# LIBGME_LDFLAGS as with Use_pkg_config.
#
# $(eval $(call Check_pkg_config,GME/libgme/LIBGME))
define Check_pkg_config =
_p:=$(subst /, ,$(1))
_v1:=$$(word 1,$$(_p))
_v2:=$$(or $$(word 3,$$(_p)),$$(_v1))
ifndef NO$$(_v1)
$$(_v2)_PKGCONFIG?=$$(word 2,$$(_p))
$$(eval $$(call Use_pkg_config,$$(_v2)))
opts+=-DHAVE_$$(_v1)
endif
endef
# $(call Prefix,gcc)
Prefix=$(if $(PREFIX),$(PREFIX)-)$(1)
Echo=
Echo_name=
Print=
ifndef SILENT
Echo=@echo $(1)
ifndef ECHO
ifndef NOECHOFILENAMES
Echo_name=$(call Echo,-- $(1) ...)
endif
endif
ifndef MAKE_RESTARTS
ifndef destructive
Print=$(info $(1))
endif
endif
endif
.=$(call Ifndef,ECHO,@)
+181
View File
@@ -0,0 +1,181 @@
#
# Flags to put a sock in GCC!
#
# See the versions list in detect.mk
# This will define all version flags going backward.
# Yes, it's magic.
define _predecessor =
ifdef GCC$(firstword $(1))
GCC$(lastword $(1)):=1
endif
endef
_n:=$(words $(gcc_versions))
$(foreach v,$(join $(wordlist 2,$(_n),- $(gcc_versions)),\
$(addprefix =,$(wordlist 2,$(_n),$(gcc_versions)))),\
$(and $(findstring =,$(v)),\
$(eval $(call _predecessor,$(subst =, ,$(v))))))
# aggregate returns seem to happen alot in c++ so just supress em lel
CXXFLAGS+= -Wno-aggregate-return
# -W -Wno-unused
ifdef GCC150
opts+=-std=gnu17
endif
WFLAGS:=-Wall -Wno-trigraphs
ifndef GCC295
#WFLAGS+=-Wno-packed
endif
ifndef RELAXWARNINGS
WFLAGS+=-W
#WFLAGS+=-Wno-sign-compare
ifndef GCC295
WFLAGS+=-Wno-div-by-zero
endif
#WFLAGS+=-Wsystem-headers
WFLAGS+=-Wfloat-equal
#WFLAGS+=-Wtraditional
WFLAGS+=-Wundef
ifndef GCC295
WFLAGS+=-Wendif-labels
endif
ifdef GCC41
WFLAGS+=-Wshadow
endif
#WFLAGS+=-Wlarger-than-%len%
WFLAGS+=-Wpointer-arith -Wbad-function-cast
ifdef GCC45
#WFLAGS+=-Wc++-compat
endif
WFLAGS+=-Wcast-qual
ifndef NOCASTALIGNWARN
WFLAGS+=-Wcast-align
endif
WFLAGS+=-Wwrite-strings
ifndef ERRORMODE
#WFLAGS+=-Wconversion
ifdef GCC43
#WFLAGS+=-Wno-sign-conversion
endif
endif
WFLAGS+=-Wsign-compare
ifdef GCC91
WFLAGS+=-Wno-error=address-of-packed-member
endif
ifdef GCC45
WFLAGS+=-Wlogical-op
endif
WFLAGS+=-Waggregate-return
ifdef HAIKU
ifdef GCC41
#WFLAGS+=-Wno-attributes
endif
endif
#WFLAGS+=-Wstrict-prototypes
ifdef GCC40
WFLAGS+=-Wold-style-definition
endif
WFLAGS+=-Wmissing-prototypes -Wmissing-declarations
ifdef GCC40
WFLAGS+=-Wmissing-field-initializers
endif
WFLAGS+=-Wmissing-noreturn
#WFLAGS+=-Wmissing-format-attribute
#WFLAGS+=-Wno-multichar
#WFLAGS+=-Wno-deprecated-declarations
#WFLAGS+=-Wpacked
#WFLAGS+=-Wpadded
#WFLAGS+=-Wredundant-decls
WFLAGS+=-Wnested-externs
#WFLAGS+=-Wunreachable-code
WFLAGS+=-Winline
ifdef DEBUGMODE
WFLAGS+=-Wno-error=inline
endif
ifdef GCC43
WFLAGS+=-funit-at-a-time
WFLAGS+=-Wlogical-op
endif
ifndef GCC295
WFLAGS+=-Wdisabled-optimization
endif
endif
WFLAGS+=-Wformat-y2k
ifdef GCC71
WFLAGS+=-Wno-error=format-overflow=2
endif
WFLAGS+=-Wformat-security
ifndef GCC29
#WFLAGS+=-Winit-self
endif
ifdef GCC46
WFLAGS+=-Wno-suggest-attribute=noreturn
endif
ifdef NOLDWARNING
LDFLAGS+=-Wl,--as-needed
endif
ifdef ERRORMODE
WFLAGS+=-Werror
endif
ifdef GCC43
#WFLAGS+=-Wno-error=clobbered
endif
ifdef GCC44
#WFLAGS+=-Wno-error=array-bounds
endif
ifdef GCC46
WFLAGS+=-Wno-error=suggest-attribute=noreturn
endif
ifdef GCC54
WFLAGS+=-Wno-logical-op -Wno-error=logical-op
endif
ifdef GCC61
WFLAGS+=-Wno-tautological-compare -Wno-error=tautological-compare
endif
ifdef GCC71
WFLAGS+=-Wimplicit-fallthrough=4
endif
ifdef GCC81
WFLAGS+=-Wno-error=format-overflow
WFLAGS+=-Wno-format-overflow
WFLAGS+=-Wno-error=multistatement-macros
endif
ifdef NONX86
ifdef X86_64 # yeah that SEEMS contradictory
opts+=-march=nocona
endif
else
ifndef GCC29
opts+=-msse3 -mfpmath=sse
else
opts+=-mpentium
endif
endif
ifdef DEBUGMODE
ifdef GCC48
opts+=-Og
else
opts+=-O0
endif
endif
ifdef VALGRIND
ifdef GCC46
WFLAGS+=-Wno-error=unused-but-set-variable
WFLAGS+=-Wno-unused-but-set-variable
endif
endif
# Lua
ifdef GCC43
ifndef GCC44
WFLAGS+=-Wno-logical-op
endif
endif
+124
View File
@@ -0,0 +1,124 @@
#
# Mingw, if you don't know, that's Win32/Win64
#
ifndef MINGW64
EXENAME?=srb2kart-saturn_32bit.exe
else
EXENAME?=srb2kart-saturn_64bit.exe
endif
# disable dynamicbase if under msys2
ifdef MSYSTEM
libs+=-Wl,--disable-dynamicbase
endif
sources+=win32/Srb2win.rc
opts+=-DSTDC_HEADERS
libs+=-ladvapi32 -lkernel32 -lmsvcrt -luser32
ifndef DEDICATED
ifndef DUMMY
SDL?=1
endif
endif
ifndef NOHW
opts+=-DUSE_WGL_SWAP
endif
ifdef MINGW64
libs+=-lws2_32
else
#ifndef HAVE_IPV6
#libs+=-lwsock32
#else
libs+=-lws2_32
#endif
endif
ifndef MINGW64
libs+=-Wl,--large-address-aware
NOLIBBACKTRACE=1
endif
ifndef MINGW64
32=32
x86=x86
i686=i686
else
32=64
x86=x86_64
i686=x86_64
endif
mingw:=$(i686)-w64-mingw32
define _set =
$(1)_CFLAGS?=$($(1)_opts)
$(1)_LDFLAGS?=$($(1)_libs)
endef
lib:=../libs/gme
LIBGME_opts:=-I$(lib)/include
LIBGME_libs:=-L$(lib)/win$(32) -lgme
$(eval $(call _set,LIBGME))
lib:=../libs/libopenmpt
LIBOPENMPT_opts:=-I$(lib)/inc
LIBOPENMPT_libs:=-L$(lib)/lib/$(x86)/mingw -lopenmpt
$(eval $(call _set,LIBOPENMPT))
lib:=../libs/SDL2_mixer/$(mingw)
ifdef SDL
mixer_opts:=-I$(lib)/include/SDL2
mixer_libs:=-L$(lib)/lib
lib:=../libs/SDL2/$(mingw)
SDL_opts:=-I$(lib)/include/SDL2\
$(mixer_opts) -Dmain=SDL_main
SDL_libs:=-L$(lib)/lib $(mixer_libs)\
-lmingw32 -lSDL2main -lSDL2 -mwindows
$(eval $(call _set,SDL))
endif
ifdef MINGW64
lib:=../libs/libbacktrace
LIBBACKTRACE_opts:=-I$(lib)/include
LIBBACKTRACE_libs:=-L$(lib)/lib/x86_64 -lbacktrace
$(eval $(call _set,LIBBACKTRACE))
else
lib:=../libs/drmingw
opts+=-I$(lib)/include
libs+=-L$(lib)/lib/win32 -lmgwhelp -lexchndl
endif
lib:=../libs/zlib
ZLIB_opts:=-I$(lib)
ZLIB_libs:=-L$(lib)/win32 -l:libz$(32).a
$(eval $(call _set,ZLIB))
ifndef PNG_CONFIG
lib:=../libs/libpng-src
PNG_opts:=-I$(lib)
PNG_libs:=-L$(lib)/projects -lpng$(32)
$(eval $(call _set,PNG))
endif
lib:=../libs/curl
CURL_opts:=-I$(lib)/include
CURL_libs:=-L$(lib)/lib$(32) -lcurl
$(eval $(call _set,CURL))
ifndef MINGW64 # miniupnc is broken with MINGW64
lib:=../libs/miniupnpc
MINIUPNPC_opts:=-I$(lib)/include -DMINIUPNP_STATICLIB
MINIUPNPC_libs:=-L$(lib)/mingw$(32) -lminiupnpc -lws2_32 -liphlpapi
$(eval $(call _set,MINIUPNPC))
endif
lib:=../libs/discord-rpc/win$(32)-dynamic
DISCORDRPC_opts+=-I$(lib)/include
DISCORDRPC_libs+=-L$(lib)/lib -ldiscord-rpc
$(eval $(call _set,DISCORDRPC))
+97
View File
@@ -0,0 +1,97 @@
am_map.c
b_bot.c
command.c
console.c
d_clisrv.c
d_main.c
d_net.c
d_netcmd.c
d_netfil.c
d_protocol.c
dehacked.c
f_finale.c
f_wipe.c
filesrch.c
g_game.c
g_input.c
hu_stuff.c
i_tcp.c
i_time.c
info.c
lzf.c
m_aatree.c
m_anigif.c
m_argv.c
m_bbox.c
m_cheat.c
m_cond.c
m_fixed.c
m_menu.c
m_textinput.c
m_misc.c
m_perfstats.c
m_queue.c
m_random.c
mserv.c
http-mserv.c
qs22j.c
s_sound.c
screen.c
sounds.c
st_stuff.c
string.c
tables.c
v_video.c
w_wad.c
y_inter.c
z_zone.c
r_bsp.c
r_data.c
r_draw.c
r_fps.c
r_main.cpp
r_patch.c
r_patchrotation.c
r_plane.cpp
r_segs.cpp
r_skins.c
r_sky.c
r_splats.c
r_things.cpp
r_portal.c
p_ceilng.c
p_enemy.c
p_floor.c
p_inter.c
p_lights.c
p_map.c
p_maputl.c
p_mobj.c
p_polyobj.c
p_saveg.c
p_setup.c
p_sight.c
p_slopes.c
p_spec.c
p_telept.c
p_tick.c
p_user.c
k_director.c
k_kart.c
k_stats.c
lua_baselib.c
lua_blockmaplib.c
lua_consolelib.c
lua_hooklib.c
lua_hudlib.c
lua_hudlib_drawlist.c
lua_infolib.c
lua_maplib.c
lua_mathlib.c
lua_mobjlib.c
lua_playerlib.c
lua_script.c
lua_skinlib.c
lua_thinkerlib.c
lua_udatalib.c
lua_glib.c
+474 -137
View File
@@ -1,8 +1,10 @@
// SONIC ROBO BLAST 2
// SONIC ROBO BLAST 2 KART
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2018 by Sonic Team Junior.
// Copyright (C) 2024 by Vivian "toastergrl" Grannell.
// Copyright (C) 2024 by Kart Krew.
// Copyright (C) 2020 by Sonic Team Junior.
// Copyright (C) 2000 by DooM Legacy Team.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
@@ -33,36 +35,31 @@ static const UINT8 GRAYSRANGE = 16;
static const UINT8 BROWNS = (3*16);
static const UINT8 YELLOWS = (7*16);
static const UINT8 GREENS = (10*16);
//static const UINT8 CYANS = (13*16);
static const UINT8 BLUES = (14*16);
static const UINT8 DBLACK = 31;
static const UINT8 DWHITE = 0;
static const UINT8 NOCLIMBREDS = 248;
static const UINT8 NOCLIMBREDRANGE = 8;
static const UINT8 NOCLIMBGRAYS = 204;
static const UINT8 NOCLIMBBROWNS = (2*16);
static const UINT8 NOCLIMBYELLOWS = (11*16);
// Automap colors
#define BACKGROUND DBLACK
#define WALLCOLORS (REDS + REDRANGE/2)
#define WALLRANGE (REDRANGE/2)
#define NOCLIMBWALLCOLORS (NOCLIMBREDS + NOCLIMBREDRANGE/2)
#define NOCLIMBWALLRANGE (NOCLIMBREDRANGE/2)
#define THOKWALLCOLORS REDS
#define THOKWALLRANGE REDRANGE
#define NOCLIMBTHOKWALLCOLORS NOCLIMBREDS
#define NOCLIMBTHOKWALLRANGE NOCLIMBREDRANGE
#define TSWALLCOLORS GRAYS
#define TSWALLRANGE GRAYSRANGE
#define NOCLIMBTSWALLCOLORS NOCLIMBGRAYS
#define TSWALLCOLORS DWHITE
#define TSFINISHLINE (GREENS + 2)
#define TSFOFINFO (BLUES + 4)
#define FDWALLCOLORS BROWNS
#define NOCLIMBFDWALLCOLORS NOCLIMBBROWNS
#define CDWALLCOLORS YELLOWS
#define NOCLIMBCDWALLCOLORS NOCLIMBYELLOWS
#define THINGCOLORS GREENS
#define GRIDCOLORS (GRAYS + GRAYSRANGE/2)
#define XHAIRCOLORS GRAYS
// Automap passes
#define PASS_SOLID 1
#define PASS_INTANGIBLE 2
#define PASS_FOF 4
// controls
#define AM_PANUPKEY KEY_UPARROW
#define AM_PANDOWNKEY KEY_DOWNARROW
@@ -110,11 +107,6 @@ typedef struct
mpoint_t a, b;
} mline_t;
typedef struct
{
fixed_t slp, islp;
} islope_t;
//
// The vector graphics for the automap.
// A line drawing of the player pointing right,
@@ -136,16 +128,14 @@ static const mline_t player_arrow[] = {
#undef R
#define NUMPLYRLINES (sizeof (player_arrow)/sizeof (mline_t))
#if 0
#define R (FRACUNIT)
static mline_t triangle_guy[] = {
{ { (fixed_t)-.867f*R, (fixed_t)-.5f*R }, { (fixed_t) .867f*R, (fixed_t)-.5f*R } },
{ { (fixed_t) .867f*R, (fixed_t)-.5f*R }, { (fixed_t) 0, (fixed_t) R } },
{ { (fixed_t) 0, (fixed_t) R }, { (fixed_t)-.867f*R, (fixed_t)-.5f*R } }
static const mline_t cross_mark[] =
{
{ { -R, 0 }, { R, 0} },
{ { 0, -R }, { 0, R } },
};
#undef R
#define NUMTRIANGLEGUYLINES (sizeof (triangle_guy)/sizeof (mline_t))
#endif
#define NUMCROSSMARKLINES (sizeof(cross_mark)/sizeof(mline_t))
#define R (FRACUNIT)
static const mline_t thintriangle_guy[] = {
@@ -162,10 +152,14 @@ static boolean draw_grid = false;
boolean automapactive = false;
boolean am_recalc = false; //added : 05-02-98 : true when screen size changes
static boolean am_stopped = true;
static boolean am_minigen = false;
static UINT8 *am_buf = NULL;
static INT32 f_x, f_y; // location of window on screen (always zero for both)
static INT32 f_w, f_h; // size of window on screen (always the screen width and height respectively)
static boolean m_keydown[4]; // which window panning keys are being pressed down?
static mpoint_t m_paninc; // how far the window pans each tic (map coords)
static fixed_t mtof_zoommul; // how far the window zooms in each tic (map coords)
static fixed_t ftom_zoommul; // how far the window zooms in each tic (fb coords)
@@ -203,14 +197,15 @@ static fixed_t scale_mtof = (fixed_t)INITSCALEMTOF;
// used by FTOM to scale from frame-buffer-to-map coords (=1/scale_mtof)
static fixed_t scale_ftom;
static player_t *plr; // the player represented by an arrow
static player_t *plr = NULL; // the player represented by an arrow
static INT32 followplayer = true; // specifies whether to follow the player around
static boolean followplayer = true; // specifies whether to follow the player around
// function for drawing lines, depends on rendermode
typedef void (*AMDRAWFLINEFUNC) (const fline_t *fl, INT32 color);
static AMDRAWFLINEFUNC AM_drawFline;
static void AM_drawPixel(INT32 xx, INT32 yy, INT32 cc);
static void AM_drawFline_soft(const fline_t *fl, INT32 color);
static void AM_activateNewScale(void)
@@ -242,7 +237,7 @@ static inline void AM_restoreScaleAndLoc(void)
m_x = old_m_x;
m_y = old_m_y;
}
else
else if (plr && plr->mo)
{
m_x = (plr->mo->x >> FRACTOMAPBITS) - m_w/2;
m_y = (plr->mo->y >> FRACTOMAPBITS) - m_h/2;
@@ -260,28 +255,15 @@ static inline void AM_restoreScaleAndLoc(void)
*/
static void AM_findMinMaxBoundaries(void)
{
size_t i;
fixed_t a;
fixed_t b;
fixed_t a, b;
min_x = min_y = +INT32_MAX;
max_x = max_y = -INT32_MAX;
min_x = minimapinfo.min_x << MAPBITS;
max_x = minimapinfo.max_x << MAPBITS;
min_y = minimapinfo.min_y << MAPBITS;
max_y = minimapinfo.max_y << MAPBITS;
for (i = 0; i < numvertexes; i++)
{
if (vertexes[i].x < min_x)
min_x = vertexes[i].x;
else if (vertexes[i].x > max_x)
max_x = vertexes[i].x;
if (vertexes[i].y < min_y)
min_y = vertexes[i].y;
else if (vertexes[i].y > max_y)
max_y = vertexes[i].y;
}
max_w = (max_x >>= FRACTOMAPBITS) - (min_x >>= FRACTOMAPBITS);
max_h = (max_y >>= FRACTOMAPBITS) - (min_y >>= FRACTOMAPBITS);
max_w = minimapinfo.map_w << MAPBITS;
max_h = minimapinfo.map_h << MAPBITS;
a = FixedDiv(f_w<<FRACBITS, max_w);
b = FixedDiv(f_h<<FRACBITS, max_h);
@@ -336,7 +318,8 @@ static void AM_initVariables(void)
break;
plr = &players[pnum];
if (plr != NULL && plr->mo != NULL)
if (plr && plr->mo)
{
m_x = (plr->mo->x >> FRACTOMAPBITS) - m_w/2;
m_y = (plr->mo->y >> FRACTOMAPBITS) - m_h/2;
@@ -350,22 +333,23 @@ static void AM_initVariables(void)
old_m_h = m_h;
}
//
// Called when the screen size changes.
//
static void AM_FrameBufferInit(void)
{
f_x = f_y = 0;
f_w = vid.width;
f_h = vid.height;
am_buf = vid.screens[0];
}
//
// should be called at the start of every level
// right now, i figure it out myself
//
static void AM_LevelInit(void)
{
f_x = f_y = 0;
f_w = vid.width;
f_h = vid.height;
AM_drawFline = AM_drawFline_soft;
#ifdef HWRENDER
if (rendermode == render_opengl)
AM_drawFline = HWR_drawAMline;
#endif
AM_findMinMaxBoundaries();
scale_mtof = FixedDiv(min_scale_mtof*10, 7*FRACUNIT);
if (scale_mtof > max_scale_mtof)
@@ -387,7 +371,7 @@ void AM_Stop(void)
*
* \sa AM_Stop
*/
static inline void AM_Start(void)
void AM_Start(void)
{
static INT32 lastlevel = -1;
@@ -396,8 +380,12 @@ static inline void AM_Start(void)
am_stopped = false;
if (lastlevel != gamemap || am_recalc) // screen size changed
{
AM_LevelInit();
lastlevel = gamemap;
AM_FrameBufferInit();
if (lastlevel != gamemap)
{
AM_LevelInit();
lastlevel = gamemap;
}
am_recalc = false;
}
AM_initVariables();
@@ -423,6 +411,28 @@ static void AM_maxOutWindowScale(void)
AM_activateNewScale();
}
//
// set window panning
//
static void AM_setWindowPanning(void)
{
// up and down
if (m_keydown[2]) // pan up
m_paninc.y = FTOM(F_PANINC);
else if (m_keydown[3]) // pan down
m_paninc.y = -FTOM(F_PANINC);
else
m_paninc.y = 0;
// left and right
if (m_keydown[0]) // pan right
m_paninc.x = FTOM(F_PANINC);
else if (m_keydown[1]) // pan left
m_paninc.x = -FTOM(F_PANINC);
else
m_paninc.x = 0;
}
/** Responds to user inputs in automap mode.
*
* \param ev Event to possibly respond to.
@@ -455,35 +465,49 @@ boolean AM_Responder(event_t *ev)
{
case AM_PANRIGHTKEY: // pan right
if (!followplayer)
m_paninc.x = FTOM(F_PANINC);
{
m_keydown[0] = true;
AM_setWindowPanning();
}
else
rc = false;
break;
case AM_PANLEFTKEY: // pan left
if (!followplayer)
m_paninc.x = -FTOM(F_PANINC);
{
m_keydown[1] = true;
AM_setWindowPanning();
}
else
rc = false;
break;
case AM_PANUPKEY: // pan up
if (!followplayer)
m_paninc.y = FTOM(F_PANINC);
{
m_keydown[2] = true;
AM_setWindowPanning();
}
else
rc = false;
break;
case AM_PANDOWNKEY: // pan down
if (!followplayer)
m_paninc.y = -FTOM(F_PANINC);
{
m_keydown[3] = true;
AM_setWindowPanning();
}
else
rc = false;
break;
case AM_ZOOMOUTKEY: // zoom out
mtof_zoommul = M_ZOOMOUT;
ftom_zoommul = M_ZOOMIN;
AM_setWindowPanning();
break;
case AM_ZOOMINKEY: // zoom in
mtof_zoommul = M_ZOOMIN;
ftom_zoommul = M_ZOOMOUT;
AM_setWindowPanning();
break;
case AM_TOGGLEKEY:
AM_Stop();
@@ -497,6 +521,7 @@ boolean AM_Responder(event_t *ev)
}
else
AM_restoreScaleAndLoc();
AM_setWindowPanning();
break;
case AM_FOLLOWKEY:
followplayer = !followplayer;
@@ -516,14 +541,32 @@ boolean AM_Responder(event_t *ev)
switch (ev->data1)
{
case AM_PANRIGHTKEY:
if (!followplayer)
{
m_keydown[0] = false;
AM_setWindowPanning();
}
break;
case AM_PANLEFTKEY:
if (!followplayer)
m_paninc.x = 0;
{
m_keydown[1] = false;
AM_setWindowPanning();
}
break;
case AM_PANUPKEY:
if (!followplayer)
{
m_keydown[2] = false;
AM_setWindowPanning();
}
break;
case AM_PANDOWNKEY:
if (!followplayer)
m_paninc.y = 0;
{
m_keydown[3] = false;
AM_setWindowPanning();
}
break;
case AM_ZOOMOUTKEY:
case AM_ZOOMINKEY:
@@ -555,6 +598,9 @@ static inline void AM_changeWindowScale(void)
static inline void AM_doFollowPlayer(void)
{
if (!plr || !plr->mo)
return;
if (f_oldloc.x != plr->mo->x || f_oldloc.y != plr->mo->y)
{
m_x = FTOM(MTOF(plr->mo->x >> FRACTOMAPBITS)) - m_w/2;
@@ -724,6 +770,16 @@ static boolean AM_clipMline(const mline_t *ml, fline_t *fl)
}
#undef DOOUTCODE
//
// Draws a pixel.
//
static void AM_drawPixel(INT32 xx, INT32 yy, INT32 cc)
{
if (xx < 0 || yy < 0 || xx >= f_w || yy >= f_h)
return; // off the screen
am_buf[(yy*f_w) + xx] = cc;
}
//
// Classic Bresenham w/ whatever optimizations needed for speed
//
@@ -745,8 +801,6 @@ static void AM_drawFline_soft(const fline_t *fl, INT32 color)
}
#endif
#define PUTDOT(xx,yy,cc) V_DrawFill(xx,yy,1,1,cc|V_NOSCALESTART);
dx = fl->b.x - fl->a.x;
ax = 2 * (dx < 0 ? -dx : dx);
sx = dx < 0 ? -1 : 1;
@@ -763,7 +817,7 @@ static void AM_drawFline_soft(const fline_t *fl, INT32 color)
d = ay - ax/2;
for (;;)
{
PUTDOT(x, y, color)
AM_drawPixel(x, y, color);
if (x == fl->b.x)
return;
if (d >= 0)
@@ -780,7 +834,7 @@ static void AM_drawFline_soft(const fline_t *fl, INT32 color)
d = ax - ay/2;
for (;;)
{
PUTDOT(x, y, color)
AM_drawPixel(x, y, color);
if (y == fl->b.y)
return;
if (d >= 0)
@@ -792,8 +846,6 @@ static void AM_drawFline_soft(const fline_t *fl, INT32 color)
d += ax;
}
}
#undef PUTDOT
}
//
@@ -815,17 +867,18 @@ static void AM_drawGrid(INT32 color)
fixed_t x, y;
fixed_t start, end;
mline_t ml;
fixed_t gridsize = (MAPBLOCKUNITS<<MAPBITS);
// Figure out start of vertical gridlines
start = m_x;
if ((start - bmaporgx) % (MAPBLOCKUNITS<<FRACBITS))
start += (MAPBLOCKUNITS<<FRACBITS) - ((start - bmaporgx) % (MAPBLOCKUNITS<<FRACBITS));
if ((start - (bmaporgx>>FRACTOMAPBITS)) % gridsize)
start += gridsize - ((start - (bmaporgx>>FRACTOMAPBITS)) % gridsize);
end = m_x + m_w;
// draw vertical gridlines
ml.a.y = m_y;
ml.b.y = m_y + m_h;
for (x = start; x < end; x += (MAPBLOCKUNITS<<FRACBITS))
for (x = start; x < end; x += gridsize)
{
ml.a.x = x;
ml.b.x = x;
@@ -834,14 +887,14 @@ static void AM_drawGrid(INT32 color)
// Figure out start of horizontal gridlines
start = m_y;
if ((start - bmaporgy) % (MAPBLOCKUNITS<<FRACBITS))
start += (MAPBLOCKUNITS<<FRACBITS) - ((start - bmaporgy) % (MAPBLOCKUNITS<<FRACBITS));
if ((start - (bmaporgy>>FRACTOMAPBITS)) % gridsize)
start += gridsize - ((start - (bmaporgy>>FRACTOMAPBITS)) % gridsize);
end = m_y + m_h;
// draw horizontal gridlines
ml.a.x = m_x;
ml.b.x = m_x + m_w;
for (y = start; y < end; y += (MAPBLOCKUNITS<<FRACBITS))
for (y = start; y < end; y += gridsize)
{
ml.a.y = y;
ml.b.y = y;
@@ -849,14 +902,118 @@ static void AM_drawGrid(INT32 color)
}
}
static INT32 GetDamage(INT32 special)
{
switch (special)
{
case 1: // Damage (Generic)
return 1;
case 6: // Death Pit (Camera Tilt)
return 6;
case 7: // Death Pit (No Camera Tilt)
return 7;
case 8: // Instant Kill
return 8;
default:
return 0;
}
}
static INT32 GetOffroad(INT32 special)
{
switch (special)
{
case 2: // Offroad (Weak)
return 2;
case 3: // Offroad
return 3;
case 4: // Offroad (Strong)
return 4;
default:
return 0;
}
}
#define SLOPEPARAMS(slope, end1, end2, normalheight) \
end1 = (P_GetZAt(slope, lines[i].v1->x, lines[i].v1->y, ((normalheight + FRACUNIT/2) >> FRACBITS)) + FRACUNIT/2) >> FRACBITS; \
end2 = (P_GetZAt(slope, lines[i].v2->x, lines[i].v2->y, ((normalheight + FRACUNIT/2) >> FRACBITS)) + FRACUNIT/2) >> FRACBITS;
static ffloor_t *AM_CompareFOFs(size_t i, ffloor_t *rover, ffloor_t *secondarystore)
{
ffloor_t *secondaryrover = NULL;
for (; rover; rover = rover->next)
{
fixed_t rovt1, rovt2;
fixed_t rovb1, rovb2;
if (!(rover->flags & FF_EXISTS))
continue;
if (!(rover->flags & FF_BLOCKPLAYER))
continue;
SLOPEPARAMS(*rover->t_slope, rovt1, rovt2, *rover->topheight)
SLOPEPARAMS(*rover->b_slope, rovb1, rovb2, *rover->bottomheight)
for (secondaryrover = secondarystore; secondaryrover; secondaryrover = secondaryrover->next)
{
fixed_t sect1, sect2;
fixed_t secb1, secb2;
if (!(secondaryrover->flags & FF_EXISTS))
continue;
if (!(secondaryrover->flags & FF_BLOCKPLAYER))
continue;
if (secondaryrover->secnum == rover->secnum)
break;
SLOPEPARAMS(*secondaryrover->t_slope, sect1, sect2, *secondaryrover->topheight)
SLOPEPARAMS(*secondaryrover->b_slope, secb1, secb2, *secondaryrover->bottomheight)
if (rovt1 != sect1)
continue;
if (rovt2 != sect2)
continue;
if (rovb1 != secb1)
continue;
if (rovb2 != secb2)
continue;
// this is fucking horrible
INT32 damage1, damage2;
INT32 offroad1, offroad2;
INT32 special1, special2;
special1 = GETSECSPECIAL(sectors[rover->secnum].special, 1);
special2 = GETSECSPECIAL(sectors[secondaryrover->secnum].special, 1);
damage1 = GetDamage(special1);
damage2 = GetDamage(special2);
offroad1 = GetOffroad(special1);
offroad2 = GetOffroad(special2);
if (damage1 != damage2
//|| sectors[rover->secnum].friction != sectors[secondaryrover->secnum].friction
|| offroad1 != offroad2)
continue;
break;
}
if (secondaryrover == NULL)
break;
}
return rover;
}
//
// Determines visible lines, draws them.
// This is LineDef based, not LineSeg based.
//
static inline void AM_drawWalls(void)
static void AM_drawWalls(UINT8 pass)
{
size_t i;
static mline_t l;
const fixed_t maxstep = FixedMul(MAXSTEPMOVE, mapobjectscale)>>FRACBITS;
fixed_t frontf1,frontf2, frontc1, frontc2; // front floor/ceiling ends
fixed_t backf1 = 0, backf2 = 0, backc1 = 0, backc2 = 0; // back floor ceiling ends
@@ -866,74 +1023,142 @@ static inline void AM_drawWalls(void)
l.a.y = lines[i].v1->y >> FRACTOMAPBITS;
l.b.x = lines[i].v2->x >> FRACTOMAPBITS;
l.b.y = lines[i].v2->y >> FRACTOMAPBITS;
#define SLOPEPARAMS(slope, end1, end2, normalheight) \
if (slope) { \
end1 = P_GetZAt(slope, lines[i].v1->x, lines[i].v1->y); \
end2 = P_GetZAt(slope, lines[i].v2->x, lines[i].v2->y); \
} else \
end1 = end2 = normalheight;
SLOPEPARAMS(lines[i].frontsector->f_slope, frontf1, frontf2, lines[i].frontsector->floorheight)
SLOPEPARAMS(lines[i].frontsector->c_slope, frontc1, frontc2, lines[i].frontsector->ceilingheight)
if (lines[i].backsector) {
SLOPEPARAMS(lines[i].backsector->f_slope, backf1, backf2, lines[i].backsector->floorheight)
SLOPEPARAMS(lines[i].backsector->c_slope, backc1, backc2, lines[i].backsector->ceilingheight)
}
#undef SLOPEPARAMS
if (!lines[i].backsector) // 1-sided
{
if (lines[i].flags & ML_NOCLIMB)
AM_drawMline(&l, NOCLIMBWALLCOLORS);
else
if (!(pass & PASS_SOLID))
;
else if (frontf1 != frontc1 || frontf2 != frontc2 || lines[i].frontsector->f_slope)
{
AM_drawMline(&l, TSWALLCOLORS);
}
else if (!am_minigen)
{
AM_drawMline(&l, WALLCOLORS);
}
continue;
}
else if ((backf1 == backc1 && backf2 == backc2) // Back is thok barrier
SLOPEPARAMS(lines[i].backsector->f_slope, backf1, backf2, lines[i].backsector->floorheight)
SLOPEPARAMS(lines[i].backsector->c_slope, backc1, backc2, lines[i].backsector->ceilingheight)
if ((backf1 == backc1 && backf2 == backc2) // Back is thok barrier
|| (frontf1 == frontc1 && frontf2 == frontc2)) // Front is thok barrier
{
if (backf1 == backc1 && backf2 == backc2
&& frontf1 == frontc1 && frontf2 == frontc2) // BOTH are thok barriers
{
if (lines[i].flags & ML_NOCLIMB)
AM_drawMline(&l, NOCLIMBTSWALLCOLORS);
else
AM_drawMline(&l, TSWALLCOLORS);
if (!am_minigen && (pass & PASS_INTANGIBLE))
{
AM_drawMline(&l, GRIDCOLORS);
}
}
else
else if (pass & PASS_SOLID)
{
if (lines[i].flags & ML_NOCLIMB)
AM_drawMline(&l, NOCLIMBTHOKWALLCOLORS);
else
AM_drawMline(&l, THOKWALLCOLORS);
AM_drawMline(&l, TSWALLCOLORS);
}
}
else
{
if (lines[i].flags & ML_NOCLIMB) {
if (backf1 != frontf1 || backf2 != frontf2) {
AM_drawMline(&l, NOCLIMBFDWALLCOLORS); // floor level change
}
else if (backc1 != frontc1 || backc2 != frontc2) {
AM_drawMline(&l, NOCLIMBCDWALLCOLORS); // ceiling level change
if (lines[i].flags & ML_IMPASSIBLE) // (ML_IMPASSABLE|ML_BLOCKPLAYERS)
{
if (pass & PASS_SOLID)
AM_drawMline(&l, TSWALLCOLORS); // Completely solid course boundary
}
else if ((lines[i].flags & ML_EFFECT4) // ML_MIDSOLID
&& sides[lines->sidenum[0]].midtexture)
{
if (pass & PASS_SOLID)
AM_drawMline(&l, TSWALLCOLORS); // solid midtexture, likely a course boundary
}
if ((backf1 != frontf1 && abs(backf1 - frontf1) > maxstep)
|| (backf2 != frontf2 && abs(backf2 - frontf2) > maxstep))
{
if (pass & PASS_SOLID)
AM_drawMline(&l, TSWALLCOLORS); // floor-wall, likely a course boundary
}
else if (GETSECSPECIAL(lines[i].frontsector->special, 4) == 10 || GETSECSPECIAL(lines[i].backsector->special, 4) == 10)
{
if (pass & PASS_SOLID)
AM_drawMline(&l, TSFINISHLINE); // finish line
}
else if (backf1 != frontf1 || backf2 != frontf2)
{
if (pass & PASS_INTANGIBLE)
AM_drawMline(&l, FDWALLCOLORS); // floorlevel change
}
else if (backc1 != frontc1 || backc2 != frontc2)
{
if (!(pass & PASS_INTANGIBLE))
;
else if (abs(backc1 - frontc1) < maxstep
|| abs(backc2 - frontc2) < maxstep)
{
AM_drawMline(&l, CDWALLCOLORS); // ceilinglevel change
}
else
AM_drawMline(&l, NOCLIMBTSWALLCOLORS);
{
AM_drawMline(&l, GRIDCOLORS); // ceiling-wall, not likely to be a course boundary but flagged up just in case
}
}
else
{
if (backf1 != frontf1 || backf2 != frontf2) {
AM_drawMline(&l, FDWALLCOLORS); // floor level change
ffloor_t *rover = NULL;
if (lines[i].frontsector->ffloors || lines[i].backsector->ffloors)
{
if (lines[i].backsector->ffloors == NULL)
{
// Check frontside for one solid
for (rover = lines[i].frontsector->ffloors; rover; rover = rover->next)
{
if (!(rover->flags & FF_EXISTS))
continue;
if (!(rover->flags & FF_BLOCKPLAYER))
continue;
break;
}
}
else if (lines[i].frontsector->ffloors == NULL)
{
// Check backside for one solid
for (rover = lines[i].backsector->ffloors; rover; rover = rover->next)
{
if (!(rover->flags & FF_EXISTS))
continue;
if (!(rover->flags & FF_BLOCKPLAYER))
continue;
break;
}
}
else
{
// Check to see if any secnums exist in one but not the other.
rover = AM_CompareFOFs(i, lines[i].frontsector->ffloors, lines[i].backsector->ffloors);
if (rover == NULL)
rover = AM_CompareFOFs(i, lines[i].backsector->ffloors, lines[i].frontsector->ffloors);
}
}
else if (backc1 != frontc1 || backc2 != frontc2) {
AM_drawMline(&l, CDWALLCOLORS); // ceiling level change
if (rover != NULL)
{
if (pass & PASS_FOF)
AM_drawMline(&l, TSFOFINFO); // a FOF is here but we don't know how to distinguish them yet
}
else if (!am_minigen)
{
if (pass & PASS_INTANGIBLE)
AM_drawMline(&l, GRIDCOLORS); // likely low-relevance line
}
else
AM_drawMline(&l, TSWALLCOLORS);
}
}
}
}
#undef SLOPEPARAMS
//
// Rotation in 2D.
// Used to rotate player arrow line character.
@@ -1004,23 +1229,19 @@ static inline void AM_drawPlayers(void)
player_t *p;
INT32 color = GREENS;
if (!multiplayer)
{
AM_drawLineCharacter(player_arrow, NUMPLYRLINES, 0, plr->mo->angle, DWHITE, plr->mo->x, plr->mo->y);
return;
}
// multiplayer (how??)
for (i = 0; i < MAXPLAYERS; i++)
{
if (!playeringame[i] || players[i].spectator)
continue;
if (!players[i].mo)
continue;
p = &players[i];
if (p->skincolor > 0)
color = R_GetTranslationColormap(TC_DEFAULT, p->skincolor, GTC_CACHE)[GREENS + 8];
AM_drawLineCharacter(player_arrow, NUMPLYRLINES, 0, p->mo->angle, color, p->mo->x, p->mo->y);
AM_drawLineCharacter(player_arrow, NUMPLYRLINES, 16<<FRACBITS, p->mo->angle, color, p->mo->x, p->mo->y);
}
}
@@ -1034,19 +1255,65 @@ static inline void AM_drawThings(UINT8 colors)
t = sectors[i].thinglist;
while (t)
{
AM_drawLineCharacter(thintriangle_guy, NUMTHINTRIANGLEGUYLINES, 16<<FRACBITS, t->angle, colors, t->x, t->y);
if (!t->player)
AM_drawLineCharacter(thintriangle_guy, NUMTHINTRIANGLEGUYLINES, 16<<FRACBITS, t->angle, colors, t->x, t->y);
t = t->snext;
}
}
}
/** Draws the crosshair, actually just a dot in software mode.
static inline void AM_drawSpecialThingsOnly(UINT8 colors)
{
size_t i;
for (i = 0; i < numsectors; i++)
{
mobj_t *t = NULL;
// this is fucking horrible
const INT32 special = GETSECSPECIAL(sectors[i].special, 1);
if (GetDamage(special) != 0
//|| sectors[i].friction < ORIG_FRICTION
|| GetOffroad(special) != 0)
continue;
t = sectors[i].thinglist;
while (t)
{
if (t->type == MT_RANDOMITEM
|| t->type == MT_STARPOST
|| (t->flags & MF_SPRING))
AM_drawLineCharacter(thintriangle_guy, NUMTHINTRIANGLEGUYLINES, 16<<FRACBITS, t->angle, colors, t->x, t->y);
t = t->snext;
}
}
}
/** Draws the crosshair.
*
* \param color Color for the crosshair.
*/
static inline void AM_drawCrosshair(UINT8 color)
{
V_DrawFill(f_w/2 + f_x, f_h/2 + f_y, 1, 1, color|V_NOSCALESTART);
const fixed_t scale = 4<<FRACBITS;
size_t i;
fline_t fl;
for (i = 0; i < NUMCROSSMARKLINES; i++)
{
fl.a.x = FixedMul(cross_mark[i].a.x, scale) >> FRACBITS;
fl.a.y = FixedMul(cross_mark[i].a.y, scale) >> FRACBITS;
fl.b.x = FixedMul(cross_mark[i].b.x, scale) >> FRACBITS;
fl.b.y = FixedMul(cross_mark[i].b.y, scale) >> FRACBITS;
fl.a.x += f_x + (f_w / 2);
fl.a.y += f_y + (f_h / 2);
fl.b.x += f_x + (f_w / 2);
fl.b.y += f_y + (f_h / 2);
AM_drawFline(&fl, color);
}
}
/** Draws the automap.
@@ -1056,11 +1323,81 @@ void AM_Drawer(void)
if (!automapactive)
return;
AM_drawFline = AM_drawFline_soft;
#ifdef HWRENDER
if (rendermode == render_opengl)
AM_drawFline = HWR_drawAMline;
#endif
AM_clearFB(BACKGROUND);
if (draw_grid) AM_drawGrid(GRIDCOLORS);
AM_drawWalls();
AM_drawPlayers();
AM_drawWalls(PASS_FOF|PASS_INTANGIBLE|PASS_SOLID);
AM_drawThings(THINGCOLORS);
AM_drawPlayers();
AM_drawCrosshair(XHAIRCOLORS);
if (!followplayer) AM_drawCrosshair(XHAIRCOLORS);
}
minigen_t *AM_MinimapGenerate(INT32 mul)
{
static minigen_t ret = {0};
if (automapactive)
return NULL;
am_minigen = true;
AM_drawFline = AM_drawFline_soft; // yes, even in GL
//AM_FrameBufferInit();
f_x = f_y = 0;
ret.w = f_w = minimapinfo.minimap_w * mul;
ret.h = f_h = minimapinfo.minimap_h * mul;
am_buf = ret.buf = NULL;
//AM_LevelInit();
AM_findMinMaxBoundaries();
scale_mtof = min_scale_mtof - (min_scale_mtof/20);
scale_ftom = FixedDiv(FRACUNIT, scale_mtof);
//AM_initVariables();
f_oldloc.x = INT32_MAX;
m_paninc.x = m_paninc.y = 0;
ftom_zoommul = FRACUNIT;
mtof_zoommul = FRACUNIT;
m_w = FTOM(f_w);
m_h = FTOM(f_h);
//AM_changeWindowLoc();
m_x = min_x - FixedMul(m_w, FRACUNIT/40);
m_y = min_y - FixedMul(m_h, FRACUNIT/40);
m_x2 = m_x + m_w;
m_y2 = m_y + m_h;
// for saving & restoring
old_m_x = m_x;
old_m_y = m_y;
old_m_w = m_w;
old_m_h = m_h;
am_buf = ret.buf = malloc((f_w*f_h));
if (ret.buf == NULL)
return NULL;
//AM_clearFB(BACKGROUND);
memset(am_buf, 0xff, (f_w*f_h));
AM_drawSpecialThingsOnly(BACKGROUND);
AM_drawWalls(PASS_FOF);
AM_drawWalls(PASS_INTANGIBLE);
AM_drawWalls(PASS_SOLID);
am_buf = NULL;
am_recalc = true;
am_minigen = false;
return &ret;
}
+17 -8
View File
@@ -1,8 +1,10 @@
// SONIC ROBO BLAST 2
// SONIC ROBO BLAST 2 KART
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2018 by Sonic Team Junior.
// Copyright (C) 2024 by Vivian "toastergrl" Grannell.
// Copyright (C) 2024 by Kart Krew.
// Copyright (C) 2020 by Sonic Team Junior.
// Copyright (C) 2000 by DooM Legacy Team.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
@@ -26,11 +28,6 @@ typedef struct
fpoint_t a, b;
} fline_t;
// Used by ST StatusBar stuff.
#define AM_MSGHEADER (('a'<<24)+('m'<<16))
#define AM_MSGENTERED (AM_MSGHEADER | ('e'<<8))
#define AM_MSGEXITED (AM_MSGHEADER | ('x'<<8))
extern boolean am_recalc; // true if screen size changes
extern boolean automapactive; // In AutoMap mode?
@@ -43,7 +40,19 @@ void AM_Ticker(void);
// Called by main loop, instead of view drawer if automap is active.
void AM_Drawer(void);
// Enables the automap.
void AM_Start(void);
// Called to force the automap to quit if the level is completed while it is up.
void AM_Stop(void);
typedef struct
{
INT32 w, h;
UINT8 *buf;
} minigen_t;
// Minimap generation
minigen_t *AM_MinimapGenerate(INT32 mul);
#endif
-4
View File
@@ -184,8 +184,6 @@ void I_OutputMsg(const char *fmt, ...)
void I_StartupMouse(void){}
void I_StartupMouse2(void){}
void I_StartupKeyboard(void){}
INT32 I_GetKey(void)
@@ -242,8 +240,6 @@ void I_GetJoystickEvents(void){}
void I_GetJoystick2Events(void){}
void I_GetMouseEvents(void){}
char *I_GetEnv(const char *name)
{
LOGW("I_GetEnv() called?!");
-1
View File
@@ -46,7 +46,6 @@ INT32 VID_SetMode(INT32 modenum)
vid.modenum = 0;
vid.width = 320;
vid.height = 240;
vid.bpp = 1;
vid.buffer = android_surface;
return 0;
}
+2 -5
View File
@@ -36,7 +36,7 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
return;
// Lua can handle it!
if (LUAh_BotAI(sonic, tails, cmd))
if (LUA_HookBotAI(sonic, tails, cmd))
return;
if (tails->player->pflags & (PF_MACESPIN|PF_ITEMHANG))
@@ -118,11 +118,8 @@ void B_BuildTiccmd(player_t *player, ticcmd_t *cmd)
return;
}
// Bot AI isn't programmed in analog.
//CV_SetValue(&cv_analog2, false);
// Let Lua scripts build ticcmds
if (LUAh_BotTiccmd(player, cmd))
if (LUA_HookTiccmd(player, cmd, HOOK(BotTiccmd)))
return;
// We don't have any main character AI, sorry. D:
-55
View File
@@ -1,55 +0,0 @@
ifdef UNIXCOMMON
LUA_CFLAGS+=-DLUA_USE_POSIX
endif
ifdef LINUX
LUA_CFLAGS+=-DLUA_USE_POSIX
endif
ifdef GCC43
ifndef GCC44
WFLAGS+=-Wno-logical-op
endif
endif
OBJS:=$(OBJS) \
$(OBJDIR)/lapi.o \
$(OBJDIR)/lbaselib.o \
$(OBJDIR)/ldo.o \
$(OBJDIR)/ldblib.o \
$(OBJDIR)/lfunc.o \
$(OBJDIR)/linit.o \
$(OBJDIR)/liolib.o \
$(OBJDIR)/llex.o \
$(OBJDIR)/lmem.o \
$(OBJDIR)/lobject.o \
$(OBJDIR)/lstate.o \
$(OBJDIR)/lstrlib.o \
$(OBJDIR)/ltablib.o \
$(OBJDIR)/lundump.o \
$(OBJDIR)/lzio.o \
$(OBJDIR)/lauxlib.o \
$(OBJDIR)/lcode.o \
$(OBJDIR)/ldebug.o \
$(OBJDIR)/ldump.o \
$(OBJDIR)/lgc.o \
$(OBJDIR)/lopcodes.o \
$(OBJDIR)/lparser.o \
$(OBJDIR)/lstring.o \
$(OBJDIR)/ltable.o \
$(OBJDIR)/ltm.o \
$(OBJDIR)/lvm.o \
$(OBJDIR)/lua_script.o \
$(OBJDIR)/lua_baselib.o \
$(OBJDIR)/lua_blockmaplib.o \
$(OBJDIR)/lua_mathlib.o \
$(OBJDIR)/lua_hooklib.o \
$(OBJDIR)/lua_consolelib.o \
$(OBJDIR)/lua_infolib.o \
$(OBJDIR)/lua_mobjlib.o \
$(OBJDIR)/lua_playerlib.o \
$(OBJDIR)/lua_skinlib.o \
$(OBJDIR)/lua_thinkerlib.o \
$(OBJDIR)/lua_maplib.o \
$(OBJDIR)/lua_hudlib.o \
$(OBJDIR)/lua_hudlib_drawlist.o \
$(OBJDIR)/lua_udatalib.o \
$(OBJDIR)/lua_glib.o
+26
View File
@@ -0,0 +1,26 @@
lapi.c
lauxlib.c
lbaselib.c
ldblib.c
lcode.c
ldebug.c
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
liolib.c
llex.c
lmem.c
lobject.c
lopcodes.c
lparser.c
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
ltm.c
lundump.c
lvm.c
lzio.c
+30 -23
View File
@@ -1,7 +1,7 @@
// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2018 by Sonic Team Junior.
// Copyright (C) 1999-2024 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
@@ -11,6 +11,9 @@
/// \brief Macros to read/write from/to a UINT8 *,
/// used for packet creation and such
#ifndef __BYTEPTR_H__
#define __BYTEPTR_H__
#if defined (__alpha__) || defined (__arm__) || defined (__mips__) || defined (__ia64__) || defined (__clang__)
#define DEALIGNED
#endif
@@ -25,6 +28,7 @@
#define WRITEUINT8(p,b) do { UINT8 *p_tmp = (void *)p; const UINT8 tv = ( UINT8)(b); memcpy(p, &tv, sizeof( UINT8)); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITESINT8(p,b) do { SINT8 *p_tmp = (void *)p; const SINT8 tv = ( UINT8)(b); memcpy(p, &tv, sizeof( UINT8)); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT16(p,b) do { INT16 *p_tmp = (void *)p; const INT16 tv = ( INT16)(b); memcpy(p, &tv, sizeof( INT16)); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT16_2(p,b) do { INT16 *p_tmp = ( INT16 *)p; const INT16 tv = ( INT16)(b); memcpy(p, &tv, sizeof( INT16)); p_tmp++; *(void**)(&(p)) = (void *)p_tmp; } while (0) // dumb hack for mumble
#define WRITEUINT16(p,b) do { UINT16 *p_tmp = (void *)p; const UINT16 tv = ( UINT16)(b); memcpy(p, &tv, sizeof( UINT16)); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT32(p,b) do { INT32 *p_tmp = (void *)p; const INT32 tv = ( INT32)(b); memcpy(p, &tv, sizeof( INT32)); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEUINT32(p,b) do { UINT32 *p_tmp = (void *)p; const UINT32 tv = ( UINT32)(b); memcpy(p, &tv, sizeof( UINT32)); p_tmp++; p = (void *)p_tmp; } while (0)
@@ -35,6 +39,7 @@
#define WRITEUINT8(p,b) do { UINT8 *p_tmp = ( UINT8 *)p; *p_tmp = ( UINT8)(b); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITESINT8(p,b) do { SINT8 *p_tmp = ( SINT8 *)p; *p_tmp = ( SINT8)(b); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT16(p,b) do { INT16 *p_tmp = ( INT16 *)p; *p_tmp = ( INT16)(b); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT16_2(p,b) do { INT16 *p_tmp = ( INT16 *)p; *p_tmp = ( INT16)(b); p_tmp++; *(void**)(&(p)) = (void *)p_tmp; } while (0) // dumb hack for mumble
#define WRITEUINT16(p,b) do { UINT16 *p_tmp = ( UINT16 *)p; *p_tmp = ( UINT16)(b); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEINT32(p,b) do { INT32 *p_tmp = ( INT32 *)p; *p_tmp = ( INT32)(b); p_tmp++; p = (void *)p_tmp; } while (0)
#define WRITEUINT32(p,b) do { UINT32 *p_tmp = ( UINT32 *)p; *p_tmp = ( UINT32)(b); p_tmp++; p = (void *)p_tmp; } while (0)
@@ -150,7 +155,7 @@ FUNCINLINE static ATTRINLINE UINT32 readulong(void *ptr)
#undef DEALIGNED
#define WRITESTRINGN(p, s, n) ({ \
#define WRITESTRINGN(p, s, n) do { \
size_t tmp_i; \
\
for (tmp_i = 0; tmp_i < n && s[tmp_i] != '\0'; tmp_i++) \
@@ -158,70 +163,72 @@ FUNCINLINE static ATTRINLINE UINT32 readulong(void *ptr)
\
if (tmp_i < n) \
WRITECHAR(p, '\0'); \
})
} while (0)
#define WRITESTRINGL(p, s, n) ({ \
#define WRITESTRINGL(p, s, n) do { \
size_t tmp_i; \
\
for (tmp_i = 0; tmp_i < n - 1 && s[tmp_i] != '\0'; tmp_i++) \
WRITECHAR(p, s[tmp_i]); \
\
WRITECHAR(p, '\0'); \
})
} while (0)
#define WRITESTRING(p, s) ({ \
#define WRITESTRING(p, s) do { \
size_t tmp_i; \
\
for (tmp_i = 0; s[tmp_i] != '\0'; tmp_i++) \
WRITECHAR(p, s[tmp_i]); \
\
WRITECHAR(p, '\0'); \
})
} while (0)
#define WRITEMEM(p, s, n) ({ \
memcpy(p, s, n); \
p += n; \
})
#define WRITEMEM(p, s, n) do { \
memcpy(p, s, n); \
p += n; \
} while (0)
#define SKIPSTRING(p) while (READCHAR(p) != '\0')
#define SKIPSTRINGN(p, n) ({ \
#define SKIPSTRINGN(p, n) do { \
size_t tmp_i = 0; \
\
while (tmp_i < n && READCHAR(p) != '\0') \
tmp_i++; \
})
} while (0)
#define SKIPSTRINGL(p, n) SKIPSTRINGN(p, n)
#define READSTRINGN(p, s, n) ({ \
#define READSTRINGN(p, s, n) do { \
size_t tmp_i = 0; \
\
while (tmp_i < n && (s[tmp_i] = READCHAR(p)) != '\0') \
tmp_i++; \
\
s[tmp_i] = '\0'; \
})
} while (0)
#define READSTRINGL(p, s, n) ({ \
#define READSTRINGL(p, s, n) do { \
size_t tmp_i = 0; \
\
while (tmp_i < n - 1 && (s[tmp_i] = READCHAR(p)) != '\0') \
tmp_i++; \
\
s[tmp_i] = '\0'; \
})
} while (0)
#define READSTRING(p, s) ({ \
#define READSTRING(p, s) do { \
size_t tmp_i = 0; \
\
while ((s[tmp_i] = READCHAR(p)) != '\0') \
tmp_i++; \
\
s[tmp_i] = '\0'; \
})
} while (0)
#define READMEM(p, s, n) ({ \
memcpy(s, p, n); \
p += n; \
})
#define READMEM(p, s, n) do { \
memcpy(s, p, n); \
p += n; \
} while (0)
#endif // __BYTEPTR_H__
+38 -31
View File
@@ -240,7 +240,6 @@ void COM_ImmedExecute(const char *ptext)
while (i < strlen(ptext))
{
quotes = 0;
for (j = 0; i < strlen(ptext); i++,j++)
{
@@ -628,7 +627,7 @@ static void COM_ExecuteString(char *ptext)
// check cvars
// Hurdler: added at Ebola's request ;)
// (don't flood the console in software mode with bad gr_xxx command)
// (don't flood the console in software mode with bad gl_xxx command)
if (!CV_Command() && con_destlines)
CONS_Printf(M_GetText("Unknown command '%s'\n"), COM_Argv(0));
}
@@ -817,12 +816,17 @@ static void COM_Help_f(void)
cvar = CV_FindVar(help);
if (cvar)
{
boolean floatmode = false;
const char *cvalue = NULL;
CONS_Printf("\x82""Variable %s:\n", cvar->name);
CONS_Printf(M_GetText(" flags: "));
if (cvar->flags & CV_SAVE)
CONS_Printf("AUTOSAVE ");
if (cvar->flags & CV_FLOAT)
{
CONS_Printf("FLOAT ");
floatmode = true;
}
if (cvar->flags & CV_NETVAR)
CONS_Printf("NETVAR ");
if (cvar->flags & CV_CALL)
@@ -832,30 +836,43 @@ static void COM_Help_f(void)
CONS_Printf("\n");
if (cvar->PossibleValue)
{
if (!stricmp(cvar->PossibleValue[0].strvalue, "MIN") && !stricmp(cvar->PossibleValue[1].strvalue, "MAX"))
{
CONS_Printf(" range from %d to %d\n", cvar->PossibleValue[0].value,
cvar->PossibleValue[1].value);
i = 2;
}
if (!stricmp(cvar->PossibleValue[0].strvalue, "MIN") && !stricmp(cvar->PossibleValue[1].strvalue, "MAX"))
{
if (floatmode)
{
float fu = FIXED_TO_FLOAT(cvar->PossibleValue[0].value);
float ck = FIXED_TO_FLOAT(cvar->PossibleValue[1].value);
CONS_Printf(" range from %ld%s to %ld%s\n",
(long)fu, M_Ftrim(fu),
(long)ck, M_Ftrim(ck));
}
else
CONS_Printf(" range from %d to %d\n", cvar->PossibleValue[0].value,
cvar->PossibleValue[1].value);
i = 2;
}
{
const char *cvalue = NULL;
//CONS_Printf(M_GetText(" possible value : %s\n"), cvar->name);
while (cvar->PossibleValue[i].strvalue)
{
CONS_Printf(" %-2d : %s\n", cvar->PossibleValue[i].value,
cvar->PossibleValue[i].strvalue);
if (floatmode)
CONS_Printf(" %-2f : %s\n", FIXED_TO_FLOAT(cvar->PossibleValue[i].value),
cvar->PossibleValue[i].strvalue);
else
CONS_Printf(" %-2d : %s\n", cvar->PossibleValue[i].value,
cvar->PossibleValue[i].strvalue);
if (cvar->PossibleValue[i].value == cvar->value)
cvalue = cvar->PossibleValue[i].strvalue;
i++;
}
if (cvalue)
CONS_Printf(" Current value: %s\n", cvalue);
else
CONS_Printf(" Current value: %d\n", cvar->value);
}
}
if (cvalue)
CONS_Printf(" Current value: %s\n", cvalue);
else if (cvar->string)
CONS_Printf(" Current value: %s\n", cvar->string);
else
CONS_Printf(" Current value: %d\n", cvar->value);
}
@@ -1026,7 +1043,10 @@ static void COM_Add_f(void)
}
if (( cvar->flags & CV_FLOAT ))
CV_Set(cvar, va("%f", FIXED_TO_FLOAT (cvar->value) + atof(COM_Argv(2))));
{
float n =FIXED_TO_FLOAT (cvar->value) + atof(COM_Argv(2));
CV_Set(cvar, va("%ld%s", (long)n, M_Ftrim(n)));
}
else
CV_AddValue(cvar, atoi(COM_Argv(2)));
}
@@ -1493,11 +1513,7 @@ static void Got_NetVar(UINT8 **p, INT32 playernum)
if (server)
{
UINT8 buf[2];
buf[0] = (UINT8)playernum;
buf[1] = KICK_MSG_CON_FAIL;
SendNetXCmd(XD_KICK, &buf, 2);
SendKick(playernum, KICK_MSG_CON_FAIL);
}
return;
}
@@ -1988,7 +2004,7 @@ static boolean CV_FilterJoyAxisVars(consvar_t *v, const char *valstr)
return true;
}
// Block the Xbox DInput default axes and reset to the current defaults
// Block the Xbox DInput default axes and reset to the current defaults
static boolean CV_FilterJoyAxisVars2(consvar_t *v, const char *valstr)
{
if (!stricmp(v->name, "joyaxis_turn") && !stricmp(valstr, "X-Axis"))
@@ -2045,15 +2061,6 @@ static boolean CV_FilterVarByVersion(consvar_t *v, const char *valstr)
if (GETMAJOREXECVERSION(cv_execversion.value) < 2) // 2 = 1.0.2
{
#if 0
// We don't have changed saved cvars yet
if (!stricmp(v->name, "alwaysmlook")
|| !stricmp(v->name, "alwaysmlook2")
|| !stricmp(v->name, "mousemove")
|| !stricmp(v->name, "mousemove2"))
return false;
#endif
// axis defaults were changed to be friendly to 360 controllers
// if ALL axis settings are defaults, then change them to new values
if (!CV_FilterJoyAxisVars(v, valstr))
+8
View File
@@ -13,6 +13,10 @@
#ifndef __COMMAND_H__
#define __COMMAND_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include "doomdef.h"
@@ -189,4 +193,8 @@ UINT8 CV_CheatsEnabled(void);
// Returns cvar by name. Exposed here for Lua.
consvar_t *CV_FindVar(const char *name);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // __COMMAND_H__
+98 -294
View File
@@ -32,6 +32,7 @@
#include "i_threads.h"
#include "d_main.h"
#include "m_menu.h"
#include "m_textinput.h"
#include "filesrch.h"
#ifdef HWRENDER
@@ -43,8 +44,12 @@
#ifdef HAVE_THREADS
I_mutex con_mutex;
# define Lock_state() I_lock_mutex(&con_mutex)
# define Unlock_state() I_unlock_mutex(con_mutex)
// g_in_exiting_signal_handler is an evil hack
// to avoid infinite SIGABRT recursion in the signal handler
// due to poisoned locks or mach-o kernel not supporting locks in signals
// or something like that. idk
# define Lock_state() if (!g_in_exiting_signal_handler) { I_lock_mutex(&con_mutex); }
# define Unlock_state() if (!g_in_exiting_signal_handler) { I_unlock_mutex(con_mutex); }
#else/*HAVE_THREADS*/
# define Lock_state()
# define Unlock_state()
@@ -93,9 +98,7 @@ static char inputlines[32][CON_MAXPROMPTCHARS]; // hold last 32 prompt lines
static INT32 inputline; // current input line number
static INT32 inputhist; // line number of history input line to restore
static size_t input_cur; // position of cursor in line
static size_t input_sel; // position of selection marker (I.E.: anything between this and input_cur is "selected")
static size_t input_len; // length of current line, used to bound cursor and such
static textinput_t input;
// notice: input does NOT include the "$" at the start of the line. - 11/3/16
// protos.
@@ -272,29 +275,28 @@ void CON_SetupBackColormap(void)
switch (cons_backcolor.value)
{
case 0: palindex = 15; break; // White
case 1: palindex = 31; break; // Gray
case 2: palindex = 47; break; // Sepia
case 3: palindex = 63; break; // Brown
case 4: palindex = 150; shift = 7; break; // Pink
case 5: palindex = 127; shift = 7; break; // Raspberry
case 6: palindex = 143; break; // Red
case 7: palindex = 86; shift = 7; break; // Creamsicle
case 8: palindex = 95; break; // Orange
case 9: palindex = 119; shift = 7; break; // Gold
case 10: palindex = 111; break; // Yellow
case 11: palindex = 191; shift = 7; break; // Emerald
case 12: palindex = 175; break; // Green
case 13: palindex = 219; break; // Cyan
case 14: palindex = 207; shift = 7; break; // Steel
case 15: palindex = 230; shift = 7; break; // Periwinkle
case 16: palindex = 239; break; // Blue
case 17: palindex = 199; shift = 7; break; // Purple
case 18: palindex = 255; shift = 7; break; // Lavender
case 0: palindex = 15; break; // White
case 1: palindex = 31; break; // Gray
case 2: palindex = 47; break; // Sepia
case 3: palindex = 63; break; // Brown
case 4: palindex = 150; shift = 7; break; // Pink
case 5: palindex = 127; shift = 7; break; // Raspberry
case 6: palindex = 143; break; // Red
case 7: palindex = 86; shift = 7; break; // Creamsicle
case 8: palindex = 95; break; // Orange
case 9: palindex = 119; shift = 7; break; // Gold
case 10: palindex = 111; break; // Yellow
case 11: palindex = 191; shift = 7; break; // Emerald
case 12: palindex = 175; break; // Green
case 13: palindex = 219; break; // Cyan
case 14: palindex = 207; shift = 7; break; // Steel
case 15: palindex = 230; shift = 7; break; // Periwinkle
case 16: palindex = 239; break; // Blue
case 17: palindex = 199; shift = 7; break; // Purple
case 18: palindex = 255; shift = 7; break; // Lavender
// Default green
default: palindex = 175; break;
}
}
// setup background colormap
for (i = 0, j = 0; i < 768; i += 3, j++)
@@ -454,7 +456,8 @@ static void CON_InputInit(void)
// prepare the first prompt line
memset(inputlines, 0, sizeof (inputlines));
inputline = 0;
input_cur = input_sel = input_len = 0;
M_TextInputInit(&input, inputlines[inputline], CON_MAXPROMPTCHARS);
Unlock_state();
}
@@ -604,7 +607,7 @@ static void CON_MoveConsole(void)
}
// Not instant - Increment fracmovement fractionally
fracmovement += FixedMul(cons_speed.value*vid.fdupy, renderdeltatics);
fracmovement += FixedMul(cons_speed.value*vid.fdupy, (cv_uncappedhud.value ? renderdeltatics : FRACUNIT));
if (con_curlines < con_destlines) // Move the console downwards
{
@@ -617,11 +620,11 @@ static void CON_MoveConsole(void)
con_curlines -= FixedInt(fracmovement);
if (con_curlines < con_destlines)
con_curlines = con_destlines;
if (con_destlines == 0) // If the console is being closed, not just moved up...
con_tick = 0; // ...don't show the blinking cursor
}
fracmovement %= FRACUNIT; // Reset fracmovement's integer value, but keep the fraction
Unlock_state();
@@ -631,7 +634,7 @@ INT32 CON_ShiftChar(INT32 ch)
{
if (I_UseNativeKeyboard())
return ch;
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
if (cv_keyboardlayout.value == 3)
@@ -798,113 +801,6 @@ void CON_Ticker(void)
Unlock_state();
}
//
// ----
//
// Shortcuts for adding and deleting characters, strings, and sections
// Necessary due to moving cursor
//
static void CON_InputClear(void)
{
Lock_state();
memset(inputlines[inputline], 0, CON_MAXPROMPTCHARS);
input_cur = input_sel = input_len = 0;
Unlock_state();
}
static void CON_InputSetString(const char *c)
{
Lock_state();
memset(inputlines[inputline], 0, CON_MAXPROMPTCHARS);
strcpy(inputlines[inputline], c);
input_cur = input_sel = input_len = strlen(c);
Unlock_state();
}
static void CON_InputAddString(const char *c)
{
size_t csize = strlen(c);
Lock_state();
if (input_len + csize > CON_MAXPROMPTCHARS-1)
{
Unlock_state();
return;
}
if (input_cur != input_len)
memmove(&inputlines[inputline][input_cur+csize], &inputlines[inputline][input_cur], input_len-input_cur);
memcpy(&inputlines[inputline][input_cur], c, csize);
input_len += csize;
input_sel = (input_cur += csize);
Unlock_state();
}
static void CON_InputDelSelection(void)
{
size_t start, end, len;
Lock_state();
if (input_cur > input_sel)
{
start = input_sel;
end = input_cur;
}
else
{
start = input_cur;
end = input_sel;
}
len = (end - start);
if (end != input_len)
memmove(&inputlines[inputline][start], &inputlines[inputline][end], input_len-end);
memset(&inputlines[inputline][input_len - len], 0, len);
input_len -= len;
input_sel = input_cur = start;
Unlock_state();
}
static void CON_InputAddChar(char c)
{
if (input_len >= CON_MAXPROMPTCHARS-1)
return;
Lock_state();
if (input_cur != input_len)
memmove(&inputlines[inputline][input_cur+1], &inputlines[inputline][input_cur], input_len-input_cur);
inputlines[inputline][input_cur++] = c;
inputlines[inputline][++input_len] = 0;
input_sel = input_cur;
Unlock_state();
}
static void CON_InputDelChar(void)
{
if (!input_cur)
return;
Lock_state();
if (input_cur != input_len)
memmove(&inputlines[inputline][input_cur-1], &inputlines[inputline][input_cur], input_len-input_cur);
inputlines[inputline][--input_len] = 0;
input_sel = --input_cur;
Unlock_state();
}
//
// ----
//
@@ -930,7 +826,7 @@ boolean CON_Responder(event_t *ev)
// let go keyup events, don't eat them
if (ev->type != ev_keydown && ev->type != ev_console)
{
if (ev->data1 == gamecontrol[gc_console][0] || ev->data1 == gamecontrol[gc_console][1])
if (ev->data1 == gamecontrol[0][gc_console][0] || ev->data1 == gamecontrol[0][gc_console][1])
consdown = false;
return false;
}
@@ -948,7 +844,7 @@ boolean CON_Responder(event_t *ev)
INT32 i;
for (i = 0; i < num_gamecontrols; i++)
{
if (gamecontrol[i][0] == ev->data1 || gamecontrol[i][1] == ev->data1)
if (gamecontrol[0][i][0] == ev->data1 || gamecontrol[0][i][1] == ev->data1)
break;
}
@@ -956,7 +852,7 @@ boolean CON_Responder(event_t *ev)
return false;
}
if (key == gamecontrol[gc_console][0] || key == gamecontrol[gc_console][1])
if (key == gamecontrol[0][gc_console][0] || key == gamecontrol[0][gc_console][1])
{
if (consdown) // ignore repeat
return true;
@@ -985,6 +881,10 @@ boolean CON_Responder(event_t *ev)
}
}
Lock_state();
M_TextInputHandle(&input, key);
Unlock_state();
// Always eat ctrl/shift/alt if console open, so the menu doesn't get ideas
if (key == KEY_LSHIFT || key == KEY_RSHIFT
|| key == KEY_LCTRL || key == KEY_RCTRL
@@ -997,12 +897,11 @@ boolean CON_Responder(event_t *ev)
// show all cvars/commands that match what we have inputted
if (key == KEY_TAB)
{
if (!completion[0])
{
if (!input_len || input_len >= 40 || strchr(inputlines[inputline], ' '))
if (!input.length || input.length >= 40 || strchr(input.buffer, ' '))
return true;
strcpy(completion, inputlines[inputline]);
strcpy(completion, input.buffer);
comskips = varskips = 0;
}
@@ -1023,42 +922,9 @@ boolean CON_Responder(event_t *ev)
return true;
}
if (key == 'x' || key == 'X')
{
if (input_sel > input_cur)
I_ClipboardCopy(&inputlines[inputline][input_cur], input_sel-input_cur);
else
I_ClipboardCopy(&inputlines[inputline][input_sel], input_cur-input_sel);
CON_InputDelSelection();
// Those are already handled in M_TextInputHandle, but they do extra logic... Maybe textinput_t should have some sort of callbacks?
if (key == 'x' || key == 'X' || key == 'v' || key == 'V')
completion[0] = 0;
return true;
}
else if (key == 'c' || key == 'C')
{
if (input_sel > input_cur)
I_ClipboardCopy(&inputlines[inputline][input_cur], input_sel-input_cur);
else
I_ClipboardCopy(&inputlines[inputline][input_sel], input_cur-input_sel);
return true;
}
else if (key == 'v' || key == 'V')
{
const char *paste = I_ClipboardPaste();
if (input_sel != input_cur)
CON_InputDelSelection();
if (paste != NULL)
CON_InputAddString(paste);
completion[0] = 0;
return true;
}
// Select all
if (key == 'a' || key == 'A')
{
input_sel = 0;
input_cur = input_len;
return true;
}
// ...why shouldn't it eat the key? if it doesn't, it just means you
// can control Sonic from the console, which is silly
@@ -1073,9 +939,9 @@ boolean CON_Responder(event_t *ev)
// remember typing for several completions (a-la-4dos)
if (!completion[0])
{
if (!input_len || input_len >= 40 || strchr(inputlines[inputline], ' '))
if (!input.length || input.length >= 40 || strchr(input.buffer, ' '))
return true;
strcpy(completion, inputlines[inputline]);
strcpy(completion, input.buffer);
comskips = varskips = 0;
}
else
@@ -1106,7 +972,11 @@ boolean CON_Responder(event_t *ev)
cmd = CV_CompleteVar(completion, varskips);
if (cmd)
CON_InputSetString(va("%s ", cmd));
{
Lock_state();
M_TextInputSetString(&input, va("%s ", cmd));
Unlock_state();
}
else
{
if (comskips > 0)
@@ -1132,37 +1002,6 @@ boolean CON_Responder(event_t *ev)
return true;
}
if (key == KEY_LEFTARROW)
{
if (input_cur != 0)
--input_cur;
if (!shiftdown)
input_sel = input_cur;
return true;
}
else if (key == KEY_RIGHTARROW)
{
if (input_cur < input_len)
++input_cur;
if (!shiftdown)
input_sel = input_cur;
return true;
}
else if (key == KEY_HOME)
{
input_cur = 0;
if (!shiftdown)
input_sel = input_cur;
return true;
}
else if (key == KEY_END)
{
input_cur = input_len;
if (!shiftdown)
input_sel = input_cur;
return true;
}
// At this point we're messing with input
// Clear completion
completion[0] = 0;
@@ -1170,45 +1009,29 @@ boolean CON_Responder(event_t *ev)
// command enter
if (key == KEY_ENTER)
{
if (!input_len)
if (!input.length)
return true;
// push the command
COM_BufAddText(inputlines[inputline]);
COM_BufAddText(input.buffer);
COM_BufAddText("\n");
CONS_Printf("\x86""%c""\x80""%s\n", CON_PROMPTCHAR, inputlines[inputline]);
Lock_state();
// Only add command to history if it differs from previous one
if (strcmp(inputlines[inputline], inputlines[(inputline-1) & 31]))
if (strcmp(input.buffer, inputlines[(inputline-1) & 31]))
{
inputline = (inputline+1) & 31;
M_TextInputInit(&input, inputlines[inputline], CON_MAXPROMPTCHARS);
}
inputhist = inputline;
CON_InputClear();
M_TextInputClear(&input);
return true;
}
Unlock_state();
// backspace and delete command prompt
if (input_sel != input_cur)
{
if (key == KEY_BACKSPACE || key == KEY_DEL)
{
CON_InputDelSelection();
return true;
}
}
else if (key == KEY_BACKSPACE)
{
CON_InputDelChar();
return true;
}
else if (key == KEY_DEL)
{
if (input_cur == input_len)
return true;
++input_cur;
CON_InputDelChar();
return true;
}
@@ -1225,7 +1048,9 @@ boolean CON_Responder(event_t *ev)
if (inputhist == inputline)
inputhist = (inputline + 1) & 31;
CON_InputSetString(inputlines[inputhist]);
Lock_state();
M_TextInputSetString(&input, inputlines[inputhist]);
Unlock_state();
return true;
}
@@ -1239,41 +1064,16 @@ boolean CON_Responder(event_t *ev)
while (inputhist != inputline && !inputlines[inputhist][0]);
// back to currentline
Lock_state();
if (inputhist == inputline)
CON_InputClear();
M_TextInputClear(&input);
else
CON_InputSetString(inputlines[inputhist]);
M_TextInputSetString(&input, inputlines[inputhist]);
Unlock_state();
return true;
}
// allow people to use keypad in console (good for typing IP addresses) - Calum
if (key >= KEY_KEYPAD7 && key <= KEY_KPADDEL)
{
char keypad_translation[] = {'7','8','9','-',
'4','5','6','+',
'1','2','3',
'0','.'};
key = keypad_translation[key - KEY_KEYPAD7];
}
else if (key == KEY_KPADSLASH)
key = '/';
// same capslock code as hu_stuff.c's HU_responder. Check there for details.
key = CON_ShiftChar(key);
// enter a char into the command prompt
if (key < 32 || key > 127)
return true;
// add key to cmd line here
if (key >= 'A' && key <= 'Z' && !(shiftdown ^ capslock)) //this is only really necessary for dedicated servers
key = key + 'a' - 'A';
if (input_sel != input_cur)
CON_InputDelSelection();
CON_InputAddChar(key);
return true;
}
@@ -1435,7 +1235,7 @@ void CONS_Printf(const char *fmt, ...)
txt = malloc(8192);
va_start(argptr, fmt);
vsprintf(txt, fmt, argptr);
vsnprintf(txt, 8192, fmt, argptr);
va_end(argptr);
// echo console prints to log file
@@ -1443,7 +1243,7 @@ void CONS_Printf(const char *fmt, ...)
if (con_started)
CON_Print(txt);
CON_LogMessage(txt);
Lock_state();
@@ -1521,19 +1321,17 @@ void CONS_Debug(INT32 debugflags, const char *fmt, ...)
//
void CONS_Error(const char *msg)
{
#ifdef RPC_NO_WINDOWS_H
if (!graphics_started)
{
MessageBoxA(vid.WndParent, msg, "SRB2Kart Warning", MB_OK);
return;
}
#endif
CONS_Printf("\x82%s", msg); // write error msg in different colour
CONS_Printf(M_GetText("Press ENTER to continue\n"));
// dirty quick hack, but for the good cause
while (I_GetKey() != KEY_ENTER)
{
// Sleep so we don't take too much of cpu usage
I_Sleep(1.f/TICRATE*1000);
I_OsPolling();
}
}
//======================================================================
@@ -1555,16 +1353,16 @@ static void CON_DrawInput(void)
clen = con_width-13;
if (input_len <= clen)
if (input.length <= clen)
{
c = 0;
clen = input_len;
clen = input.length;
}
else // input line scrolls left if it gets too long
{
clen -= 2; // There will always be some extra truncation -- but where is what we'll find out
if (input_cur <= clen/2)
if (input.cursor <= clen/2)
{
// Close enough to right edge to show all
c = 0;
@@ -1575,15 +1373,15 @@ static void CON_DrawInput(void)
{
// Cursor in the middle (or right side) of input
// Move over for the ellipsis
c = input_cur - (clen/2) + 2;
c = input.cursor - (clen/2) + 2;
x += charwidth*2;
lellip = 1;
if (c + clen >= input_len)
if (c + clen >= input.length)
{
// Cursor in the right side of input
// We were too far over, so move back
c = input_len - clen;
c = input.length - clen;
}
else
{
@@ -1597,7 +1395,7 @@ static void CON_DrawInput(void)
if (lellip)
{
x -= charwidth*3;
if (input_sel < c)
if (input.select < c)
V_DrawFill(x, y, charwidth*3, (10 * con_scalefactor), 107 | V_NOSCALESTART);
for (i = 0; i < 3; ++i, x += charwidth)
V_DrawCharacter(x, y, '.' | cv_constextsize.value | V_GRAYMAP | V_NOSCALESTART, !cv_allcaps.value);
@@ -1607,7 +1405,7 @@ static void CON_DrawInput(void)
for (cend = c + clen; c < cend; ++c, x += charwidth)
{
if ((input_sel > c && input_cur <= c) || (input_sel <= c && input_cur > c))
if ((input.select > c && input.cursor <= c) || (input.select <= c && input.cursor > c))
{
V_DrawFill(x, y, charwidth, (10 * con_scalefactor), 107 | V_NOSCALESTART);
V_DrawCharacter(x, y, p[c] | cv_constextsize.value | V_YELLOWMAP | V_NOSCALESTART, !cv_allcaps.value);
@@ -1615,14 +1413,14 @@ static void CON_DrawInput(void)
else
V_DrawCharacter(x, y, p[c] | cv_constextsize.value | V_NOSCALESTART, !cv_allcaps.value);
if (c == input_cur && con_tick >= 4)
if (c == input.cursor && con_tick >= 4)
V_DrawCharacter(x, y + (con_scalefactor*2), '_' | cv_constextsize.value | V_NOSCALESTART, !cv_allcaps.value);
}
if (cend == input_cur && con_tick >= 4)
if (cend == input.cursor && con_tick >= 4)
V_DrawCharacter(x, y + (con_scalefactor*2), '_' | cv_constextsize.value | V_NOSCALESTART, !cv_allcaps.value);
if (rellip)
{
if (input_sel > cend)
if (input.select > cend)
V_DrawFill(x, y, charwidth*3, (10 * con_scalefactor), 107 | V_NOSCALESTART);
for (i = 0; i < 3; ++i, x += charwidth)
V_DrawCharacter(x, y, '.' | cv_constextsize.value | V_GRAYMAP | V_NOSCALESTART, !cv_allcaps.value);
@@ -1665,12 +1463,15 @@ static void CON_DrawHudlines(void)
{
charflags = (*p & 0x7f) << V_CHARCOLORSHIFT;
p++;
c++;
}
if (c >= con_width)
break;
if (*p < HU_FONTSTART)
;//charwidth = 4 * con_scalefactor;
else
{
//charwidth = SHORT(hu_font['A'-HU_FONTSTART]->width) * con_scalefactor;
//charwidth = hu_font['A'-HU_FONTSTART]->width * con_scalefactor;
V_DrawCharacter(x, y, (INT32)(*p) | charflags | cv_constextsize.value | V_NOSCALESTART, !cv_allcaps.value);
}
}
@@ -1705,7 +1506,7 @@ static void CON_DrawConsole(void)
// draw console background
if (cons_backpic.value || con_forcepic)
{
patch_t *con_backpic = W_CachePatchName("KARTKREW", PU_CACHE);
patch_t *con_backpic = W_CachePatchName("KARTKREW", PU_PATCH_LOWPRIORITY);
// Jimita: CON_DrawBackpic just called V_DrawScaledPatch
V_DrawFixedPatch(0, 0, FRACUNIT/2, 0, con_backpic, NULL);
@@ -1745,7 +1546,10 @@ static void CON_DrawConsole(void)
{
charflags = (*p & 0x7f) << V_CHARCOLORSHIFT;
p++;
c++;
}
if (c >= con_width)
break;
V_DrawCharacter(x, y, (INT32)(*p) | charflags | cv_constextsize.value | V_NOSCALESTART, !cv_allcaps.value);
}
}
@@ -1770,11 +1574,11 @@ void CON_Drawer(void)
if (con_recalc)
{
CON_RecalcSize();
if (con_curlines <= 0)
CON_ClearHUD();
}
// console movement
if (con_curlines != con_destlines)
CON_MoveConsole();
+1
View File
@@ -0,0 +1 @@
target_sourcefile(cpp)
+2
View File
@@ -0,0 +1,2 @@
memory.cpp
thread_pool.cpp
+71
View File
@@ -0,0 +1,71 @@
// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 2024 by Ronald "Eidolon" Kinard
// Copyright (C) 2024 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
#include "memory.h"
#include <array>
#include <new>
#include "../z_zone.h"
namespace
{
class LinearMemory
{
size_t size_;
size_t height_;
void* memory_;
public:
constexpr explicit LinearMemory(size_t size) noexcept;
void* allocate(size_t size);
void reset() noexcept;
};
constexpr LinearMemory::LinearMemory(size_t size) noexcept : size_(size), height_{0}, memory_{nullptr} {}
void* LinearMemory::allocate(size_t size)
{
size_t aligned_size = (size + 15) & ~15;
if (height_ + aligned_size > size_)
{
throw std::bad_alloc();
}
if (memory_ == nullptr)
{
memory_ = Z_Malloc(size_, PU_STATIC, nullptr);
}
void* ptr = (void*)((uintptr_t)(memory_) + height_);
height_ += aligned_size;
return ptr;
}
void LinearMemory::reset() noexcept
{
height_ = 0;
}
} // namespace
static LinearMemory g_frame_memory {4 * 1024 * 1024};
void* Z_Frame_Alloc(size_t size)
{
return g_frame_memory.allocate(size);
}
void Z_Frame_Reset()
{
g_frame_memory.reset();
}
+32
View File
@@ -0,0 +1,32 @@
// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 2024 by Ronald "Eidolon" Kinard
// Copyright (C) 2024 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
#ifndef __SRB2_CORE_MEMORY_H__
#define __SRB2_CORE_MEMORY_H__
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif // __cpluspplus
/// @brief Allocate a block of memory with a lifespan of the current main-thread frame.
/// This function is NOT thread-safe, but the allocated memory may be used across threads.
/// @return a pointer to a block of memory aligned with libc malloc alignment, or null if allocation fails
void* Z_Frame_Alloc(size_t size);
/// @brief Resets per-frame memory. Not thread safe.
void Z_Frame_Reset(void);
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
#endif // __SRB2_CORE_MEMORY_H__
+192
View File
@@ -0,0 +1,192 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
// This class is derived from Conor Williams' implementation of a concurrent deque
// https://github.com/ConorWilliams/ConcurrentDeque
// Copyright (C) 2021 Conor Williams
// The original version was for C++23. This one has been shrunk slightly and adapted to our conventions.
#ifndef __SRB2_CORE_SPMC_QUEUE_HPP__
#define __SRB2_CORE_SPMC_QUEUE_HPP__
#include <array>
#include <atomic>
#include <cstddef>
#include <memory>
#include <optional>
//#include <tracy/tracy/Tracy.hpp>
#include "../cxxutil.hpp"
namespace srb2
{
template <typename T>
class SpMcQueue
{
struct RingBuff {
public:
explicit RingBuff(int64_t cap) : _cap{cap}, _mask{cap - 1}
{
SRB2_ASSERT(cap && (!(cap & (cap - 1))) && "Capacity must be buf power of 2!");
_buff = std::unique_ptr<T[]>(new T[_cap]);
}
std::int64_t capacity() const noexcept { return _cap; }
// Store (copy) at modulo index
void store(int64_t i, T&& x) noexcept
{
_buff[i & _mask] = std::move(x);
}
// Load (copy) at modulo index
T load(int64_t i) const noexcept
{
return _buff[i & _mask];
}
// Allocates and returns a new ring buffer, copies elements in range [b, t) into the new buffer.
RingBuff* resize(std::int64_t b, std::int64_t t) const
{
//ZoneScoped;
RingBuff* ptr = new RingBuff{2 * _cap};
for (std::int64_t i = t; i != b; ++i) {
ptr->store(i, load(i));
}
return ptr;
}
private:
int64_t _cap; // Capacity of the buffer
int64_t _mask; // Bit mask to perform modulo capacity operations
std::unique_ptr<T[]> _buff;
};
alignas(64) std::atomic<int64_t> bottom_;
alignas(64) std::atomic<int64_t> top_;
alignas(64) std::atomic<RingBuff*> buffer_;
std::vector<std::unique_ptr<RingBuff>> garbage_;
public:
SpMcQueue(size_t capacity) : bottom_(0), top_(0), buffer_(new RingBuff(capacity))
{
garbage_.reserve(32);
}
~SpMcQueue() noexcept
{
delete buffer_.load(std::memory_order_relaxed);
};
size_t size() const noexcept
{
int64_t bottom = bottom_.load(std::memory_order_relaxed);
int64_t top = top_.load(std::memory_order_relaxed);
return static_cast<size_t>(bottom >= top ? bottom - top : 0);
}
bool empty() const noexcept
{
return size() == 0;
}
void push(T&& v) noexcept
{
int64_t bottom = bottom_.load(std::memory_order_relaxed);
int64_t top = top_.load(std::memory_order_acquire);
RingBuff* buf = buffer_.load(std::memory_order_relaxed);
if (buf->capacity() < (bottom - top) + 1)
{
// Queue is full, build a new one
RingBuff* newbuf = buf->resize(bottom, top);
garbage_.emplace_back(buf);
buffer_.store(newbuf, std::memory_order_relaxed);
buf = newbuf;
}
// Construct new object, this does not have to be atomic as no one can steal this item until after we
// store the new value of bottom, ordering is maintained by surrounding atomics.
buf->store(bottom, std::move(v));
std::atomic_thread_fence(std::memory_order_release);
bottom_.store(bottom + 1, std::memory_order_relaxed);
}
std::optional<T> pop() noexcept
{
int64_t bottom = bottom_.load(std::memory_order_relaxed) - 1;
RingBuff* buf = buffer_.load(std::memory_order_relaxed);
bottom_.store(bottom, std::memory_order_relaxed); // Stealers can no longer steal
std::atomic_thread_fence(std::memory_order_seq_cst);
int64_t top = top_.load(std::memory_order_relaxed);
if (top <= bottom)
{
// Non-empty deque
if (top == bottom)
{
// The last item could get stolen, by a stealer that loaded bottom before our write above
if (!top_.compare_exchange_strong(top, top + 1, std::memory_order_seq_cst, std::memory_order_relaxed))
{
// Failed race, thief got the last item.
bottom_.store(bottom + 1, std::memory_order_relaxed);
return std::nullopt;
}
bottom_.store(bottom + 1, std::memory_order_relaxed);
}
// Can delay load until after acquiring slot as only this thread can push(), this load is not
// required to be atomic as we are the exclusive writer.
return buf->load(bottom);
}
else
{
bottom_.store(bottom + 1, std::memory_order_relaxed);
return std::nullopt;
}
}
std::optional<T> steal() noexcept
{
int64_t top = top_.load(std::memory_order_acquire);
std::atomic_thread_fence(std::memory_order_seq_cst);
int64_t bottom = bottom_.load(std::memory_order_acquire);
if (top < bottom)
{
// Must load *before* acquiring the slot as slot may be overwritten immediately after acquiring.
// This load is NOT required to be atomic even-though it may race with an overrite as we only
// return the value if we win the race below garanteeing we had no race during our read. If we
// loose the race then 'x' could be corrupt due to read-during-write race but as T is trivially
// destructible this does not matter.
T x = buffer_.load(std::memory_order_consume)->load(top);
if (!top_.compare_exchange_strong(top, top + 1, std::memory_order_seq_cst, std::memory_order_relaxed))
{
return std::nullopt;
}
return x;
}
else
{
return std::nullopt;
}
}
};
} // namespace srb2
#endif // __SRB2_CORE_SPMC_QUEUE_HPP__
+255
View File
@@ -0,0 +1,255 @@
// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 2024 by Ronald "Eidolon" Kinard
// Copyright (C) 2024 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
#ifndef __SRB2_CORE_STATIC_VEC_HPP__
#define __SRB2_CORE_STATIC_VEC_HPP__
#include <array>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <initializer_list>
#include <iterator>
#include <stdexcept>
#include <type_traits>
#include "../cxxutil.hpp"
namespace srb2
{
template <typename T, size_t Limit>
class StaticVec;
template <typename T, size_t Limit>
class StaticVec
{
std::array<T, Limit> arr_ {{}};
size_t size_ = 0;
public:
using value_type = T;
constexpr StaticVec() {}
StaticVec(const StaticVec& rhs)
{
for (size_t i = size_; i > 0; i--)
{
arr_[i] = T();
}
size_ = rhs.size();
for (size_t i = 0; i < size_; i++)
{
arr_[i] = rhs.arr_[i];
}
}
StaticVec(StaticVec&& rhs) noexcept(std::is_nothrow_move_assignable_v<T>)
{
for (size_t i = size_; i > 0; i--)
{
arr_[i] = T();
}
size_ = rhs.size();
for (size_t i = 0; i < size_; i++)
{
arr_[i] = std::move(rhs.arr_[i]);
}
while (rhs.size() > 0)
{
rhs.pop_back();
}
}
constexpr StaticVec(std::initializer_list<T> list) noexcept(std::is_nothrow_move_assignable_v<T>)
{
size_ = list.size();
size_t i = 0;
for (auto itr = list.begin(); itr != list.end(); itr++)
{
arr_[i] = *itr;
i++;
}
}
~StaticVec() = default;
StaticVec& operator=(const StaticVec& rhs)
{
for (size_t i = size_; i > 0; i--)
{
arr_[i] = T();
}
size_ = rhs.size();
for (size_t i = 0; i < size_; i++)
{
arr_[i] = rhs.arr_[i];
}
return *this;
}
StaticVec& operator=(StaticVec&& rhs) noexcept(std::is_nothrow_move_constructible_v<T>)
{
for (size_t i = size_; i > 0; i--)
{
arr_[i] = T();
}
size_ = rhs.size();
for (size_t i = 0; i < size_; i++)
{
arr_[i] = std::move(rhs.arr_[i]);
}
while (rhs.size() > 0)
{
rhs.pop_back();
}
return *this;
}
void push_back(const T& value) { arr_[size_++] = value; }
void pop_back() { arr_[--size_] = T(); }
void resize(size_t size, T value = T())
{
if (size >= Limit)
{
throw std::length_error("new size >= Capacity");
}
if (size == size_)
{
return;
}
else if (size < size_)
{
while (size_ > size)
{
pop_back();
}
}
else
{
while (size_ < size)
{
push_back(value);
}
}
}
void clear()
{
arr_ = {{}};
size_ = 0;
}
using iterator = typename std::array<T, Limit>::iterator;
using const_iterator = typename std::array<T, Limit>::const_iterator;
constexpr iterator begin() noexcept { return arr_.begin(); }
constexpr const_iterator begin() const noexcept { return arr_.cbegin(); }
constexpr const_iterator cbegin() const noexcept { return arr_.cbegin(); }
constexpr iterator end() noexcept { return std::next(arr_.begin(), size_); }
constexpr const_iterator end() const noexcept { return cend(); }
constexpr const_iterator cend() const noexcept { return std::next(arr_.cbegin(), size_); }
constexpr std::reverse_iterator<iterator> rbegin() noexcept { return std::reverse_iterator(this->end()); }
constexpr std::reverse_iterator<const_iterator> crbegin() const noexcept { return std::reverse_iterator(this->cend()); }
constexpr std::reverse_iterator<iterator> rend() noexcept { return std::reverse_iterator(this->begin()); }
constexpr std::reverse_iterator<const_iterator> crend() const noexcept { return std::reverse_iterator(this->cbegin()); }
constexpr bool empty() const noexcept { return size_ == 0; }
constexpr size_t size() const noexcept { return size_; }
constexpr size_t capacity() const noexcept { return Limit; }
constexpr size_t max_size() const noexcept { return Limit; }
constexpr T& operator[](size_t index) noexcept { return arr_[index]; }
T& at(size_t index)
{
if (index >= size_)
{
throw std::out_of_range("index >= size");
}
return this[index];
}
constexpr const T& operator[](size_t index) const noexcept { return arr_[index]; }
const T& at(size_t index) const
{
if (index >= size_)
{
throw std::out_of_range("index >= size");
}
return this[index];
}
T& front() { return *arr_[0]; }
T& back() { return *arr_[size_ - 1]; }
};
} // namespace srb2
template <typename T, size_t L1, size_t L2>
bool operator==(const srb2::StaticVec<T, L1>& lhs, const srb2::StaticVec<T, L2>& rhs)
{
const size_t size = lhs.size();
if (size != rhs.size())
{
return false;
}
for (size_t i = 0; i < lhs; i++)
{
if (rhs[i] != lhs[i])
{
return false;
}
}
return true;
}
template <typename T, size_t L1, size_t L2>
bool operator!=(const srb2::StaticVec<T, L1>& lhs, const srb2::StaticVec<T, L2>& rhs)
{
return !(lhs == rhs);
}
template <typename T, size_t Limit>
struct std::hash<srb2::StaticVec<T, Limit>>
{
size_t operator()(const srb2::StaticVec<T, Limit>& input) const
{
constexpr size_t prime = sizeof(size_t) == 8 ? 0x00000100000001B3 : 0x01000193;
constexpr size_t basis = sizeof(size_t) == 8 ? 0xcbf29ce484222325 : 0x811c9dc5;
size_t ret = basis;
for (auto itr = input.begin(); itr != input.end(); itr++)
{
ret = (ret * prime) ^ std::hash<T>(*itr);
}
return ret;
}
};
#endif // __SRB2_CORE_STATIC_VEC_HPP__
+346
View File
@@ -0,0 +1,346 @@
// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 2024 by Ronald "Eidolon" Kinard
// Copyright (C) 2024 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
#include "thread_pool.h"
#include <algorithm>
#include <condition_variable>
#include <exception>
#include <mutex>
#include <string>
#include <system_error>
//#include <fmt/format.h>
//#include <tracy/tracy/Tracy.hpp>
#include "../cxxutil.hpp"
#include "../m_argv.h"
using namespace srb2;
static void do_work(ThreadPool::Task& work)
{
try
{
//ZoneScoped;
(work.thunk)(work.raw.data());
}
catch (...)
{
// can't do anything
}
(work.deleter)(work.raw.data());
if (work.pseudosema)
{
work.pseudosema->fetch_sub(1, std::memory_order_relaxed);
}
}
static void pool_executor(
//int thread_index,
std::shared_ptr<std::atomic<bool>> pool_alive,
std::shared_ptr<std::mutex> worker_ready_mutex,
std::shared_ptr<std::condition_variable> worker_ready_condvar,
std::shared_ptr<ThreadPool::Queue> my_wq,
std::vector<std::shared_ptr<ThreadPool::Queue>> other_wqs
)
{
{
//std::string thread_name = fmt::format("Thread Pool Thread {}", thread_index);
//tracy::SetThreadName(thread_name.c_str());
}
int spins = 0;
while (true)
{
std::optional<ThreadPool::Task> work = my_wq->steal();
bool did_work = false;
if (work)
{
do_work(*work);
did_work = true;
spins = 0;
}
else
{
for (auto& q : other_wqs)
{
work = q->steal();
if (work)
{
do_work(*work);
did_work = true;
spins = 0;
// We only want to steal one work item at a time, to prioritize our own queue
break;
}
}
}
if (!did_work)
{
// Spin a few loops to avoid yielding, then wait for the ready lock
spins += 1;
if (spins > 100)
{
std::unique_lock<std::mutex> ready_lock {*worker_ready_mutex};
while (my_wq->empty() && pool_alive->load())
{
worker_ready_condvar->wait(ready_lock);
}
if (!pool_alive->load())
{
break;
}
}
}
}
}
ThreadPool::ThreadPool()
{
immediate_mode_ = true;
}
ThreadPool::ThreadPool(size_t threads)
{
next_queue_index_ = 0;
pool_alive_ = std::make_shared<std::atomic<bool>>(true);
for (size_t i = 0; i < threads; i++)
{
std::shared_ptr<Queue> wsq = std::make_shared<Queue>(2048);
work_queues_.push_back(wsq);
std::shared_ptr<std::mutex> mutex = std::make_shared<std::mutex>();
worker_ready_mutexes_.push_back(std::move(mutex));
std::shared_ptr<std::condition_variable> condvar = std::make_shared<std::condition_variable>();
worker_ready_condvars_.push_back(std::move(condvar));
}
for (size_t i = 0; i < threads; i++)
{
std::shared_ptr<Queue> my_queue = work_queues_[i];
std::vector<std::shared_ptr<Queue>> other_queues;
for (size_t j = 0; j < threads; j++)
{
// Order the other queues starting from the next adjacent worker
// i.e. if this is worker 2 of 8, then other queues is 3, 4, 5, 6, 7, 0, 1
// This tries to balance out work stealing behavior
size_t other_index = j + i;
if (other_index >= threads)
{
other_index -= threads;
}
if (other_index != i)
{
other_queues.push_back(work_queues_[other_index]);
}
}
std::thread thread;
try
{
thread = std::thread
{
pool_executor,
//i,
pool_alive_,
worker_ready_mutexes_[i],
worker_ready_condvars_[i],
my_queue,
other_queues
};
}
catch (const std::system_error& error)
{
// Safe shutdown and rethrow
pool_alive_->store(false);
for (auto& t : threads_)
{
t.join();
}
throw error;
}
threads_.push_back(std::move(thread));
}
}
ThreadPool::ThreadPool(ThreadPool&&) = default;
ThreadPool::~ThreadPool() = default;
ThreadPool& ThreadPool::operator=(ThreadPool&&) = default;
void ThreadPool::begin_sema()
{
sema_begun_ = true;
}
ThreadPool::Sema ThreadPool::end_sema()
{
Sema ret = Sema(std::move(cur_sema_));
cur_sema_ = nullptr;
sema_begun_ = false;
return ret;
}
void ThreadPool::notify()
{
for (size_t i = 0; i < work_queues_.size(); i++)
{
auto& q = work_queues_[i];
size_t count = q->size();
if (count > 0)
{
worker_ready_condvars_[i]->notify_one();
}
}
}
void ThreadPool::notify_sema(const ThreadPool::Sema& sema)
{
if (!sema.pseudosema_)
{
return;
}
notify();
}
void ThreadPool::wait_idle()
{
if (immediate_mode_)
{
return;
}
//ZoneScoped;
for (size_t i = 0; i < work_queues_.size(); i++)
{
auto& q = work_queues_[i];
std::optional<Task> work;
while ((work = q->pop()).has_value())
{
do_work(*work);
}
}
}
void ThreadPool::wait_sema(const Sema& sema)
{
if (!sema.pseudosema_)
{
return;
}
//ZoneScoped;
while (sema.pseudosema_->load(std::memory_order_seq_cst) > 0)
{
// spin to win
for (size_t i = 0; i < work_queues_.size(); i++)
{
auto& q = work_queues_[i];
std::optional<Task> work;
if ((work = q->pop()).has_value())
{
do_work(*work);
break;
}
}
}
if (sema.pseudosema_->load(std::memory_order_seq_cst) != 0)
{
throw std::exception();
}
}
void ThreadPool::shutdown()
{
if (immediate_mode_)
{
return;
}
wait_idle();
pool_alive_->store(false);
for (auto& condvar : worker_ready_condvars_)
{
condvar->notify_all();
}
for (auto& t : threads_)
{
t.join();
}
}
std::unique_ptr<ThreadPool> srb2::g_main_threadpool;
void I_ThreadPoolInit(void)
{
SRB2_ASSERT(g_main_threadpool == nullptr);
size_t thread_count = std::min(static_cast<unsigned int>(9), std::thread::hardware_concurrency());
if (thread_count > 1)
{
// The main thread will act as a worker when waiting for pool idle
// Make one less worker thread to avoid unnecessary context switching
thread_count -= 1;
}
if (M_CheckParm("-singlethreaded"))
{
g_main_threadpool = std::make_unique<ThreadPool>();
}
else
{
g_main_threadpool = std::make_unique<ThreadPool>(thread_count);
}
}
void I_ThreadPoolShutdown(void)
{
if (!g_main_threadpool)
{
return;
}
g_main_threadpool->shutdown();
g_main_threadpool = nullptr;
}
void I_ThreadPoolSubmit(srb2cthunk_t thunk, void* data)
{
SRB2_ASSERT(g_main_threadpool != nullptr);
g_main_threadpool->schedule([=]() {
(thunk)(data);
});
g_main_threadpool->notify();
}
void I_ThreadPoolWaitIdle(void)
{
SRB2_ASSERT(g_main_threadpool != nullptr);
g_main_threadpool->wait_idle();
}
+163
View File
@@ -0,0 +1,163 @@
// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 2024 by Ronald "Eidolon" Kinard
// Copyright (C) 2024 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
#ifndef __SRB2_CORE_THREAD_POOL_H__
#define __SRB2_CORE_THREAD_POOL_H__
#include <stddef.h>
#ifdef __cplusplus
#include <condition_variable>
#include <cstddef>
#include <functional>
#include <memory>
#include <mutex>
#include <thread>
#include <utility>
#include <vector>
#include "spmc_queue.hpp"
namespace srb2
{
class ThreadPool
{
public:
struct Task
{
void (*thunk)(void*);
void (*deleter)(void*);
std::shared_ptr<std::atomic<uint32_t>> pseudosema;
std::array<std::byte, 512 - sizeof(void(*)(void*)) * 2 - sizeof(std::shared_ptr<std::atomic<uint32_t>>)> raw;
};
using Queue = SpMcQueue<Task>;
class Sema
{
std::shared_ptr<std::atomic<uint32_t>> pseudosema_;
explicit Sema(std::shared_ptr<std::atomic<uint32_t>> sema) : pseudosema_(sema) {}
friend class ThreadPool;
public:
Sema() = default;
};
private:
std::shared_ptr<std::atomic<bool>> pool_alive_;
std::vector<std::shared_ptr<std::mutex>> worker_ready_mutexes_;
std::vector<std::shared_ptr<std::condition_variable>> worker_ready_condvars_;
std::vector<std::shared_ptr<Queue>> work_queues_;
std::vector<std::thread> threads_;
size_t next_queue_index_ = 0;
std::shared_ptr<std::atomic<uint32_t>> cur_sema_;
bool immediate_mode_ = false;
bool sema_begun_ = false;
public:
ThreadPool();
explicit ThreadPool(size_t threads);
ThreadPool(const ThreadPool&) = delete;
ThreadPool(ThreadPool&&);
~ThreadPool();
ThreadPool& operator=(const ThreadPool&) = delete;
ThreadPool& operator=(ThreadPool&&);
void begin_sema();
ThreadPool::Sema end_sema();
/// Enqueue but don't notify
template <typename T> void schedule(T&& thunk);
/// Notify threads after several schedules
void notify();
void notify_sema(const Sema& sema);
void wait_idle();
void wait_sema(const Sema& sema);
void shutdown();
};
extern std::unique_ptr<ThreadPool> g_main_threadpool;
template <typename F>
void callable_caller(F* f)
{
(*f)();
}
template <typename F>
void callable_destroyer(F* f)
{
f->~F();
}
template <typename T>
void ThreadPool::schedule(T&& thunk)
{
static_assert(sizeof(T) <= sizeof(std::declval<Task>().raw));
if (immediate_mode_)
{
(thunk)();
return;
}
if (sema_begun_)
{
if (cur_sema_ == nullptr)
{
cur_sema_ = std::make_shared<std::atomic<uint32_t>>(0);
}
cur_sema_->fetch_add(1, std::memory_order_relaxed);
}
size_t qi = next_queue_index_;
{
std::shared_ptr<Queue> q = work_queues_[qi];
Task task;
task.thunk = reinterpret_cast<void(*)(void*)>(callable_caller<T>);
task.deleter = reinterpret_cast<void(*)(void*)>(callable_destroyer<T>);
task.pseudosema = cur_sema_;
new (reinterpret_cast<T*>(task.raw.data())) T(std::move(thunk));
q->push(std::move(task));
}
// worker_ready_condvars_[qi]->notify_one();
next_queue_index_ += 1;
if (next_queue_index_ >= threads_.size())
{
next_queue_index_ = 0;
}
}
} // namespace srb2
extern "C" {
#endif // __cplusplus
typedef void (*srb2cthunk_t)(void*);
void I_ThreadPoolInit(void);
void I_ThreadPoolShutdown(void);
void I_ThreadPoolSubmit(srb2cthunk_t thunk, void* data);
void I_ThreadPoolWaitIdle(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // __SRB2_CORE_THREAD_POOL_H__
+152
View File
@@ -0,0 +1,152 @@
#ifndef __SRB2_CXXUTIL_HPP__
#define __SRB2_CXXUTIL_HPP__
#include <cstdlib>
#include <type_traits>
#include <utility>
#include "doomdef.h"
namespace srb2 {
template <class F>
class Finally {
public:
explicit Finally(const F& f) noexcept : f_(f) {}
explicit Finally(F&& f) noexcept : f_(f) {}
Finally(Finally&& from) noexcept : f_(std::move(from.f_)), call_(std::exchange(from.call_, false)) {}
Finally(const Finally& from) = delete;
void operator=(const Finally& from) = delete;
void operator=(Finally&& from) = delete;
~Finally() noexcept {
if (call_)
f_();
}
private:
F f_;
bool call_ = true;
};
template <class F>
Finally<std::decay_t<F>> finally(F&& f) noexcept {
return Finally {std::forward<F>(f)};
}
struct SourceLocation {
const char* file_name;
unsigned int line_number;
};
#define SRB2_SOURCE_LOCATION \
srb2::SourceLocation { __FILE__, __LINE__ }
#ifndef SRB2_ASSERT_HANDLER
#define SRB2_ASSERT_HANDLER srb2::IErrorAssertHandler
#endif
#if !defined(NDEBUG) || defined(PARANOIA)
// An assertion level of 2 will activate all invocations of the SRB2_ASSERT macro
#define SRB2_ASSERTION_LEVEL 2
#else
// The minimum assertion level is 1
#define SRB2_ASSERTION_LEVEL 1
#endif
/// Assert a precondition expression in debug builds.
#define SRB2_ASSERT(expr) srb2::do_assert<2, SRB2_ASSERT_HANDLER>([&] { return (expr); }, SRB2_SOURCE_LOCATION, #expr)
class IErrorAssertHandler {
public:
static void handle(const SourceLocation& source_location, const char* expression) {
I_Error("Assertion failed at %s:%u: %s != true",
source_location.file_name,
source_location.line_number,
expression);
}
};
class NoOpAssertHandler {
public:
static void handle(const SourceLocation& source_location, const char* expression) {(void)source_location; (void)expression;}
};
/// @brief Assert a precondition expression, aborting the application if it fails.
/// @tparam Expr
/// @tparam Level the level of this assertion; if it is less than or equal to SRB2_ASSERTION_LEVEL, this overload will
/// activate.
/// @param expr a callable which returns a bool
/// @param source_location a struct containing the source location of the assertion, e.g. SRB2_SOURCE_LOCATION
/// @param expression the expression evaluated in the expression callable
/// @param message an optional message to display for the assertion
template <unsigned int Level, class Handler, class Expr>
std::enable_if_t<(Level <= SRB2_ASSERTION_LEVEL), void>
do_assert(const Expr& expr, const SourceLocation& source_location, const char* expression = "") noexcept {
static_assert(Level > 0, "level of an assertion must not be 0");
if (!expr()) {
Handler::handle(source_location, expression);
std::abort();
}
}
template <unsigned int Level, class, class Expr>
std::enable_if_t<(Level > SRB2_ASSERTION_LEVEL), void>
do_assert(const Expr&, const SourceLocation&, const char* = "") noexcept {
}
template <typename T>
class NotNull final {
T ptr_;
public:
static_assert(std::is_convertible_v<decltype(std::declval<T>() != nullptr), bool>,
"T is not comparable with nullptr_t");
/// @brief Move-construct from the pointer value U, asserting that it is not null. Allows construction of a
/// NotNull<T> from any compatible pointer U, for example with polymorphic classes.
template <typename U, typename = std::enable_if_t<std::is_convertible_v<U, T>>>
constexpr NotNull(U&& rhs) : ptr_(std::forward<U>(rhs)) {
SRB2_ASSERT(ptr_ != nullptr);
}
/// @brief Wrap the pointer type T, asserting that the pointer is not null.
template <typename = std::enable_if_t<!std::is_same_v<std::nullptr_t, T>>>
constexpr NotNull(T rhs) : ptr_(std::move(rhs)) {
SRB2_ASSERT(ptr_ != nullptr);
}
/// @brief Copy construction from NotNull of convertible type U. Only if the incoming pointer is NotNull already.
template <typename U, typename = std::enable_if_t<std::is_convertible_v<U, T>>>
constexpr NotNull(const NotNull<U>& rhs) : NotNull(rhs.get()) {
// Value is guaranteed to be not null by construction; no assertion necessary
}
NotNull(const NotNull& rhs) = default;
NotNull& operator=(const NotNull& rhs) = default;
/// @brief Get the stored pointer.
constexpr T get() const { return ptr_; }
/// @brief Convert to T (the pointer type).
constexpr operator T() const { return get(); }
/// @brief Arrow-dereference to *T (the actual value pointed to).
constexpr decltype(auto) operator->() const { return get(); }
/// @brief Dereference to *T (the actual value pointed to).
constexpr decltype(auto) operator*() const { return *get(); }
// It is not allowed to construct NotNull<T> with nullptr regardless of T.
NotNull(std::nullptr_t) = delete;
NotNull& operator=(std::nullptr_t) = delete;
};
template <class T>
NotNull(T) -> NotNull<T>;
} // namespace srb2
#endif // __SRB2_CXXUTIL_HPP__
+1200 -662
View File
File diff suppressed because it is too large. Load diff
+63 -8
View File
@@ -13,6 +13,10 @@
#ifndef __D_CLISRV__
#define __D_CLISRV__
#ifdef __cplusplus
extern "C" {
#endif
#include "d_ticcmd.h"
#include "d_net.h"
#include "d_netcmd.h"
@@ -41,6 +45,15 @@ applications may follow different packet versions.
#define BACKUPTICS 32
#define TICQUEUE 512 // more than enough for most timeouts....
#define MAXTEXTCMD 256
// No. of tics your controls can be delayed by.
// TODO: Instead of storing a ton of extra cmds for gentlemens' delay,
// keep them in a linked-list, with timestamps to discard everything that's older than already sent.
// That will support any amount of lag, and be less wasteful for clients who don't use it.
// This just works as a quick implementation.
#define MAXGENTLEMENDELAY TICRATE
//
// Packet structure
//
@@ -98,6 +111,15 @@ typedef enum
PT_MOREFILESNEEDED, // Server, to client: "you need these (+ more on top of those)"
PT_PING, // Packet sent to tell clients the other client's latency to server.
#ifdef SATURNPAK
PT_WILLRESENDGAMESTATE, // Hey Client, I am about to resend you the gamestate!
PT_CANRECEIVEGAMESTATE, // Okay Server, I'm ready to receive it, you can go ahead.
PT_RECEIVEDGAMESTATE, // Thank you Server, I am ready to play again!
PT_ISSATURN, // Saturn specific identifier packet
#endif
NUMPACKETTYPE
} packettype_t;
@@ -363,6 +385,9 @@ typedef struct
UINT8 subversion; // Contains build version
UINT8 localplayers; // number of splitscreen players
UINT8 mode;
#ifdef SATURNJOIN
UINT8 issaturn;
#endif
} ATTRPACK clientconfig_pak;
#define SV_SPEEDMASK 0x03 // used to send kartspeed
@@ -372,6 +397,7 @@ typedef struct
#define MAXSERVERNAME 32
#define MAXFILENEEDED 915
#define MAX_MIRROR_LENGTH 256
// This packet is too large
typedef struct
{
@@ -555,6 +581,9 @@ extern boolean acceptnewnode;
extern SINT8 servernode;
extern char connectedservername[MAXSERVERNAME+1];
extern plrinfo playerinfo[MAXPLAYERS];
extern SINT8 joinnode;
void Command_Ping_f(void);
extern tic_t connectiontimeout;
extern tic_t jointimeout;
@@ -563,26 +592,40 @@ extern UINT32 realpingtable[MAXPLAYERS];
extern UINT32 playerpingtable[MAXPLAYERS];
extern tic_t servermaxping;
extern boolean server_lagless;
extern tic_t simulated_lag;
extern tic_t lowest_lag;
extern consvar_t cv_mindelay, cv_gentlemens;
extern consvar_t
#ifdef VANILLAJOINNEXTROUND
cv_joinnextround,
#endif
cv_netticbuffer, cv_allownewplayer, cv_joinrefusemessage, cv_maxplayers, cv_resynchattempts, cv_blamecfail, cv_maxsend, cv_noticedownload, cv_downloadspeed;
cv_netticbuffer, cv_allownewplayer,
#ifdef SATURNJOIN
cv_allownewsaturnplayer,
#endif
cv_joinrefusemessage, cv_maxplayers, cv_resynchattempts,
#ifdef SATURNPAK
cv_resynchcooldown, cv_gamestateattempts,
#endif
cv_blamecfail, cv_maxsend, cv_noticedownload, cv_downloadspeed;
extern consvar_t cv_connectawaittime;
extern consvar_t cv_discordinvites;
extern consvar_t cv_serverinfoscreen;
// Used in d_net, the only dependence
tic_t ExpandTics(INT32 low, tic_t basetic);
//tic_t ExpandTics(INT32 low, tic_t basetic);
void D_ClientServerInit(void);
// Initialise the other field
void RegisterNetXCmd(netxcmd_t id, void (*cmd_f)(UINT8 **p, INT32 playernum));
void SendNetXCmd(netxcmd_t id, const void *param, size_t nparam);
void SendNetXCmd2(netxcmd_t id, const void *param, size_t nparam); // splitsreen player
void SendNetXCmd3(netxcmd_t id, const void *param, size_t nparam); // splitsreen3 player
void SendNetXCmd4(netxcmd_t id, const void *param, size_t nparam); // splitsreen4 player
void SendNetXCmdForPlayer(UINT8 playerid, netxcmd_t id, const void *param, size_t nparam);
#define SendNetXCmd(id, param, nparam) SendNetXCmdForPlayer(0, id, param, nparam) // Shortcut for P1
void SendKick(UINT8 playernum, UINT8 msg);
// Create any new ticcmds and broadcast to other players.
void NetKeepAlive(void);
@@ -601,6 +644,9 @@ void CL_RemovePlayer(INT32 playernum, INT32 reason);
void CL_QueryServerList(msg_server_t *list);
void CL_UpdateServerList(void);
void CL_TimeoutServerList(void);
void CL_AbortConnection(void);
// Is there a game running
boolean Playing(void);
@@ -626,13 +672,17 @@ extern char motd[254], server_context[8];
extern UINT8 playernode[MAXPLAYERS];
INT32 D_NumPlayers(void);
void D_ResetTiccmds(void);
tic_t GetLag(INT32 node);
UINT8 GetFreeXCmdSize(void);
//UINT8 GetFreeXCmdSize(UINT8 playerid);
extern UINT8 hu_resynching;
extern UINT8 hu_stopped; // kart, true when the game is stopped for players due to a disconnecting or connecting player
#ifdef SATURNPAK
extern UINT8 hu_redownloadinggamestate;
#endif
extern boolean hu_stopped; // kart, true when the game is stopped for players due to a disconnecting or connecting player
typedef struct rewind_s {
UINT8 savebuffer[(768*1024)];
@@ -648,4 +698,9 @@ typedef struct rewind_s {
void CL_ClearRewinds(void);
rewind_t *CL_SaveRewindPoint(size_t demopos);
rewind_t *CL_RewindToTime(tic_t time);
#ifdef __cplusplus
} // extern "C"
#endif
#endif
-1
View File
@@ -25,7 +25,6 @@ typedef enum
ev_console,
ev_mouse,
ev_joystick,
ev_mouse2,
ev_joystick2,
ev_joystick3,
ev_joystick4,
+622 -367
View File
File diff suppressed because it is too large. Load diff
+38 -14
View File
@@ -14,41 +14,61 @@
#ifndef __D_MAIN__
#define __D_MAIN__
#ifdef __cplusplus
extern "C" {
#endif
#include "d_event.h"
#include "w_wad.h" // for MAX_WADFILES
// make sure not to write back the config until it's been correctly loaded
extern tic_t rendergametic;
// make sure not to write back the config until it's been correctly loaded
extern boolean loaded_config;
extern char srb2home[256]; //Alam: My Home
extern boolean usehome; //Alam: which path?
extern const char *pandf; //Alam: how to path?
extern char srb2path[256]; //Alam: SRB2's Home
// extra graphic patches for saturn specific thingies
extern boolean found_extra_kart; // for use in k_kart.c
extern boolean found_extra2_kart; // for use in k_kart.c
extern boolean found_extra3_kart; // for use in k_kart.c
extern boolean xtra_speedo; // extra speedometer check
extern boolean xtra_speedo_clr; // extra speedometer colour check
extern boolean xtra_speedo3; // 80x11 extra speedometer check
extern boolean xtra_speedo_clr3; // 80x11 extra speedometer colour check
extern boolean achi_speedo; // achiiro speedometer check
extern boolean achi_speedo_clr; // extra speedometer colour check
extern boolean clr_hud; // colour hud check
extern boolean big_lap; // bigger lap counter
extern boolean big_lap_color; // bigger lap counter but colour
extern boolean kartzspeedo; // kartZ speedo
extern boolean statdp; // stat display for extended player setup
extern boolean nametaggfx; // Nametag stuffs
extern boolean driftgaugegfx;
extern boolean xtra_speedo; // extra speedometer check
extern boolean xtra_speedo_clr; // extra speedometer colour check
extern boolean xtra_speedo3; // 80x11 extra speedometer check
extern boolean xtra_speedo_clr3; // 80x11 extra speedometer colour check
extern boolean achi_speedo; // achiiro speedometer check
extern boolean achi_speedo_clr; // extra speedometer colour check
extern boolean dial_speedo; // dial speedometer check
extern boolean dial_speedo_clr; // dial speedometer colour check
extern boolean kartz_speedo; // kartZ speedo
extern boolean kartz_speedo_smol; // kartZ speedo but smol
extern boolean clr_hud; // colour hud check
extern boolean driftgaugegfx_clr; // driftgauge colour check
extern boolean big_lap; // bigger lap counter
extern boolean big_lap_color; // bigger lap counter but colour
extern boolean statdp; // stat display for extended player setup
extern boolean nametaggfx; // Nametag stuffs
extern boolean driftgaugegfx; // Driftgauge stuffs
extern boolean multiitem_icon; // Extra icons for Sneakers, Banana and Jawz
extern boolean joystickicon; // Extra icons for the joystick input display
extern boolean minidoticon; // Dot icon for minimap player angle display
extern boolean minilighticon; // mkwii-style minimap headlight
//
// autoload stuff
extern boolean autoloading;
extern boolean autoloaded;
extern boolean postautoloaded;
void D_AddPostloadFiles(void);
extern char *autoloadwadfilespost[MAX_WADFILES];
extern char *autoloadwadfiles[MAX_WADFILES];
// the infinite loop of D_SRB2Loop() called from win_main for windows version
void D_SRB2Loop(void) FUNCNORETURN;
@@ -74,4 +94,8 @@ const char *D_Home(void);
//
void D_StartTitle(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif //__D_MAIN__
+81 -105
View File
@@ -64,16 +64,11 @@ static doomdata_t reboundstore[MAXREBOUND];
static INT16 reboundsize[MAXREBOUND];
static INT32 rebound_head, rebound_tail;
/// \brief bandwith of netgame
INT32 net_bandwidth;
/// \brief max length per packet
INT16 hardware_MAXPACKETLENGTH;
boolean (*I_NetGet)(void) = NULL;
void (*I_NetSend)(void) = NULL;
boolean (*I_NetCanSend)(void) = NULL;
boolean (*I_NetCanGet)(void) = NULL;
void (*I_NetCloseSocket)(void) = NULL;
void (*I_NetFreeNodenum)(INT32 nodenum) = NULL;
SINT8 (*I_NetMakeNodewPort)(const char *address, const char* port) = NULL;
@@ -114,20 +109,24 @@ boolean Net_GetNetStat(void)
{
const tic_t t = I_GetTime();
static INT64 oldsendbyte = 0;
if (statstarttic+STATLENGTH <= t)
{
const tic_t df = t-statstarttic;
const INT64 newsendbyte = sendbytes - oldsendbyte;
sendbps = (INT32)(newsendbyte*TICRATE)/df;
getbps = (getbytes*TICRATE)/df;
if (sendackpacket)
lostpercent = 100.0f*(float)retransmit/(float)sendackpacket;
else
lostpercent = 0.0f;
if (getackpacket)
duppercent = 100.0f*(float)duppacket/(float)getackpacket;
else
duppercent = 0.0f;
if (ticruned)
gamelostpercent = 100.0f*(float)ticmiss/(float)ticruned;
else
@@ -225,7 +224,7 @@ FUNCMATH static INT32 cmpack(UINT8 a, UINT8 b)
* \param lowtimer ???
* \return True if a free acknum was found
*/
static boolean GetFreeAcknum(UINT8 *freeack, boolean lowtimer)
static boolean GetFreeAcknum(UINT8 *freeack)
{
node_t *node = &nodes[doomcom->remotenode];
INT32 i, numfreeslot = 0;
@@ -237,6 +236,7 @@ static boolean GetFreeAcknum(UINT8 *freeack, boolean lowtimer)
}
for (i = 0; i < MAXACKPACKETS; i++)
{
if (!ackpak[i].acknum)
{
// For low priority packets, make sure to let freeslots so urgent packets can be sent
@@ -254,17 +254,8 @@ static boolean GetFreeAcknum(UINT8 *freeack, boolean lowtimer)
node->nextacknum++;
ackpak[i].destinationnode = (UINT8)(node - nodes);
ackpak[i].length = doomcom->datalength;
if (lowtimer)
{
// Lowtime means can't be sent now so try it as soon as possible
ackpak[i].senttime = 0;
ackpak[i].resentnum = 1;
}
else
{
ackpak[i].senttime = I_GetTime();
ackpak[i].resentnum = 0;
}
ackpak[i].senttime = I_GetTime();
ackpak[i].resentnum = 0;
M_Memcpy(ackpak[i].pak.raw, netbuffer, ackpak[i].length);
*freeack = ackpak[i].acknum;
@@ -273,46 +264,17 @@ static boolean GetFreeAcknum(UINT8 *freeack, boolean lowtimer)
return true;
}
}
#ifdef PARANOIA
CONS_Debug(DBG_NETPLAY, "No more free ackpacket\n");
#endif
if (netbuffer->packettype < PT_CANFAIL)
I_Error("Connection lost\n");
return false;
}
/** Counts how many acks are free
*
* \param urgent True if the type of the packet meant to
* use an ack is lower than PT_CANFAIL
* If for some reason you don't want use it
* for any packet type in particular,
* just set to false
* \return The number of free acks
*
*/
INT32 Net_GetFreeAcks(boolean urgent)
{
INT32 i, numfreeslot = 0;
INT32 n = 0; // Number of free acks found
for (i = 0; i < MAXACKPACKETS; i++)
if (!ackpak[i].acknum)
{
// For low priority packets, make sure to let freeslots so urgent packets can be sent
if (!urgent)
{
numfreeslot++;
if (numfreeslot <= URGENTFREESLOTNUM)
continue;
}
n++;
}
return n;
}
// Get a ack to send in the queue of this node
static UINT8 GetAcktosend(INT32 node)
{
@@ -325,6 +287,7 @@ static void RemoveAck(INT32 i)
INT32 node = ackpak[i].destinationnode;
DEBFILE(va("Remove ack %d\n",ackpak[i].acknum));
ackpak[i].acknum = 0;
if (nodes[node].flags & NF_CLOSE)
Net_CloseConnection(node);
}
@@ -340,13 +303,16 @@ static boolean Processackpak(void)
if (netbuffer->ackreturn && cmpack(node->remotefirstack, netbuffer->ackreturn) < 0)
{
node->remotefirstack = netbuffer->ackreturn;
// Search the ackbuffer and free it
for (i = 0; i < MAXACKPACKETS; i++)
{
if (ackpak[i].acknum && ackpak[i].destinationnode == node - nodes
&& cmpack(ackpak[i].acknum, netbuffer->ackreturn) <= 0)
{
RemoveAck(i);
}
}
}
// Received a packet with ack, queue it to send the ack back
@@ -354,6 +320,7 @@ static boolean Processackpak(void)
{
UINT8 ack = netbuffer->ack;
getackpacket++;
if (cmpack(ack, node->firstacktosend) <= 0)
{
DEBFILE(va("Discard(1) ack %d (duplicated)\n", ack));
@@ -364,6 +331,7 @@ static boolean Processackpak(void)
{
// Check if it is not already in the queue
for (i = node->acktosend_tail; i != node->acktosend_head; i = (i+1) % MAXACKTOSEND)
{
if (node->acktosend[i] == ack)
{
DEBFILE(va("Discard(2) ack %d (duplicated)\n", ack));
@@ -371,11 +339,14 @@ static boolean Processackpak(void)
goodpacket = false; // Discard packet (duplicate)
break;
}
}
if (goodpacket)
{
// Is a good packet so increment the acknowledge number,
// Then search for a "hole" in the queue
UINT8 nextfirstack = (UINT8)(node->firstacktosend + 1);
if (!nextfirstack)
nextfirstack = 1;
@@ -388,9 +359,11 @@ static boolean Processackpak(void)
if (!nextfirstack)
nextfirstack = 1;
hm1 = (UINT8)((node->acktosend_head-1+MAXACKTOSEND) % MAXACKTOSEND);
while (change)
{
change = false;
for (i = node->acktosend_tail; i != node->acktosend_head;
i = (i+1) % MAXACKTOSEND)
{
@@ -403,6 +376,7 @@ static boolean Processackpak(void)
nextfirstack = 1;
change = true;
}
if (i == node->acktosend_tail)
{
node->acktosend[node->acktosend_tail] = 0;
@@ -424,6 +398,7 @@ static boolean Processackpak(void)
// Will be incremented when the nextfirstack comes (code above)
UINT8 newhead = (UINT8)((node->acktosend_head+1) % MAXACKTOSEND);
DEBFILE(va("out of order packet (%d expected)\n", nextfirstack));
if (newhead != node->acktosend_tail)
{
node->acktosend[node->acktosend_head] = ack;
@@ -460,8 +435,11 @@ static void GotAcks(void)
INT32 i, j;
for (j = 0; j < MAXACKTOSEND; j++)
{
if (netbuffer->u.textcmd[j])
{
for (i = 0; i < MAXACKPACKETS; i++)
{
if (ackpak[i].acknum && ackpak[i].destinationnode == doomcom->remotenode)
{
if (ackpak[i].acknum == netbuffer->u.textcmd[j])
@@ -476,6 +454,9 @@ static void GotAcks(void)
ackpak[i].senttime--; // hurry up
}
}
}
}
}
}
#endif
@@ -510,6 +491,7 @@ void Net_AckTicker(void)
{
const INT32 nodei = ackpak[i].destinationnode;
node_t *node = &nodes[nodei];
if (ackpak[i].acknum && ackpak[i].senttime + NODETIMEOUT < I_GetTime())
{
if (ackpak[i].resentnum > 10 && (node->flags & NF_CLOSE))
@@ -562,8 +544,10 @@ void Net_UnAcknowledgePacket(INT32 node)
#else
INT32 hm1 = (nodes[node].acktosend_head-1+MAXACKTOSEND) % MAXACKTOSEND;
DEBFILE(va("UnAcknowledge node %d\n", node));
if (!node)
return;
if (nodes[node].acktosend[hm1] == netbuffer->ack)
{
nodes[node].acktosend[hm1] = 0;
@@ -587,6 +571,7 @@ void Net_UnAcknowledgePacket(INT32 node)
if (!nodes[node].firstacktosend)
nodes[node].firstacktosend = UINT8_MAX;
}
nodes[node].firstacktosend++;
if (!nodes[node].firstacktosend)
nodes[node].firstacktosend = 1;
@@ -605,8 +590,10 @@ static boolean Net_AllAcksReceived(void)
INT32 i;
for (i = 0; i < MAXACKPACKETS; i++)
{
if (ackpak[i].acknum)
return false;
}
return true;
}
@@ -626,6 +613,7 @@ void Net_WaitAllAckReceived(UINT32 timeout)
timeout = tictac + timeout*NEWTICRATE;
HGetPacket();
while (timeout > I_GetTime() && !Net_AllAcksReceived())
{
while (tictac == I_GetTime())
@@ -633,6 +621,7 @@ void Net_WaitAllAckReceived(UINT32 timeout)
I_Sleep(cv_sleep.value);
I_UpdateTime(cv_timescale.value);
}
tictac = I_GetTime();
HGetPacket();
Net_AckTicker();
@@ -643,6 +632,7 @@ void Net_WaitAllAckReceived(UINT32 timeout)
static void InitNode(node_t *node)
{
node->acktosend_head = node->acktosend_tail = 0;
memset(node->acktosend, 0, sizeof(node->acktosend));
node->firstacktosend = 0;
node->nextacknum = 1;
node->remotefirstack = 0;
@@ -672,13 +662,14 @@ void Net_AbortPacketType(UINT8 packettype)
#ifdef NONET
(void)packettype;
#else
INT32 i;
for (i = 0; i < MAXACKPACKETS; i++)
for (INT32 i = 0; i < MAXACKPACKETS; i++)
{
if (ackpak[i].acknum && (ackpak[i].pak.data.packettype == packettype
|| packettype == UINT8_MAX))
{
ackpak[i].acknum = 0;
}
}
#endif
}
@@ -723,6 +714,7 @@ void Net_CloseConnection(INT32 node)
// check if we are waiting for an ack from this node
for (i = 0; i < MAXACKPACKETS; i++)
{
if (ackpak[i].acknum && ackpak[i].destinationnode == node)
{
if (!forceclose)
@@ -730,6 +722,7 @@ void Net_CloseConnection(INT32 node)
else
ackpak[i].acknum = 0;
}
}
InitNode(&nodes[node]);
SV_AbortSendFiles(node);
@@ -746,9 +739,8 @@ static UINT32 NetbufferChecksum(void)
UINT32 c = 0x1234567;
const INT32 l = doomcom->datalength - 4;
const UINT8 *buf = (UINT8 *)netbuffer + 4;
INT32 i;
for (i = 0; i < l; i++, buf++)
for (INT32 i = 0; i < l; i++, buf++)
c += (*buf) * (i+1);
return LONG(c);
@@ -763,6 +755,7 @@ static void fprintfstring(char *s, size_t len)
size_t i;
for (i = 0; i < len; i++)
{
if (s[i] < 32)
{
if (!mode)
@@ -782,6 +775,8 @@ static void fprintfstring(char *s, size_t len)
}
fprintf(debugfile, "%c", s[i]);
}
}
if (mode)
fprintf(debugfile, "]");
}
@@ -793,7 +788,7 @@ static void fprintfstringnewline(char *s, size_t len)
}
/// \warning Keep this up-to-date if you add/remove/rename packet types
static const char *packettypename[NUMPACKETTYPE] =
const char *packettypename[NUMPACKETTYPE] =
{
"NOTHING",
"SERVERCFG",
@@ -836,13 +831,30 @@ static const char *packettypename[NUMPACKETTYPE] =
"MOREFILESNEEDED",
"PING"
#ifdef SATURNPAK
,
"WILLRESENDGAMESTATE",
"CANRECEIVEGAMESTATE",
"RECEIVEDGAMESTATE",
"ISSATURN" // special packet to identify saturn clients
#endif
};
const char *Net_GetPacketName(UINT8 packettype)
{
if (packettype >= NUMPACKETTYPE)
return "UNKNOWN";
return packettypename[packettype];
}
static void DebugPrintpacket(const char *header)
{
fprintf(debugfile, "%-12s (node %d,ack %d,ackret %d,size %d) type(%d) : %s\n",
header, doomcom->remotenode, netbuffer->ack, netbuffer->ackreturn, doomcom->datalength,
netbuffer->packettype, packettypename[netbuffer->packettype]);
netbuffer->packettype, Net_GetPacketName(netbuffer->packettype));
switch (netbuffer->packettype)
{
@@ -1021,6 +1033,7 @@ static boolean ShouldDropPacket(void)
boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlength)
{
doomcom->datalength = (INT16)(packetlength + BASEPACKETSIZE);
if (node == 0) // Packet is to go back to us
{
if ((rebound_head+1) % MAXREBOUND == rebound_tail)
@@ -1056,6 +1069,7 @@ boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlen
// do this before GetFreeAcknum because this function backups
// the current packet
doomcom->remotenode = (INT16)node;
if (doomcom->datalength <= 0)
{
DEBFILE("HSendPacket: nothing to send\n");
@@ -1070,17 +1084,10 @@ boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlen
netbuffer->ackreturn = GetAcktosend(node);
else
netbuffer->ackreturn = 0;
if (reliable)
{
if (I_NetCanSend && !I_NetCanSend())
{
if (netbuffer->packettype < PT_CANFAIL)
GetFreeAcknum(&netbuffer->ack, true);
DEBFILE("HSendPacket: Out of bandwidth\n");
return false;
}
else if (!GetFreeAcknum(&netbuffer->ack, false))
if (!GetFreeAcknum(&netbuffer->ack))
return false;
}
else
@@ -1152,7 +1159,6 @@ boolean HGetPacket(void)
while(true)
{
//nodejustjoined = I_NetGet();
I_NetGet();
if (doomcom->remotenode == -1) // No packet received
@@ -1181,21 +1187,6 @@ boolean HGetPacket(void)
DebugPrintpacket("GET");
#endif
/*// If a new node sends an unexpected packet, just ignore it
if (nodejustjoined && server
&& !(netbuffer->packettype == PT_ASKINFO
|| netbuffer->packettype == PT_SERVERINFO
|| netbuffer->packettype == PT_PLAYERINFO
|| netbuffer->packettype == PT_REQUESTFILE
|| netbuffer->packettype == PT_ASKINFOVIAMS
|| netbuffer->packettype == PT_CLIENTJOIN))
{
DEBFILE(va("New node sent an unexpected %s packet\n", packettypename[netbuffer->packettype]));
//CONS_Alert(CONS_NOTICE, "New node sent an unexpected %s packet\n", packettypename[netbuffer->packettype]);
Net_CloseConnection(doomcom->remotenode | FORCECLOSE);
continue;
}*/
// Proceed the ack and ackreturn field
if (!Processackpak())
continue; // discarded (duplicated)
@@ -1208,7 +1199,7 @@ boolean HGetPacket(void)
}
break;
}
#endif // ndef NONET
#endif // ifndef NONET
return true;
}
@@ -1232,6 +1223,7 @@ static void Internal_FreeNodenum(INT32 nodenum)
SINT8 I_NetMakeNode(const char *hostname)
{
SINT8 newnode = -1;
if (I_NetMakeNodewPort)
{
char *localhostname = strdup(hostname);
@@ -1280,13 +1272,12 @@ boolean D_CheckNetGame(void)
I_NetGet = Internal_Get;
I_NetSend = Internal_Send;
I_NetCanSend = NULL;
I_NetCloseSocket = NULL;
I_NetFreeNodenum = Internal_FreeNodenum;
I_NetMakeNodewPort = NULL;
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
net_bandwidth = 30000;
// I_InitNetwork sets doomcom and netgame
// check and initialize the network driver
multiplayer = false;
@@ -1317,21 +1308,6 @@ boolean D_CheckNetGame(void)
CONS_Printf(M_GetText("Set extratics to %d\n"), doomcom->extratics);
}
if (M_CheckParm("-bandwidth"))
{
if (M_IsNextParm())
{
net_bandwidth = atoi(M_GetNextParm());
if (net_bandwidth < 1000)
net_bandwidth = 1000;
if (net_bandwidth > 100000)
hardware_MAXPACKETLENGTH = MAXPACKETLENGTH;
CONS_Printf(M_GetText("Network bandwidth set to %d\n"), net_bandwidth);
}
else
I_Error("usage: -bandwidth <byte_per_sec>");
}
software_MAXPACKETLENGTH = hardware_MAXPACKETLENGTH;
if (M_CheckParm("-packetsize"))
{
@@ -1357,9 +1333,9 @@ boolean D_CheckNetGame(void)
I_Error("Too many nodes (%d), max:%d", doomcom->numnodes, MAXNETNODES);
netbuffer = (doomdata_t *)(void *)&doomcom->data;
#ifdef HOLEPUNCH
#ifdef HOLEPUNCH
holepunchpacket = (holepunch_t *)(void *)&doomcom->data;
#endif
#endif
#ifdef DEBUGFILE
if (M_CheckParm("-debugfile"))
@@ -1421,6 +1397,7 @@ void Command_Ping_f(void)
INT32 i;
pingc = 0;
for (i = 1; i < MAXPLAYERS; ++i)
{
if (playeringame[i])
@@ -1453,13 +1430,13 @@ void Command_Ping_f(void)
}
}
if (f_width < 10) f_width = 1;
if (f_width < 10) f_width = 1;
else if (f_width < 100) f_width = 2;
else f_width = 3;
else f_width = 3;
if (ms_width < 10) ms_width = 1;
if (ms_width < 10) ms_width = 1;
else if (ms_width < 100) ms_width = 2;
else ms_width = 3;
else ms_width = 3;
qsort(pingv, pingc, sizeof (struct pingcell), &pingcellcmp);
@@ -1498,7 +1475,6 @@ void D_CloseConnection(void)
I_NetGet = Internal_Get;
I_NetSend = Internal_Send;
I_NetCanSend = NULL;
I_NetCloseSocket = NULL;
I_NetFreeNodenum = Internal_FreeNodenum;
I_NetMakeNodewPort = NULL;
+10 -5
View File
@@ -18,6 +18,10 @@
#ifndef __D_NET__
#define __D_NET__
#ifdef __cplusplus
extern "C" {
#endif
// Max computers in a game
// 127 is probably as high as this can go, because
// SINT8 is used for nodes sometimes >:(
@@ -43,14 +47,10 @@ extern SINT8 nodetoplayer4[MAXNETNODES]; // Say the numplayer for this node if a
extern UINT8 playerpernode[MAXNETNODES]; // Used specially for splitscreen
extern boolean nodeingame[MAXNETNODES]; // Set false as nodes leave game
extern boolean serverrunning;
INT32 Net_GetFreeAcks(boolean urgent);
void Net_AckTicker(void);
// If reliable return true if packet sent, 0 else
boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum,
size_t packetlength);
boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlength);
boolean HGetPacket(void);
void D_SetDoomcom(void);
#ifndef NONET
@@ -65,5 +65,10 @@ void Net_ConnectionTimeout(INT32 node);
void Net_AbortPacketType(UINT8 packettype);
void Net_SendAcks(INT32 node);
void Net_WaitAllAckReceived(UINT32 timeout);
const char *Net_GetPacketName(UINT8 packettype);
#ifdef __cplusplus
} // extern "C"
#endif
#endif
+507 -619
View File
File diff suppressed because it is too large. Load diff
+23 -20
View File
@@ -15,8 +15,17 @@
#ifndef __D_NETCMD__
#define __D_NETCMD__
#ifdef __cplusplus
extern "C" {
#endif
#include "command.h"
void SendWeaponPref(void);
void SendWeaponPref2(void);
void SendWeaponPref3(void);
void SendWeaponPref4(void);
// console vars
extern consvar_t cv_playername;
extern consvar_t cv_playercolor;
@@ -43,25 +52,12 @@ extern consvar_t cv_seenames, cv_allowseenames;
extern consvar_t cv_usemouse;
//WTF
extern consvar_t cv_mouseturn;
extern consvar_t cv_usejoystick;
extern consvar_t cv_usejoystick2;
extern consvar_t cv_usejoystick3;
extern consvar_t cv_usejoystick4;
extern consvar_t cv_usejoystick[4]; //MAXSPLITSCREENPLAYERS
#ifdef LJOYSTICK
extern consvar_t cv_joyport;
extern consvar_t cv_joyport2;
#endif
extern consvar_t cv_joyscale;
extern consvar_t cv_joyscale2;
extern consvar_t cv_joyscale3;
extern consvar_t cv_joyscale4;
// splitscreen with second mouse
extern consvar_t cv_mouse2port;
extern consvar_t cv_usemouse2;
#if defined (__unix__) || defined (__APPLE__) || defined (UNIXCOMMON)
extern consvar_t cv_mouse2opt;
#endif
extern consvar_t cv_joyscale[4]; //MAXSPLITSCREENPLAYERS
// normally in p_mobj but the .h is not read
extern consvar_t cv_itemrespawntime;
@@ -128,6 +124,7 @@ extern consvar_t cv_kartvoterulechanges;
extern consvar_t cv_kartgametypepreference;
extern consvar_t cv_kartspeedometer;
extern consvar_t cv_kartvoices;
extern consvar_t cv_karthitemdialog;
extern consvar_t cv_karteliminatelast;
@@ -161,10 +158,12 @@ extern consvar_t cv_pingstyle;
//extern consvar_t cv_smallpos;
extern consvar_t cv_showminimapnames;
extern consvar_t cv_minihead;
extern consvar_t cv_showminimapangle;
extern consvar_t cv_showlapemblem;
extern consvar_t cv_showlapemblem;
extern consvar_t cv_showviewpointtext;
extern consvar_t cv_showdownloadprompt;
extern consvar_t cv_luaimmersion;
extern consvar_t cv_fakelocalskin;
extern consvar_t cv_showlocalskinmenus;
@@ -183,9 +182,7 @@ extern consvar_t cv_nametagdist;
extern consvar_t cv_showownnametag;
extern consvar_t cv_smallnametags;
extern consvar_t cv_nametagrestat;
extern consvar_t cv_nametaghop;
extern consvar_t cv_nametagscore;
extern consvar_t cv_shownametagfinish;
extern consvar_t cv_shownametagspectator;
#define SKINSELECTSPIN_PAIN 25
@@ -201,12 +198,16 @@ extern consvar_t cv_ps_thinkframe_page;
extern consvar_t cv_ps_samplesize;
extern consvar_t cv_ps_descriptor;
extern consvar_t cv_director, cv_kartdebugdirector, cv_showdirectorhud;
extern consvar_t cv_showtrackaddon;
extern consvar_t cv_showspecstuff;
extern consvar_t cv_betainterscreen;
extern consvar_t cv_laglesscam;
typedef enum
{
SKINMENUTYPE_SCROLL = 0,
@@ -304,8 +305,6 @@ typedef union {
#pragma pack()
#endif
extern tic_t driftsparkGrowTimer[16];
// add game commands, needs cleanup
void D_RegisterServerCommands(void);
void D_RegisterClientCommands(void);
@@ -328,4 +327,8 @@ void D_SetPassword(const char *pw);
// used for the player setup menu
UINT8 CanChangeSkin(INT32 playernum);
#ifdef __cplusplus
} // extern "C"
#endif
#endif
+120 -62
View File
@@ -64,11 +64,11 @@ static boolean SV_SendFile(INT32 node, const char *filename, UINT8 fileid);
#ifdef HAVE_CURL
size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream);
#if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 35, 0)
int curlprogress_callbackx(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
#define XFERINFOFUNCTION
#if (LIBCURL_VERSION_MAJOR <= 7) && (LIBCURL_VERSION_MINOR < 35)
static int curlprogress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow);
#else
int curlprogress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow);
static int curlprogress_callbackx(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow);
#define XFERINFOFUNCTION
#endif
#endif
@@ -111,26 +111,19 @@ static fileused_t transferFiles[UINT8_MAX + 1];
// Receiver structure
INT32 fileneedednum; // Number of files needed to join the server
fileneeded_t fileneeded[MAX_WADFILES]; // List of needed files
#ifdef HAVE_THREADS
static I_mutex downloadmutex;
#endif
char downloaddir[512] = "DOWNLOAD";
#ifdef CLIENT_LOADINGSCREEN
// for cl loading screen
INT32 lastfilenum = -1;
INT32 downloadcompletednum = 0;
UINT32 downloadcompletedsize = 0;
INT32 totalfilesrequestednum = 0;
UINT32 totalfilesrequestedsize = 0;
#endif
file_download_t filedownload;
#ifdef HAVE_CURL
static CURL *http_handle;
static CURLM *multi_handle;
boolean curl_running = false;
boolean curl_failedwebdownload = false;
static double curl_dlnow;
static double curl_dltotal;
static UINT32 curl_dlnow;
static UINT32 curl_dltotal;
static time_t curl_starttime;
INT32 curl_transfers = 0;
static int curl_runninghandles = 0;
static UINT32 curl_origfilesize;
static UINT32 curl_origtotalfilesize;
@@ -221,6 +214,7 @@ void D_ParseFileneeded(INT32 fileneedednum_parm, UINT8 *fileneededstr, UINT16 fi
for (i = firstfile; i < fileneedednum; i++)
{
fileneeded[i].status = FS_NOTCHECKED; // We haven't even started looking for the file yet
fileneeded[i].justdownloaded = false;
filestatus = READUINT8(p); // The first byte is the file status
fileneeded[i].willsend = (UINT8)(filestatus >> 4);
fileneeded[i].totalsize = READUINT32(p); // The four next bytes are the file size
@@ -232,8 +226,12 @@ void D_ParseFileneeded(INT32 fileneedednum_parm, UINT8 *fileneededstr, UINT16 fi
void CL_PrepareDownloadSaveGame(const char *tmpsave)
{
#ifdef CLIENT_LOADINGSCREEN
filedownload.current = -1;
#endif
fileneedednum = 1;
fileneeded[0].status = FS_REQUESTED;
fileneeded[0].justdownloaded = false;
fileneeded[0].totalsize = UINT32_MAX;
fileneeded[0].file = NULL;
memset(fileneeded[0].md5sum, 0, 16);
@@ -548,13 +546,13 @@ INT32 CL_CheckFiles(void)
{
if (fileneeded[i].status == FS_NOTFOUND || fileneeded[i].status == FS_MD5SUMBAD || fileneeded[i].status == FS_FALLBACK)
downloadrequired = true;
if (fileneeded[i].status != FS_OPEN)
filestoload++;
if (fileneeded[i].status != FS_NOTCHECKED) //since we're running this over multiple tics now, its possible for us to come across files checked in previous tics
continue;
CONS_Debug(DBG_NETPLAY, "searching for '%s' ", fileneeded[i].filename);
// Check in already loaded files
@@ -658,13 +656,10 @@ static boolean SV_SendFile(INT32 node, const char *filename, UINT8 fileid)
q = &((*q)->next);
// Allocate a file request and append it to the file list
p = *q = (filetx_t *)malloc(sizeof (filetx_t));
p = *q = (filetx_t *)calloc(1, sizeof(filetx_t)); // Initialise with zeros
if (!p)
I_Error("SV_SendFile: No more memory\n");
// Initialise with zeros
memset(p, 0, sizeof (filetx_t));
// Allocate the file name
p->id.filename = (char *)malloc(MAX_WADPATH);
if (!p->id.filename)
@@ -743,13 +738,10 @@ void SV_SendRam(INT32 node, void *data, size_t size, freemethod_t freemethod, UI
q = &((*q)->next);
// Allocate a file request and append it to the file list
p = *q = (filetx_t *)malloc(sizeof (filetx_t));
p = *q = (filetx_t *)calloc(1, sizeof(filetx_t)); // Initialise with zeros
if (!p)
I_Error("SV_SendRam: No more memory\n");
// Initialise with zeros
memset(p, 0, sizeof (filetx_t));
p->ram = freemethod; // Remember how to free the memory block for when we're done sending it
p->id.ram = data;
p->size = (UINT32)size;
@@ -864,8 +856,12 @@ void SV_FileSendTicker(void)
if (!transferFiles[f->fileid].file)
{
I_Error("Can't open file %s: %s",
CONS_Alert(CONS_ERROR, "Can't open file %s: %s\n",
f->id.filename, strerror(errno));
SV_EndFileSend(i);
HSendPacket(i, true, 0, PT_SERVERREFUSE);
break;
}
}
@@ -970,7 +966,7 @@ void Got_Filetxpak(void)
if (filenum >= fileneedednum)
{
DEBFILE(va("fileframent not needed %d>%d\n", filenum, fileneedednum));
DEBFILE(va("filefragment not needed %d>%d\n", filenum, fileneedednum));
//I_Error("Received an unneeded file fragment (file id received: %d, file id needed: %d)\n", filenum, fileneedednum);
return;
}
@@ -991,6 +987,7 @@ void Got_Filetxpak(void)
{
UINT32 pos = LONG(netbuffer->u.filetxpak.position);
UINT16 size = SHORT(netbuffer->u.filetxpak.size);
// Use a special trick to know when the file is complete (not always used)
// WARNING: file fragments can arrive out of order so don't stop yet!
if (pos & 0x80000000)
@@ -1010,15 +1007,16 @@ void Got_Filetxpak(void)
fclose(file->file);
file->file = NULL;
file->status = FS_FOUND;
file->justdownloaded = true;
CONS_Printf(M_GetText("Downloading %s...(done)\n"),
filename);
#ifndef NONET
downloadcompletednum++;
downloadcompletedsize += file->totalsize;
filedownload.completednum++;
filedownload.completedsize += file->totalsize;
#endif
}
}
else
else if (!file->justdownloaded)
{
const char *s;
switch(file->status)
@@ -1041,6 +1039,7 @@ void Got_Filetxpak(void)
}
I_Error("Received a file not requested (file id: %d, file status: %s)\n", filenum, s);
}
// Send ack back quickly
if (++filetime == 3)
{
@@ -1049,7 +1048,7 @@ void Got_Filetxpak(void)
}
#ifdef CLIENT_LOADINGSCREEN
lastfilenum = filenum;
filedownload.current = filenum;
#endif
}
@@ -1198,31 +1197,57 @@ filestatus_t findfile(char *filename, const UINT8 *wantedmd5sum, boolean complet
#ifdef HAVE_CURL
size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
return fwrite(ptr, size, nmemb, stream);
}
#ifdef XFERINFOFUNCTION
int curlprogress_callbackx(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
static int curlprogress_callbackx(void *clientp, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow)
{
time_t curtime;
(void)clientp;
(void)ultotal;
(void)ulnow; // Function prototype requires these but we won't use, so just discard
curl_dlnow = dlnow;
curl_dltotal = dltotal;
getbytes = curl_dlnow / (time(NULL) - curl_starttime); // To-do: Make this more accurate???
curtime = time(NULL);
curl_dlnow = (UINT32)dlnow;
curl_dltotal = (UINT32)dltotal;
if (curtime > curl_starttime)
{
getbytes = ((double)dlnow) / (curtime - curl_starttime); // To-do: Make this more accurate???
}
else
{
getbytes = 0;
}
return 0;
}
#else
int curlprogress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
static int curlprogress_callback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
{
time_t curtime;
(void)clientp;
(void)ultotal;
(void)ulnow; // Function prototype requires these but we won't use, so just discard
curl_dlnow = dlnow;
curl_dltotal = dltotal;
getbytes = curl_dlnow / (time(NULL) - curl_starttime); // To-do: Make this more accurate???
curtime = time(NULL);
curl_dlnow = (UINT32)dlnow;
curl_dltotal = (UINT32)dltotal;
if (curtime > curl_starttime)
{
getbytes = ((double)dlnow) / (curtime - curl_starttime); // To-do: Make this more accurate???
}
else
{
getbytes = 0;
}
return 0;
}
#endif
@@ -1258,10 +1283,10 @@ void CURLPrepareFile(const char* url, int dfilenum)
curl_easy_setopt(http_handle, CURLOPT_URL, va("%s/%s", url, curl_realname));
// Only allow HTTP and HTTPS
#if defined(CURL_AT_LEAST_VERSION) && CURL_AT_LEAST_VERSION(7, 85, 0)
curl_easy_setopt(http_handle, CURLOPT_PROTOCOLS_STR, "http,https");
#else
#if (LIBCURL_VERSION_MAJOR <= 7) && (LIBCURL_VERSION_MINOR < 85)
curl_easy_setopt(http_handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP|CURLPROTO_HTTPS);
#else
curl_easy_setopt(http_handle, CURLOPT_PROTOCOLS_STR, "http,https");
#endif
curl_easy_setopt(http_handle, CURLOPT_USERAGENT, va("SRB2Kart/v%d.%d", VERSION, SUBVERSION)); // Set user agent as some servers won't accept invalid user agents.
@@ -1283,6 +1308,21 @@ void CURLPrepareFile(const char* url, int dfilenum)
strcatbf(curl_curfile->filename, downloaddir, "/");
curl_curfile->file = fopen(curl_curfile->filename, "wb");
if (!curl_curfile->file)
{
CONS_Alert(CONS_ERROR, "Couldnt open %s for writing!\nAborting file download.\nCheck if you have write access to your download folder!\n", curl_curfile->filename);
CL_AbortConnection();
M_StartMessage(M_GetText(
"An error occured when trying to\n"
"download missing addons.\n"
"See the console or log file\n"
"for additional details.\n\n"
"Press ESC\n"
), NULL, MM_NOTHING);
return;
}
curl_easy_setopt(http_handle, CURLOPT_WRITEDATA, curl_curfile->file);
curl_easy_setopt(http_handle, CURLOPT_WRITEFUNCTION, curlwrite_data);
curl_easy_setopt(http_handle, CURLOPT_NOPROGRESS, 0L);
@@ -1293,25 +1333,38 @@ void CURLPrepareFile(const char* url, int dfilenum)
#endif
curl_curfile->status = FS_DOWNLOADING;
lastfilenum = dfilenum;
curl_multi_add_handle(multi_handle, http_handle);
curl_multi_perform(multi_handle, &curl_runninghandles);
curl_starttime = time(NULL);
curl_running = true;
filedownload.current = dfilenum;
filedownload.http_running = true;
#ifdef HAVE_THREADS
I_spawn_thread("http-download", (I_thread_fn)CURLGetFile, NULL);
#endif
}
else
filedownload.http_running = false;
}
void CURLAbortFile(void)
{
curl_running = false;
filedownload.http_running = false;
#ifdef HAVE_THREADS
// lock and unlock to wait for the download thread to exit
I_lock_mutex(&downloadmutex);
I_unlock_mutex(downloadmutex);
#endif
}
void CURLGetFile(void)
{
#ifdef HAVE_THREADS
I_lock_mutex(&downloadmutex);
#endif
CURLMcode mc; /* return code used by curl_multi_wait() */
CURLcode easyres; /* Return from easy interface */
CURLMsg *m; /* for picking up messages with the transfer status */
@@ -1319,10 +1372,8 @@ void CURLGetFile(void)
int msgs_left; /* how many messages are left */
const char *easy_handle_error;
boolean running = true;
long response_code = 0;
static char *filename;
while (running && curl_running)
while (running && filedownload.http_running)
{
if (curl_runninghandles)
{
@@ -1336,6 +1387,7 @@ void CURLGetFile(void)
CONS_Alert(CONS_WARNING, "curl_multi_wait() failed, code %d.\n", mc);
continue;
}
curl_curfile->currentsize = curl_dlnow;
curl_curfile->totalsize = curl_dltotal;
}
@@ -1349,11 +1401,13 @@ void CURLGetFile(void)
e = m->easy_handle;
easyres = m->data.result;
filename = Z_StrDup(curl_realname);
char *filename = Z_StrDup(curl_realname);
nameonly(filename);
if (easyres != CURLE_OK)
{
long response_code = 0;
if (easyres == CURLE_HTTP_RETURNED_ERROR)
curl_easy_getinfo(e, CURLINFO_RESPONSE_CODE, &response_code);
@@ -1361,7 +1415,7 @@ void CURLGetFile(void)
curl_curfile->status = FS_FALLBACK;
curl_curfile->currentsize = curl_origfilesize;
curl_curfile->totalsize = curl_origtotalfilesize;
curl_failedwebdownload = true;
filedownload.http_failed = true;
fclose(curl_curfile->file);
remove(curl_curfile->filename);
CONS_Printf(M_GetText("Failed to download %s (%s)\n"), filename, easy_handle_error);
@@ -1374,36 +1428,40 @@ void CURLGetFile(void)
{
CONS_Alert(CONS_ERROR, M_GetText("HTTP Download of %s finished but is corrupt or has been modified\n"), filename);
curl_curfile->status = FS_FALLBACK;
curl_failedwebdownload = true;
filedownload.http_failed = true;
}
else
{
CONS_Printf(M_GetText("Finished HTTP download of %s\n"), filename);
downloadcompletednum++;
downloadcompletedsize += curl_curfile->totalsize;
filedownload.completednum++;
filedownload.completedsize += curl_curfile->totalsize;
curl_curfile->status = FS_FOUND;
}
}
Z_Free(filename);
curl_curfile->file = NULL;
curl_transfers--;
filedownload.remaining--;
curl_multi_remove_handle(multi_handle, e);
curl_easy_cleanup(e);
if (!curl_transfers)
if (!filedownload.remaining)
break;
}
}
}
if (!curl_transfers || !curl_running)
if (!filedownload.remaining || !filedownload.http_running)
{
curl_multi_cleanup(multi_handle);
curl_global_cleanup();
multi_handle = NULL;
}
curl_running = false;
filedownload.http_running = false;
#ifdef HAVE_THREADS
I_unlock_mutex(downloadmutex);
#endif
}
HTTP_login *
+28 -8
View File
@@ -13,6 +13,11 @@
#ifndef __D_NETFIL__
#define __D_NETFIL__
#ifdef __cplusplus
extern "C" {
#endif
#include "d_clisrv.h"
#include "w_wad.h"
typedef enum
@@ -45,24 +50,35 @@ typedef struct
UINT32 currentsize;
UINT32 totalsize;
filestatus_t status; // The value returned by recsearch
boolean justdownloaded; // To prevent late fragments from causing an I_Error
} fileneeded_t;
extern INT32 fileneedednum;
extern fileneeded_t fileneeded[MAX_WADFILES];
extern char downloaddir[512];
typedef struct
{
#ifdef CLIENT_LOADINGSCREEN
extern INT32 lastfilenum;
extern INT32 downloadcompletednum;
extern UINT32 downloadcompletedsize;
extern INT32 totalfilesrequestednum;
extern UINT32 totalfilesrequestedsize;
INT32 current;
INT32 completednum;
UINT32 completedsize;
INT32 totalnum;
UINT32 totalsize;
#endif
#ifdef HAVE_CURL
extern boolean curl_failedwebdownload;
extern boolean curl_running;
extern INT32 curl_transfers;
INT32 remaining;
boolean http_failed;
boolean http_running;
char http_source[MAX_MIRROR_LENGTH+1];
#endif
} file_download_t;
extern file_download_t filedownload;
#ifdef HAVE_CURL
typedef struct HTTP_login HTTP_login;
@@ -113,4 +129,8 @@ HTTP_login * CURLGetLogin (const char *url, HTTP_login ***return_prev_next);
size_t curlwrite_data(void *ptr, size_t size, size_t nmemb, FILE *stream);
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif // __D_NETFIL__
+32 -10
View File
@@ -347,6 +347,25 @@ typedef enum
RW_RAIL = 32
} ringweapons_t;
// enum for saved lap times
typedef enum
{
LAP_CUR,
LAP_BEST,
LAP_LAST,
LAP__MAX
} laptime_e;
// yes i made a whole struct for this :chonkbuncle:
typedef struct squishdance_s
{
tic_t countdown; // hold "custom 3" for 2 seconds to engange le dance
tic_t time;
fixed_t work;
fixed_t ang;
fixed_t bounce; // hehe squishy
} squishdance_t;
// ========================================================================
// PLAYER STRUCTURE
// ========================================================================
@@ -393,9 +412,8 @@ typedef struct player_s
INT32 kartstuff[NUMKARTSTUFF];
angle_t frameangle; // for the player add the ability to have the sprite only face other angles
angle_t old_frameangle, old_frameangle2;
// SRB2Kart CEP: Sliptide rolling
INT32 sliptidemem;
angle_t sliproll;
INT16 lturn_max[MAXPREDICTTICS]; // What's the expected turn value for full-left for a number of frames back (to account for netgame latency)?
@@ -465,6 +483,7 @@ typedef struct player_s
INT16 numboxes; // Number of item boxes obtained for Race Mode
INT16 totalring; // Total number of rings obtained for Race Mode
tic_t realtime; // integer replacement for leveltime
tic_t laptime[LAP__MAX];
UINT8 laps; // Number of laps (optional)
////////////////////
@@ -537,15 +556,18 @@ typedef struct player_s
tic_t grieftime;
UINT8 griefstrikes;
UINT8 splitscreenindex;
#ifdef HWRENDER
fixed_t fovadd; // adjust FOV for hw rendering
#endif
tic_t hitemtimer;
UINT8 hitemvictim;
struct {
angle_t aiming, awayviewaiming, frameangle;
angle_t viewrollangle;
} lerp;
UINT8 splitscreenindex;
tic_t driftsparkGrowTimer;
fixed_t spinoutrot; // When a player spins out, this value increments modulus 360.
squishdance_t squishdance;
fixed_t fovadd; // adjust FOV for hw rendering
} player_t;
#endif
+7
View File
@@ -17,6 +17,8 @@
#ifndef __D_THINK__
#define __D_THINK__
#include "doomdef.h"
#ifdef __GNUG__
#pragma interface
#endif
@@ -49,6 +51,11 @@ typedef struct thinker_s
// killough 11/98: count of how many other objects reference
// this one using pointers. Used for garbage collection.
INT32 references;
boolean cachable;
#ifdef PARANOIA
INT32 debug_mobjtype;
tic_t debug_time;
#endif
} thinker_t;
#endif
+108
View File
@@ -0,0 +1,108 @@
# Declare dedicated interface sources
target_sourcefile(c)
target_sources(SRB2SDL2 PRIVATE)
if(${CMAKE_SYSTEM} MATCHES Windows)
target_sources(SRB2SDL2 PRIVATE
../win32/win_dbg.c
../win32/Srb2win.rc)
endif()
if(${CMAKE_SYSTEM} MATCHES Windows)
set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2legacy)
elseif(${CMAKE_SYSTEM} MATCHES Linux)
set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME lsrb2dlegacy)
else()
set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2legacy)
endif()
if(${CMAKE_SYSTEM} MATCHES Darwin)
find_library(CORE_LIB CoreFoundation)
target_link_libraries(SRB2SDL2 PRIVATE
${CORE_LIB}
${PNG_LIBRARIES}
${ZLIB_LIBRARIES}
)
set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
else()
target_link_libraries(SRB2SDL2 PRIVATE
${PNG_LIBRARIES}
${ZLIB_LIBRARIES}
)
if(${CMAKE_SYSTEM} MATCHES Linux)
target_link_libraries(SRB2SDL2 PRIVATE
m
rt
)
endif()
endif()
#target_link_libraries(SRB2SDL2 PRIVATE SRB2Core)
set_target_properties(SRB2SDL2 PROPERTIES VERSION ${SRB2_VERSION})
if(${CMAKE_SYSTEM} MATCHES Windows)
target_link_libraries(SRB2SDL2 PRIVATE
ws2_32
)
target_compile_options(SRB2SDL2 PRIVATE
-U_WINDOWS
)
endif()
target_include_directories(SRB2SDL2 PRIVATE
${PNG_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
)
target_compile_definitions(SRB2SDL2 PRIVATE
-DDEDICATED
)
## strip debug symbols into separate file when using gcc
if(CMAKE_COMPILER_IS_GNUCC)
if(${CMAKE_BUILD_TYPE} MATCHES Debug)
message(STATUS "Will make separate debug symbols in *.debug")
add_custom_command(TARGET SRB2SDL2 POST_BUILD
COMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:SRB2SDL2> $<TARGET_FILE:SRB2SDL2>.debug
COMMAND ${OBJCOPY} --strip-debug $<TARGET_FILE:SRB2SDL2>
COMMAND ${OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE_NAME:SRB2SDL2>.debug $<TARGET_FILE:SRB2SDL2>
)
endif()
endif()
#### Installation ####
if(${CMAKE_SYSTEM} MATCHES Darwin)
install(TARGETS SRB2SDL2
BUNDLE DESTINATION .
)
else()
install(TARGETS SRB2SDL2 SRB2SDL2
RUNTIME DESTINATION .
)
endif()
# Mac bundle fixup
# HACK: THIS IS IMPORTANT! See the escaped \${CMAKE_INSTALL_PREFIX}? This
# makes it so that var is evaluated LATER during cpack, not right now!
# This fixes the quirk where the bundled libraries don't land in the final package
# https://cmake.org/pipermail/cmake/2011-March/043532.html
#
# HOWEVER: ${CPACK_PACKAGE_DESCRIPTION_SUMMARY} is NOT escaped, because that var
# is only available to us at this step. Read the link: ${CMAKE_INSTALL_PREFIX} at
# this current step points to the CMAKE build folder, NOT the folder that CPACK uses.
# Therefore, it makes sense to escape that var, but not the other.
if(${CMAKE_SYSTEM} MATCHES Darwin)
install(CODE "
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${CPACK_PACKAGE_DESCRIPTION_SUMMARY}.app\"
\"\"
/Library/Frameworks
)"
)
endif()
set(SRB2_SDL2_AVAILABLE YES PARENT_SCOPE)
+7
View File
@@ -0,0 +1,7 @@
i_system.c
i_main.c
i_video.c
i_sound.c
i_threads.c
dosstr.c
endtxt.c
+38
View File
@@ -0,0 +1,38 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// This file is in the public domain.
// (Re)written by Graue in 2006.
//
//-----------------------------------------------------------------------------
/// \file
/// \brief String uppercasing/lowercasing functions for non-DOS non-Win32
/// systems
#include "../doomtype.h"
#ifndef HAVE_DOSSTR_FUNCS
#include <ctype.h>
int strupr(char *n)
{
while (*n != '\0')
{
*n = toupper(*n);
n++;
}
return 1;
}
int strlwr(char *n)
{
while (*n != '\0')
{
*n = tolower(*n);
n++;
}
return 1;
}
#endif
+234
View File
@@ -0,0 +1,234 @@
/*
* Function to write the SRB2 end message text
*
* Copyright (C) 1998 by Udo Munk <udo@umserver.umnet.de>
*
* This code is provided AS IS and there are no guarantees, none.
* Feel free to share and modify.
*/
//-----------------------------------------------------------------------------
/// \file
/// \brief Support to show ENDOOM text
///
/// Loads the lump ENDOOM, set up the console to print
/// out the colors and text
#include <stdio.h>
#include <stdlib.h>
// need this 19990118 by Kin
#include "../doomdef.h"
#include "../w_wad.h"
#include "../z_zone.h"
#include "endtxt.h"
/** \brief The ShowEndTxt function
Prints out the ENDOOM the way DOOM.EXE/DOOM2.EXE did for Win32 or Linux/GNU
\return void
*/
void ShowEndTxt(void)
{
INT32 i;
UINT16 j, att = 0;
INT32 nlflag = 1;
#ifdef _WIN32
HANDLE co = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode, bytesWritten;
CONSOLE_SCREEN_BUFFER_INFO backupcon;
COORD resizewin = {80,-1};
CHAR let = 0;
#endif
UINT16 *ptext;
void *data;
lumpnum_t endoomnum = W_GetNumForName("ENDOOM");
//char *col;
/* if the xterm has more then 80 columns we need to add nl's */
/* doesn't work, COLUMNS is not in the environment at this time ???
col = I_getenv("COLUMNS");
if (col) {
if (atoi(col) > 80)
nlflag++;
}
*/
/* get the lump with the text */
data = ptext = W_CacheLumpNum(endoomnum, PU_CACHE);
#ifdef _WIN32
if (co == INVALID_HANDLE_VALUE || GetFileType(co) != FILE_TYPE_CHAR || !GetConsoleMode(co, &mode)) // test if it a good handle
{
Z_Free(data);
return;
}
backupcon.wAttributes = FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE; // Just in case
GetConsoleScreenBufferInfo(co, &backupcon); //Store old state
resizewin.Y = backupcon.dwSize.Y;
if (backupcon.dwSize.X < resizewin.X)
SetConsoleScreenBufferSize(co, resizewin);
for (i=1; i<=80*25; i++) // print 80x25 text and deal with the attributes too
{
j = (UINT16)(*ptext >> 8); // attribute first
let = (char)(*ptext & 0xff); // text second
if (j != att) // attribute changed?
{
att = j; // save current attribute
SetConsoleTextAttribute(co, j); //set fg and bg color for buffer
}
WriteConsoleA(co, &let, 1, &bytesWritten, NULL); // now the text
if (nlflag && !(i % 80) && backupcon.dwSize.X > resizewin.X) // do we need a nl?
{
att = backupcon.wAttributes;
SetConsoleTextAttribute(co, att); // all attributes off
WriteConsoleA(co, "\n", 1, &bytesWritten, NULL); // newline to console
}
ptext++;
}
SetConsoleTextAttribute(co, backupcon.wAttributes); // all attributes off
#else
/* print 80x25 text and deal with the attributes too */
for (i=1; i<=80*25; i++) {
/* attribute first */
/* attribute changed? */
if ((j = *ptext >> 8) != att) {
/* save current attribute */
att = j;
/* set new attribute, forground color first */
printf("\033[");
switch (j & 0x0f) {
case 0: /* black */
printf("30");
break;
case 1: /* blue */
printf("34");
break;
case 2: /* green */
printf("32");
break;
case 3: /* cyan */
printf("36");
break;
case 4: /* red */
printf("31");
break;
case 5: /* magenta */
printf("35");
break;
case 6: /* brown */
printf("33");
break;
case 7: /* bright grey */
printf("37");
break;
case 8: /* dark grey */
printf("1;30");
break;
case 9: /* bright blue */
printf("1;34");
break;
case 10: /* bright green */
printf("1;32");
break;
case 11: /* bright cyan */
printf("1;36");
break;
case 12: /* bright red */
printf("1;31");
break;
case 13: /* bright magenta */
printf("1;35");
break;
case 14: /* yellow */
printf("1;33");
break;
case 15: /* white */
printf("1;37");
break;
}
printf("m");
/* now background color */
printf("\033[");
switch ((j >> 4) & 0x0f) {
case 0: /* black */
printf("40");
break;
case 1: /* blue */
printf("44");
break;
case 2: /* green */
printf("42");
break;
case 3: /* cyan */
printf("46");
break;
case 4: /* red */
printf("41");
break;
case 5: /* magenta */
printf("45");
break;
case 6: /* brown */
printf("43");
break;
case 7: /* bright grey */
printf("47");
break;
case 8: /* dark grey */
printf("1;40");
break;
case 9: /* bright blue */
printf("1;44");
break;
case 10: /* bright green */
printf("1;42");
break;
case 11: /* bright cyan */
printf("1;46");
break;
case 12: /* bright red */
printf("1;41");
break;
case 13: /* bright magenta */
printf("1;45");
break;
case 14: /* yellow */
printf("1;43");
break;
case 15: /* white */
printf("1;47");
break;
}
printf("m");
}
/* now the text */
printf("%c",*ptext++ & 0xff);
/* do we need a nl? */
if (nlflag)
{
if (!(i % 80))
{
printf("\033[0m");
att = 0;
printf("\n");
}
}
}
/* all attributes off */
printf("\033[0m");
#endif
if (nlflag)
printf("\n");
Z_Free(data);
}
Loaded 100 of 396 files, more files were not shown because too many files have changed in this diff. Show more