Compare commits

...
2940 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
Alug 1ab7a2acf4 add toggle for beta intermission screen + smol cleanup 2024-06-03 15:13:46 +02:00
Alug f977af6a80 fix le dispoffset 2024-06-03 15:13:39 +02:00
indev cae40928ad Use Z_Calloc to allocate wadfile_t to avoid having uninitialized fields 2024-06-03 00:18:11 +03:00
Alug ee2ec01eb9 use shader to prevent sprite floor clipping
from durr lul
2024-06-02 22:16:09 +02:00
Alug bf75644144 make r_fps if else hell a bit more bearable to look at
lol lmao
2024-06-02 22:12:39 +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 38633a8516 stuffs 2024-06-01 17:03:39 +02:00
Alug 957159d485 forgor to remove that 2024-06-01 16:31:55 +02:00
Alug 8052eb1c3a fix papersprites in software (hopefully)
lul
2024-06-01 16:30:03 +02:00
Alug 37a394ebaa flexible array stuff for columnofs
hopefully this fixes some crashes or smth
2024-06-01 16:29:55 +02:00
Alug b01a2836ea cleanup some super old stuff that did nothing
lul
2024-06-01 16:29:40 +02:00
Alug dc03359f3a theres no value 3 oops
i shouldnt do stuff after waking up at 4 in the morning lol
2024-05-30 19:59:14 +02:00
indev 6269c7c827 Use tmp variable for searchWad since envstr doesn't get changed 2024-05-30 19:32:18 +03:00
indev 040ddb1f40 Revert "Revert "Don't traverse the entire HOME directory to find wads""
This reverts commit 443905ffb3.
2024-05-30 19:23:14 +03:00
Alug faa5dbd0e7 split sprite draw loops
so crap doesent constantly check for papersprites on all sprites
2024-05-28 23:53:28 +02:00
Alug 37d3e2ae1a scale sprite draw distance with mapobjscale 2024-05-28 23:52:13 +02:00
Alug 455bbe47c2 smth smth encore magic numbers idk 2024-05-28 22:55:43 +02:00
Alug 4847e4e3cb that should be there lul 2024-05-28 22:55:40 +02: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 67aa71170f when not using screentextures draw kart bg on intermission screen 2024-05-28 00:52:52 +02:00
Alug ddddc7a898 draw a black screen instead of "nothing" during wipes on disabled screentextures
should resolve the intense flashing that can occur
2024-05-28 00:52:48 +02:00
indev 7c17f3a93c Merge pull request #130 from GenericHeroGuy/lua-hudinterpolate-redux
Lua HUD interpolation
2024-05-25 19:09:02 +03:00
GenericHeroGuy 05a5651260 Finishing touches
Some cleanup, also interpolate drawfill size
(dunno why it wasn't before)
2024-05-25 17:05:08 +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
Alug 8774b14fdf move some cvars to be registerrerd latur in ogl 2024-05-25 14:52:58 +02:00
Alug 518ac3ca28 Turn of FBO downsampling when you turn off screen textures
fbo downsampling needs those and if theyre disabled youre essentially seeing nothing at all lol
2024-05-25 14:44:03 +02:00
Alug 157c95a785 super smol optimization to R_DrawRepeatMaskedColumn
only maths once not twice lul
2024-05-25 14:44:00 +02:00
GenericHeroGuy 142c01f516 Update docs for interpLatch 2024-05-25 14:09:20 +02:00
GenericHeroGuy a17a5387ff Rename interpString to interpLatch 2024-05-25 14:08:52 +02:00
Alug d794de3e83 Cull BSP behind a raised floor or lowered ceiling that covers the entire screen
https://git.do.srb2.org/KartKrew/RingRacers/-/commit/7b8a564f69688515319ccd425f2b88ffe8b7b120
2024-05-25 02:21:04 +02:00
Alug 837746c0a9 declare outside of lööp also add const in r_ 2024-05-25 02:14:20 +02:00
Alug 9f692c1f6a change names to be less basic 2024-05-23 23:28:54 +02:00
Alug 8de340edbe allow gamepad dpad to hold scroll shit in menu aaa
absolute arsepain cant wait to see this breaking kek
2024-05-23 23:28:47 +02:00
GenericHeroGuy 9cd1233c32 Dust this crap off a bit 2024-05-23 16:47:29 +02:00
GenericHeroGuy 3f6575e41f Merge branch 'Saturn-Next' into lua-hudinterpolate-redux 2024-05-23 15:44:46 +02:00
Alug f939b02fd3 Merge branch 'Saturn' into Saturn-Next 2024-05-21 21:01:11 +02:00
Alug 73d0154b6c encore flipcam support 2024-05-21 21:00:33 +02:00
Alug cda7475058 unhack the animated votescreen a little
also make it pause when the game is paused like it was intended originally
2024-05-20 18:42:03 +02:00
Alug 33a31d0ad8 this should be here aswell i suppose 2024-05-20 13:31:13 +02:00
Alug 8dafc2d3d9 Merge pull request #129 from Indev450/Saturn-Next
Saturn v6.2
2024-05-20 13:21:16 +02:00
Alug 5f36557a18 change version string stuff per define lul 2024-05-19 21:31:05 +02:00
Alug 9b4e64011b make this a scroll menu
tbh not gonna bother with moving stuff depending on renderer
2024-05-19 18:43:12 +02:00
Alug 3ca313c14d Merge pull request #125 from Indev450/fborender
Use FBO to allow downsampling in Opengl
2024-05-19 18:20:01 +02:00
Alug 6fcea2f98e RefreshOGLSDLSurface
to make it a little more clearer this is ogl only
2024-05-18 23:52:05 +02:00
Alug c605906408 some stuffs 2024-05-18 23:49:36 +02:00
Alug de6511abe0 dont compile with that with NOHW 2024-05-18 23:40:28 +02:00
Alug c966b5defb forgor 2024-05-18 23:38:04 +02:00
Alug 3c8c273e51 add ogl version check + grey out in menu + turn it off when not avilible 2024-05-18 23:34:27 +02:00
Alug eaeb2575f7 add stuff to experimental menu 2024-05-18 23:22:30 +02:00
Alug 978cc57889 Add NOSCREENFBO compiler flag to be able to build without fbo support 2024-05-18 22:57:25 +02:00
Alug 6db73bfd63 Merge branch 'Saturn-Next' into fborender 2024-05-18 22:33:41 +02:00
Alug af5c3e4201 revert this thing 2024-05-15 17:56:58 +02:00
Alug 39e6668e20 change version 2024-05-15 17:51:11 +02:00
Alug 1ab63613a9 forgor this crap 2024-05-15 16:54:27 +02:00
Alug 57e72db1f8 support gcc14 ig 2024-05-15 16:46:59 +02:00
Alug d1d00d7ec6 shut up compiler 2024-05-05 22:00:22 +02:00
Alug 169e7cd462 Render precip through blockmap instead of during BSP
from RR
2024-05-05 21:54:00 +02:00
Alug e19f6f6656 fix some interpolation issues
minus P_spec change since that aint netsafe
2024-05-05 20:52:06 +02:00
Alug 13249f7ad4 fix potential crash in ogl vissprite sorting 2024-05-05 20:50:36 +02:00
Alug 22166ceccb fix precip overflow 2024-05-05 20:50:32 +02:00
Alug 75ed11a8b6 simplify SOFTLIGHT alot
also should make sure it gets applied everywhere lul
2024-04-29 10:12:58 +02:00
Alug 641cd6b8db use bigfloat for driftgauge offset too 2024-04-27 20:32:52 +02:00
Alug 62fa60e399 fix rare precip crash 2024-04-27 20:03:38 +02:00
Alug 17a6c4191d Merge pull request #128 from Indev450/it-cv-bigfloat
Add IT_CV_BIGFLOAT to use bigger increment for some CV_FLOAT cvars (a…
2024-04-27 20:01:57 +02:00
Alug 3acdcb09f1 inline those 2024-04-24 11:02:25 +02:00
GenericHeroGuy 1abf6a4ce1 Add interpolation docs to LUASTUFF 2024-04-23 21:24:47 +02:00
Alug 836890968c Revert "Merge pull request #121 from Indev450/texload"
This reverts commit b6a5c5b720, reversing
changes made to bcf2b3bab2.
2024-04-23 09:06:51 +02:00
Alug 7110de4b5b Merge branch 'Saturn' into Saturn-Next 2024-04-22 05:25:52 +02:00
Alug b4dfebac58 fix some visual issues with fofs 2024-04-22 05:25:46 +02:00
Alug 38d5ee5ae7 a 2024-04-20 22:54:03 +02:00
Alug d0c50006bc some stuff from ceepeepeecheck 2024-04-20 22:54:00 +02:00
Alug 443905ffb3 Revert "Don't traverse the entire HOME directory to find wads"
This reverts commit 1f019ed277.
2024-04-20 11:42:21 +02:00
indev 2147951a16 Add IT_CV_BIGFLOAT to use bigger increment for some CV_FLOAT cvars (added only to fov atm) 2024-04-20 11:41:17 +03:00
indev ea0cc41d04 For MIN/MAX value of cvar, convert it to float before saving for CV_FLOAT variables 2024-04-20 10:30:34 +03:00
Alug b6a5c5b720 Merge pull request #121 from Indev450/texload
Do not reload every texture when adding a wad
2024-04-20 01:33:50 +02:00
Alug bcf2b3bab2 disable palette rendering if screentextures aint enabled 2024-04-19 06:23:12 +02:00
Alug a238b19c75 z 2024-04-19 06:22:48 +02:00
Alug 9317ccd0be more things
-Fix a division by zero in BCZ2 Metal Sonic's routine
-Fix a bug where adding the same mod multiple times counted towards the mod limit
and other thigns
2024-04-19 06:22:44 +02:00
Alug 463dccab8b some smol fixes 2024-04-19 06:22:22 +02:00
Alug 2ccf91fbfc Make FixedRem less laggy by just using the modulo operator. 2024-04-19 06:22:20 +02:00
indev 36e06e5d6b Fix possible buffer overflow in 'va' function 2024-04-13 21:55:22 +03:00
Alug 6f293945fd add qs22j to cmakelist 2024-04-13 18:40:14 +02:00
Alug 45d73a2ad6 add qs22j to cmakelist 2024-04-13 18:40:00 +02:00
GenericHeroGuy 995777c676 Exclude string mode flags from olditem search 2024-04-12 22:36:23 +02:00
Alug dacfe376e1 smth smth paranthesis 2024-04-12 21:55:53 +02:00
GenericHeroGuy 60e42472e3 Do string coordinate calcs on all functions (and fix) 2024-04-12 21:00:54 +02:00
Alug c92ef4d757 fix software crash
Zzz...
2024-04-12 20:41:25 +02:00
indev 7cd6a031cd Fix compilation warning regarding calloc and sizeof 2024-04-11 19:12:14 +03:00
indev af265d017d Fix potential negative array index in V_ThinStringWidth 2024-04-11 18:55:55 +03:00
Alug 9e104a8632 ok dont use this at all then 2024-04-10 18:18:47 +02:00
Alug 4a1523da57 Zzz... 2024-04-10 18:15:29 +02:00
Alug 6a3987c8f7 fix ifdefs 2024-04-10 17:57:55 +02:00
Alug 1df6c4d4da move this to first init too 2024-04-10 17:47:37 +02:00
Alug 3cab29085a Merge branch 'Saturn-Next' into fborender 2024-04-10 17:46:40 +02:00
Alug 1391e556d6 that wasnt the onchange im sleepy 2024-04-10 17:40:43 +02:00
Alug 94340e6634 forgor to remove those Zzz... 2024-04-10 17:32:13 +02:00
Alug 64f10c36fa should throw that into onchange oops 2024-04-10 17:29:16 +02:00
Alug 955f73d9e8 throw stuff into own function, also check on game start 2024-04-10 17:24:46 +02:00
Alug 40c356395a simplify this crap 2024-04-10 07:02:18 +02:00
indev bce914df6e Don't call menu drawer in wipes on dedicated servers 2024-04-06 01:47:27 +03:00
indev aac74cf93a Don't call menu drawer in wipes on dedicated servers 2024-04-06 01:31:43 +03:00
indev e0d0120337 Merge branch 'Saturn-Next' into Saturn 2024-04-05 20:56:49 +03:00
Alug 87cf75ef84 this can be completely removed actually 2024-04-05 16:31:17 +02:00
Alug 5f237d9e13 (maybe?) fix a checkheap crash 2024-04-05 16:24:27 +02:00
Alug 23050394ac retain old behaviour for raising gamma
or if you dont use any colour correction stuff
basically checks if anything has changed and if the gamma is below 0
otherwise it will apply colour cubus
2024-04-05 01:10:49 +02:00
Alug dbc47e8656 Revert "disable colourcube cause of visual discrepentcies (temporary)"
This reverts commit ed418d5dcf.
2024-04-05 00:27:14 +02:00
GenericHeroGuy 18e0485f39 Make this less insufferable
* Zero is now a valid tag for v.interpolate
* Reset lerp coordinates when v.interpString is called again
* Leaving string mode enabled on exit no longer breaks other scripts
* Fix fadeScreen having an uninitialized ID
2024-04-04 23:39:23 +02:00
Alug d675795014 version change again or else i forger 2024-04-04 20:52:13 +02:00
Alug ed418d5dcf disable colourcube cause of visual discrepentcies (temporary) 2024-04-04 18:59:45 +02:00
Alug d6fb76b833 fix tint equation
idk what happen there but it looked pretty diff on a few maps
2024-04-04 17:38:15 +02:00
Alug ced45061f8 clean this up a bit 2024-04-04 03:53:11 +02:00
Alug 52c6a52a2f fix some smol leaks 2024-04-04 03:53:00 +02:00
GenericHeroGuy aeb5ae994e Subpixel interpolation for strings and drawfill 2024-04-04 00:27:47 +02:00
Alug b2c34906ff try and fix some compile issues 2024-04-03 19:24:51 +02:00
Alug c8f6878c26 try and fix some compile issues 2024-04-03 19:24:44 +02:00
Alug 6d8c375cf5 Fix 3D model crash 2024-04-03 00:28:56 +02:00
Alug c093aa3c73 k then 2024-04-02 22:17:40 +02:00
Alug fc27ed0443 Add option for wipes only in screentex toggle
since the toggle was changed to actually disable ALL screentex functions
2024-04-02 22:14:10 +02:00
GenericHeroGuy b2f9a29eb0 Lua HUD interpolation 2024-04-02 21:00:23 +02:00
Alug bd2fe5b9be use SDL_PeepEvents again
grrrrrrr
2024-04-02 19:19:56 +02:00
Alug 07e50c40a3 forgor those lul 2024-04-02 19:10:51 +02:00
Alug 94248eaea2 use functions for keyshift crap
lmao why tf wasnt this done anyways but copy and pasted 500 times
2024-04-02 16:38:07 +02:00
Alug ebc467f212 more fixup for native layout 2024-04-02 16:14:22 +02:00
Alug 29acff6722 make this less fragile 2024-04-02 15:19:25 +02:00
Alug be71dd66ac Merge branch 'Saturn' into Saturn-Next 2024-04-02 03:48:17 +02:00
Alug 8a1ad4a2de limit to ASCII
also forgor to add stuff to h
2024-04-02 03:48:03 +02:00
Alug 3370d1631e FIXUP native keyboard layout
cleanup GetTypedChar
fix issues with capslock and shift
2024-04-02 03:36:22 +02:00
GenericHeroGuy 5f69bfcf22 Split game drawlist per displayplayer 2024-04-02 03:22:24 +02:00
Alug 21cb42309e Downgrade SDL2 to v2.28.5
v2.3.0 broke some things in 32bit builds Zzz...
2024-04-02 00:22:33 +02:00
GenericHeroGuy 9442a463d4 Shrink drawlists, take 2
Approximately 2/3rds smaller
2024-04-01 23:24:09 +02:00
Alug 8b72cc6b01 Merge branch 'Saturn-Next' into Saturn 2024-04-01 18:28:32 +02:00
Alug 8ed8182a1b Zzz... 2024-04-01 17:18:38 +02:00
Alug e2f4e1f08e update menu text for keyboard layout 2024-04-01 16:38:38 +02:00
Alug 6e59fdacb5 add AZERTY layout as toggable option
so no need to update that thing seperately anymore
2024-04-01 16:34:01 +02:00
Alug 33501b6798 Merge pull request #123 from Indev450/linkedtex
Manage Gpu Textures with a list
2024-04-01 14:31:15 +02:00
Alug ffb72f5fe3 Fix vertical aim being off when using lack of perspective 2024-03-31 23:27:30 +02:00
indev d3f6b983f4 Use 'find' directly in help 2024-03-30 22:18:51 +03:00
indev 9435fa8d6b If command is not found via 'help', tell user about 'find' command 2024-03-30 22:03:10 +03:00
Alug 0ceb9e5ea5 fix this for splitscreen and move to own function 2024-03-30 03:34:58 +01:00
Alug 95c0951727 Merge pull request #122 from Indev450/luadebuglib
Expose debug library to Lua
2024-03-28 15:08:31 +01:00
Alug de6a54bc8c why tf is that here 2024-03-28 14:25:07 +01:00
Alug 1e524a8240 when the GLENCORE 2024-03-28 13:22:06 +01:00
Alug ca1302475e use this instead 2024-03-28 08:13:23 +01:00
Alug 8486bddaf2 fix highresscale issue on startup in the worst way ever cause CV_NOINIT doesent work for whatever reason 2024-03-28 00:15:55 +01:00
Alug d7a1cc6702 Read only header bytes when creating textures list 2024-03-27 21:31:56 +01:00
Alug 847a8cfd81 Zzz... 2024-03-27 20:38:29 +01:00
Alug 2fc6a26e77 GL_GENERATE_MIPMAP is enough
also made MajorGL and MinorGL extern, so can be used in other parts if needed to check for it
2024-03-27 20:36:07 +01:00
Alug a779191feb beter 2024-03-27 18:45:59 +01:00
Alug 23cc0dfc3a add some comments cause i WILL forger what this crap even does 2024-03-27 18:44:32 +01:00
Alug c7a258f32f clean up 2024-03-27 18:34:58 +01:00
Alug a28f025d40 Stuff from displaycrap branch to detect downsampling automatically 2024-03-27 18:33:29 +01:00
Alug 91a3b288ef conflict moment 2024-03-27 18:08:09 +01:00
Alug 200d971d35 Toggle to render to screenFBO
fixes downsampling from higher resolutions
TODO: make this activate automatically if game detects it runs at higher res than desktop res
2024-03-27 18:05:48 +01:00
Alug 4847d2d844 Handle OpenGL textures with a linked list 2024-03-27 17:51:58 +01:00
Alug 56f3249679 Expose debug library to Lua
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/2404
2024-03-26 21:03:18 +01:00
indev 54ee3f2961 R_LoadTexturesPwad: don't do anything wad has no textures 2024-03-26 20:40:11 +03:00
Alug c3a71b60b0 Do not reload every texture when adding a wad
https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1725?commit_id=37add34b9c729b21e624e22d64159073c9258e25
2024-03-26 14:12:05 +01:00
Alug 205bfc0262 Split R_LoadTextures 2024-03-26 14:11:49 +01:00
Alug 9b7eff1a33 cute icon 2024-03-17 19:42:01 +01:00
indev c45aec4634 Merge pull request #87 from riomccloud/patch-1
Delete org.srb2.SRB2Kart-Saturn.metainfo.xml
2024-01-13 20:04:37 +03:00
riomccloud 7e11bbb5ca Delete org.srb2.SRB2Kart-Saturn.metainfo.xml 2024-01-13 12:18:45 -03:00
indev d5ccf6cad0 Update org.srb2.SRB2Kart-Saturn.metainfo.xml 2024-01-03 10:43:09 +00:00
705 changed files with 109366 additions and 75817 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
+106
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.
@@ -52,6 +56,70 @@ Returns the displayplayer's HUD color.
Returns true if colorization is enabled, false otherwise.
## v.interpolate(true)
Enables HUD interpolation. Each call to a drawing function will have its coordinates interpolated
by assigning an unique ID to every call.
For example, three successive calls to `v.draw` will each have their own ID and interpolation offsets.
Pass `true` to enable interpolation, `false` to disable.
Alternatively, pass a number to enable interpolation with the specified tag.
Tags allow HUD items drawn by the same call to a drawing function to be differentiated.
Valid tags range from 0-255.
For example, when iterating players, use a unique tag for each player to avoid artifacting:
```lua
for p in players.iterate do
-- enable interpolation, using player numbers as the tag
-- every draw will have different interp offsets per player
v.interpolate(#p)
-- doesn't matter for unconditional draws like this one...
v.draw(...)
-- but it does matter if there's a condition!
-- without tags, this patch would warp between players
-- whenever their `someVar` changes
if p.someVar then v.draw(...) end
end
-- don't want interpolation anymore? then disable it
v.interpolate(false)
```
NOTE: The default tag for `true` is 0.
## v.interpLatch(true)
Enables interpolation offset latching. The next call to a drawing function will have its lerp offsets
saved and reused for all following draw calls. Disable with `false` when done.
Interpolation cannot easily "snap" between two points; latching can help overcome this by manually
setting the lerp offsets.
```lua
v.interpolate(true)
-- X coordinate for the HUD item
-- every so often, this will wrap around to zero
local x = (leveltime*4) % 256
-- draw an interpolated patch, but... when X rolls back to zero,
-- the patch will slide all the way across the screen!
v.draw(x, 100, ...)
-- this is where interpLatch comes into play
-- enable latching, then draw an invisible patch,
-- moving at the same speed as the visible patch
-- the exact coordinates don't matter, it just has to move at the right speed
v.interpLatch(true)
v.draw(leveltime*4, 0, v.cachePatch("K_TRNULL"))
-- now we can draw the patch again, and when X becomes zero,
-- it'll snap right back without sliding across the screen
v.draw(x, 150, ...)
-- don't forget to turn off latching!
v.interpLatch(false)
```
When using a custom string drawer, enable this mode to avoid interpolation artifacting when the string changes.
## mobj.spritexscale, mobj.spriteyscale, mobj.spritexoffset, mobj.spriteyoffset, mobj.rollangle, mobj.sloperoll, mobj.rollmodel fields
Same fields as in SRB2 2.2
@@ -66,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
}
+16 -16
View File
@@ -1,16 +1,16 @@
Bugs are now managed in the SDL issue tracker, here:
https://github.com/libsdl-org/SDL/issues
You may report bugs there, and search to see if a given issue has already
been reported, discussed, and maybe even fixed.
You may also find help at the SDL forums/mailing list:
https://discourse.libsdl.org/
Bug reports are welcome here, but we really appreciate if you use the issue
tracker, as bugs discussed on the mailing list may be forgotten or missed.
Bugs are now managed in the SDL issue tracker, here:
https://github.com/libsdl-org/SDL/issues
You may report bugs there, and search to see if a given issue has already
been reported, discussed, and maybe even fixed.
You may also find help at the SDL forums/mailing list:
https://discourse.libsdl.org/
Bug reports are welcome here, but we really appreciate if you use the issue
tracker, as bugs discussed on the mailing list may be forgotten or missed.
+20 -20
View File
@@ -1,20 +1,20 @@
Simple DirectMedia Layer
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Simple DirectMedia Layer
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
+53 -53
View File
@@ -1,53 +1,53 @@
Simple DirectMedia Layer CREDITS
Thanks to everyone who made this possible, including:
* Cliff Matthews, for giving me a reason to start this project. :)
-- Executor rocks! *grin*
* Ryan Gordon for helping everybody out and keeping the dream alive. :)
* Gabriel Jacobo for his work on the Android port and generally helping out all around.
* Philipp Wiesemann for his attention to detail reviewing the entire SDL code base and proposes patches.
* Andreas Schiffler for his dedication to unit tests, Visual Studio projects, and managing the Google Summer of Code.
* Mike Sartain for incorporating SDL into Team Fortress 2 and cheering me on at Valve.
* Alfred Reynolds for the game controller API and general (in)sanity
* Jørgen Tjernø for numerous magical Mac OS X fixes.
* Pierre-Loup Griffais for his deep knowledge of OpenGL drivers.
* Julian Winter for the SDL 2.0 website.
* Sheena Smith for many months of great work on the SDL wiki creating the API documentation and style guides.
* Paul Hunkin for his port of SDL to Android during the Google Summer of Code 2010.
* Eli Gottlieb for his work on shaped windows during the Google Summer of Code 2010.
* Jim Grandpre for his work on multi-touch and gesture recognition during
the Google Summer of Code 2010.
* Edgar "bobbens" Simo for his force feedback API development during the
Google Summer of Code 2008.
* Aaron Wishnick for his work on audio resampling and pitch shifting during
the Google Summer of Code 2008.
* Holmes Futrell for his port of SDL to the iPhone and iPod Touch during the
Google Summer of Code 2008.
* Jon Atkins for SDL_image, SDL_mixer and SDL_net documentation.
* Everybody at Loki Software, Inc. for their great contributions!
And a big hand to everyone else who has contributed over the years.
THANKS! :)
-- Sam Lantinga <slouken@libsdl.org>
Simple DirectMedia Layer CREDITS
Thanks to everyone who made this possible, including:
* Cliff Matthews, for giving me a reason to start this project. :)
-- Executor rocks! *grin*
* Ryan Gordon for helping everybody out and keeping the dream alive. :)
* Gabriel Jacobo for his work on the Android port and generally helping out all around.
* Philipp Wiesemann for his attention to detail reviewing the entire SDL code base and proposes patches.
* Andreas Schiffler for his dedication to unit tests, Visual Studio projects, and managing the Google Summer of Code.
* Mike Sartain for incorporating SDL into Team Fortress 2 and cheering me on at Valve.
* Alfred Reynolds for the game controller API and general (in)sanity
* Jørgen Tjernø for numerous magical Mac OS X fixes.
* Pierre-Loup Griffais for his deep knowledge of OpenGL drivers.
* Julian Winter for the SDL 2.0 website.
* Sheena Smith for many months of great work on the SDL wiki creating the API documentation and style guides.
* Paul Hunkin for his port of SDL to Android during the Google Summer of Code 2010.
* Eli Gottlieb for his work on shaped windows during the Google Summer of Code 2010.
* Jim Grandpre for his work on multi-touch and gesture recognition during
the Google Summer of Code 2010.
* Edgar "bobbens" Simo for his force feedback API development during the
Google Summer of Code 2008.
* Aaron Wishnick for his work on audio resampling and pitch shifting during
the Google Summer of Code 2008.
* Holmes Futrell for his port of SDL to the iPhone and iPod Touch during the
Google Summer of Code 2008.
* Jon Atkins for SDL_image, SDL_mixer and SDL_net documentation.
* Everybody at Loki Software, Inc. for their great contributions!
And a big hand to everyone else who has contributed over the years.
THANKS! :)
-- Sam Lantinga <slouken@libsdl.org>
+18 -18
View File
@@ -1,18 +1,18 @@
The 32-bit files are in i686-w64-mingw32
The 64-bit files are in x86_64-w64-mingw32
To install SDL for native development:
make native
To install SDL for cross-compiling development:
make cross
Look at the example programs in ./test, and check out online documentation:
http://wiki.libsdl.org/
Join the SDL developer mailing list if you want to join the community:
http://www.libsdl.org/mailing-list.php
That's it!
Sam Lantinga <slouken@libsdl.org>
The 32-bit files are in i686-w64-mingw32
The 64-bit files are in x86_64-w64-mingw32
To install SDL for native development:
make native
To install SDL for cross-compiling development:
make cross
Look at the example programs in ./test, and check out online documentation:
http://wiki.libsdl.org/
Join the SDL developer mailing list if you want to join the community:
http://www.libsdl.org/mailing-list.php
That's it!
Sam Lantinga <slouken@libsdl.org>
+13 -13
View File
@@ -1,13 +1,13 @@
Please distribute this file with the SDL runtime environment:
The Simple DirectMedia Layer (SDL for short) is a cross-platform library
designed to make it easy to write multi-media software, such as games
and emulators.
The Simple DirectMedia Layer library source code is available from:
https://www.libsdl.org/
This library is distributed under the terms of the zlib license:
http://www.zlib.net/zlib_license.html
Please distribute this file with the SDL runtime environment:
The Simple DirectMedia Layer (SDL for short) is a cross-platform library
designed to make it easy to write multi-media software, such as games
and emulators.
The Simple DirectMedia Layer library source code is available from:
https://www.libsdl.org/
This library is distributed under the terms of the zlib license:
http://www.zlib.net/zlib_license.html
+21 -21
View File
@@ -1,21 +1,21 @@
Simple DirectMedia Layer
(SDL)
Version 2.0
---
https://www.libsdl.org/
Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.
More extensive documentation is available in the docs directory, starting
with README.md
Enjoy!
Sam Lantinga (slouken@libsdl.org)
Simple DirectMedia Layer
(SDL)
Version 2.0
---
https://www.libsdl.org/
Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.
More extensive documentation is available in the docs directory, starting
with README.md
Enjoy!
Sam Lantinga (slouken@libsdl.org)
+15 -15
View File
@@ -1,15 +1,15 @@
# SDL Development Libaries
Download both the VC and MinGW packages and extract them here.
https://www.libsdl.org/download-2.0.php
## VC Package
* include
* lib
## MinGW Package
* i686-w64-mingw32
* x86_64-w64-mingw32
# SDL Development Libaries
Download both the VC and MinGW packages and extract them here.
https://www.libsdl.org/download-2.0.php
## VC Package
* include
* lib
## MinGW Package
* i686-w64-mingw32
* x86_64-w64-mingw32
+870 -889
View File
File diff suppressed because it is too large. Load diff
+97 -97
View File
@@ -1,97 +1,97 @@
# Contributing to SDL
We appreciate your interest in contributing to SDL, this document will describe how to report bugs, contribute code or ideas or edit documentation.
**Table Of Contents**
- [Filing a GitHub issue](#filing-a-github-issue)
- [Reporting a bug](#reporting-a-bug)
- [Suggesting enhancements](#suggesting-enhancements)
- [Contributing code](#contributing-code)
- [Forking the project](#forking-the-project)
- [Following the style guide](#following-the-style-guide)
- [Running the tests](#running-the-tests)
- [Opening a pull request](#opening-a-pull-request)
- [Contributing to the documentation](#contributing-to-the-documentation)
- [Editing a function documentation](#editing-a-function-documentation)
- [Editing the wiki](#editing-the-wiki)
## Filing a GitHub issue
### Reporting a bug
If you think you have found a bug and would like to report it, here are the steps you should take:
- Before opening a new issue, ensure your bug has not already been reported on the [GitHub Issues page](https://github.com/libsdl-org/SDL/issues).
- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
- Include details about your environment, such as your Operating System and SDL version.
- If possible, provide a small example that reproduces your bug.
### Suggesting enhancements
If you want to suggest changes for the project, here are the steps you should take:
- Check if the suggestion has already been made on:
- the [issue tracker](https://github.com/libsdl-org/SDL/issues);
- the [discourse forum](https://discourse.libsdl.org/);
- or if a [pull request](https://github.com/libsdl-org/SDL/pulls) already exists.
- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
- Describe what change you would like to happen.
## Contributing code
This section will cover how the process of forking the project, making a change and opening a pull request.
### Forking the project
The first step consists in making a fork of the project, this is only necessary for the first contribution.
Head over to https://github.com/libsdl-org/SDL and click on the `Fork` button in the top right corner of your screen, you may leave the fields unchanged and click `Create Fork`.
You will be redirected to your fork of the repository, click the green `Code` button and copy the git clone link.
If you had already forked the repository, you may update it from the web page using the `Fetch upstream` button.
### Following the style guide
Code formatting is done using a custom `.clang-format` file, you can learn more about how to run it [here](https://clang.llvm.org/docs/ClangFormat.html).
Some legacy code may not be formatted, as such avoid formatting the whole file at once and only format around your changes.
For your commit message to be properly displayed on GitHub, it should contain:
- A short description of the commit of 50 characters or less on the first line.
- If necessary, add a blank line followed by a long description, each line should be 72 characters or less.
For example:
```
Fix crash in SDL_FooBar.
This addresses the issue #123456 by making sure Foo was successful
before calling Bar.
```
### Running the tests
Tests allow you to verify if your changes did not break any behaviour, here are the steps to follow:
- Before pushing, run the `testautomation` suite on your machine, there should be no more failing tests after your change than before.
- After pushing to your fork, Continuous Integration (GitHub Actions) will ensure compilation and tests still pass on other systems.
### Opening a pull request
- Head over to your fork's GitHub page.
- Click on the `Contribute` button and `Open Pull Request`.
- Fill out the pull request template.
- If any changes are requested, you can add new commits to your fork and they will be automatically added to the pull request.
## Contributing to the documentation
### Editing a function documentation
The wiki documentation for API functions is synchronised from the headers' doxygen comments. As such, all modifications to syntax; function parameters; return value; version; related functions should be done in the header directly.
### Editing the wiki
Other changes to the wiki should done directly from https://wiki.libsdl.org/
# Contributing to SDL
We appreciate your interest in contributing to SDL, this document will describe how to report bugs, contribute code or ideas or edit documentation.
**Table Of Contents**
- [Filing a GitHub issue](#filing-a-github-issue)
- [Reporting a bug](#reporting-a-bug)
- [Suggesting enhancements](#suggesting-enhancements)
- [Contributing code](#contributing-code)
- [Forking the project](#forking-the-project)
- [Following the style guide](#following-the-style-guide)
- [Running the tests](#running-the-tests)
- [Opening a pull request](#opening-a-pull-request)
- [Contributing to the documentation](#contributing-to-the-documentation)
- [Editing a function documentation](#editing-a-function-documentation)
- [Editing the wiki](#editing-the-wiki)
## Filing a GitHub issue
### Reporting a bug
If you think you have found a bug and would like to report it, here are the steps you should take:
- Before opening a new issue, ensure your bug has not already been reported on the [GitHub Issues page](https://github.com/libsdl-org/SDL/issues).
- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
- Include details about your environment, such as your Operating System and SDL version.
- If possible, provide a small example that reproduces your bug.
### Suggesting enhancements
If you want to suggest changes for the project, here are the steps you should take:
- Check if the suggestion has already been made on:
- the [issue tracker](https://github.com/libsdl-org/SDL/issues);
- the [discourse forum](https://discourse.libsdl.org/);
- or if a [pull request](https://github.com/libsdl-org/SDL/pulls) already exists.
- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
- Describe what change you would like to happen.
## Contributing code
This section will cover how the process of forking the project, making a change and opening a pull request.
### Forking the project
The first step consists in making a fork of the project, this is only necessary for the first contribution.
Head over to https://github.com/libsdl-org/SDL and click on the `Fork` button in the top right corner of your screen, you may leave the fields unchanged and click `Create Fork`.
You will be redirected to your fork of the repository, click the green `Code` button and copy the git clone link.
If you had already forked the repository, you may update it from the web page using the `Fetch upstream` button.
### Following the style guide
Code formatting is done using a custom `.clang-format` file, you can learn more about how to run it [here](https://clang.llvm.org/docs/ClangFormat.html).
Some legacy code may not be formatted, as such avoid formatting the whole file at once and only format around your changes.
For your commit message to be properly displayed on GitHub, it should contain:
- A short description of the commit of 50 characters or less on the first line.
- If necessary, add a blank line followed by a long description, each line should be 72 characters or less.
For example:
```
Fix crash in SDL_FooBar.
This addresses the issue #123456 by making sure Foo was successful
before calling Bar.
```
### Running the tests
Tests allow you to verify if your changes did not break any behaviour, here are the steps to follow:
- Before pushing, run the `testautomation` suite on your machine, there should be no more failing tests after your change than before.
- After pushing to your fork, Continuous Integration (GitHub Actions) will ensure compilation and tests still pass on other systems.
### Opening a pull request
- Head over to your fork's GitHub page.
- Click on the `Contribute` button and `Open Pull Request`.
- Fill out the pull request template.
- If any changes are requested, you can add new commits to your fork and they will be automatically added to the pull request.
## Contributing to the documentation
### Editing a function documentation
The wiki documentation for API functions is synchronised from the headers' doxygen comments. As such, all modifications to syntax; function parameters; return value; version; related functions should be done in the header directly.
### Editing the wiki
Other changes to the wiki should done directly from https://wiki.libsdl.org/
+483 -483
View File
@@ -1,483 +1,483 @@
Android
================================================================================
Matt Styles wrote a tutorial on building SDL for Android with Visual Studio:
http://trederia.blogspot.de/2017/03/building-sdl2-for-android-with-visual.html
The rest of this README covers the Android gradle style build process.
If you are using the older ant build process, it is no longer officially
supported, but you can use the "android-project-ant" directory as a template.
Requirements
================================================================================
Android SDK (version 34 or later)
https://developer.android.com/sdk/index.html
Android NDK r15c or later
https://developer.android.com/tools/sdk/ndk/index.html
Minimum API level supported by SDL: 19 (Android 4.4)
How the port works
================================================================================
- Android applications are Java-based, optionally with parts written in C
- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to
the SDL library
- This means that your application C code must be placed inside an Android
Java project, along with some C support code that communicates with Java
- This eventually produces a standard Android .apk package
The Android Java code implements an "Activity" and can be found in:
android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
The Java code loads your game code, the SDL shared library, and
dispatches to native functions implemented in the SDL library:
src/core/android/SDL_android.c
Building an app
================================================================================
For simple projects you can use the script located at build-scripts/androidbuild.sh
There's two ways of using it:
androidbuild.sh com.yourcompany.yourapp < sources.list
androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
sources.list should be a text file with a source file name in each line
Filenames should be specified relative to the current directory, for example if
you are in the build-scripts directory and want to create the testgles.c test, you'll
run:
./androidbuild.sh org.libsdl.testgles ../test/testgles.c
One limitation of this script is that all sources provided will be aggregated into
a single directory, thus all your source files should have a unique name.
Once the project is complete the script will tell you where the debug APK is located.
If you want to create a signed release APK, you can use the project created by this
utility to generate it.
Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
done in the build directory for the app!
For more complex projects, follow these instructions:
1. Get the source code for SDL and copy the 'android-project' directory located at SDL/android-project to a suitable location. Also make sure to rename it to your project name (In these examples: YOURPROJECT).
(The 'android-project' directory can basically be seen as a sort of starting point for the android-port of your project. It contains the glue code between the Android Java 'frontend' and the SDL code 'backend'. It also contains some standard behaviour, like how events should be handled, which you will be able to change.)
2. Move or [symlink](https://en.wikipedia.org/wiki/Symbolic_link) the SDL directory into the "YOURPROJECT/app/jni" directory
(This is needed as the source of SDL has to be compiled by the Android compiler)
3. Edit "YOURPROJECT/app/jni/src/Android.mk" to include your source files.
(They should be separated by spaces after the "LOCAL_SRC_FILES := " declaration)
4a. If you want to use Android Studio, simply open your 'YOURPROJECT' directory and start building.
4b. If you want to build manually, run './gradlew installDebug' in the project directory. This compiles the .java, creates an .apk with the native code embedded, and installs it on any connected Android device
If you already have a project that uses CMake, the instructions change somewhat:
1. Do points 1 and 2 from the instruction above.
2. Edit "YOURPROJECT/app/build.gradle" to comment out or remove sections containing ndk-build
and uncomment the cmake sections. Add arguments to the CMake invocation as needed.
3. Edit "YOURPROJECT/app/jni/CMakeLists.txt" to include your project (it defaults to
adding the "src" subdirectory). Note that you'll have SDL2, SDL2main and SDL2-static
as targets in your project, so you should have "target_link_libraries(yourgame SDL2 SDL2main)"
in your CMakeLists.txt file. Also be aware that you should use add_library() instead of
add_executable() for the target containing your "main" function.
If you wish to use Android Studio, you can skip the last step.
4. Run './gradlew installDebug' or './gradlew installRelease' in the project directory. It will build and install your .apk on any
connected Android device
Here's an explanation of the files in the Android project, so you can customize them:
android-project/app
build.gradle - build info including the application version and SDK
src/main/AndroidManifest.xml - package manifest. Among others, it contains the class name of the main Activity and the package name of the application.
jni/ - directory holding native code
jni/Application.mk - Application JNI settings, including target platform and STL library
jni/Android.mk - Android makefile that can call recursively the Android.mk files in all subdirectories
jni/CMakeLists.txt - Top-level CMake project that adds SDL as a subproject
jni/SDL/ - (symlink to) directory holding the SDL library files
jni/SDL/Android.mk - Android makefile for creating the SDL shared library
jni/src/ - directory holding your C/C++ source
jni/src/Android.mk - Android makefile that you should customize to include your source code and any library references
jni/src/CMakeLists.txt - CMake file that you may customize to include your source code and any library references
src/main/assets/ - directory holding asset files for your application
src/main/res/ - directory holding resources for your application
src/main/res/mipmap-* - directories holding icons for different phone hardware
src/main/res/values/strings.xml - strings used in your application, including the application name
src/main/java/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding to SDL. Be very careful changing this, as the SDL library relies on this implementation. You should instead subclass this for your application.
Customizing your application name
================================================================================
To customize your application name, edit AndroidManifest.xml and replace
"org.libsdl.app" with an identifier for your product package.
Then create a Java class extending SDLActivity and place it in a directory
under src matching your package, e.g.
src/com/gamemaker/game/MyGame.java
Here's an example of a minimal class file:
--- MyGame.java --------------------------
package com.gamemaker.game;
import org.libsdl.app.SDLActivity;
/**
* A sample wrapper class that just calls SDLActivity
*/
public class MyGame extends SDLActivity { }
------------------------------------------
Then replace "SDLActivity" in AndroidManifest.xml with the name of your
class, .e.g. "MyGame"
Customizing your application icon
================================================================================
Conceptually changing your icon is just replacing the "ic_launcher.png" files in
the drawable directories under the res directory. There are several directories
for different screen sizes.
Loading assets
================================================================================
Any files you put in the "app/src/main/assets" directory of your project
directory will get bundled into the application package and you can load
them using the standard functions in SDL_rwops.h.
There are also a few Android specific functions that allow you to get other
useful paths for saving and loading data:
* SDL_AndroidGetInternalStoragePath()
* SDL_AndroidGetExternalStorageState()
* SDL_AndroidGetExternalStoragePath()
See SDL_system.h for more details on these functions.
The asset packaging system will, by default, compress certain file extensions.
SDL includes two asset file access mechanisms, the preferred one is the so
called "File Descriptor" method, which is faster and doesn't involve the Dalvik
GC, but given this method does not work on compressed assets, there is also the
"Input Stream" method, which is automatically used as a fall back by SDL. You
may want to keep this fact in mind when building your APK, specially when large
files are involved.
For more information on which extensions get compressed by default and how to
disable this behaviour, see for example:
http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
Pause / Resume behaviour
================================================================================
If SDL_HINT_ANDROID_BLOCK_ON_PAUSE hint is set (the default),
the event loop will block itself when the app is paused (ie, when the user
returns to the main Android dashboard). Blocking is better in terms of battery
use, and it allows your app to spring back to life instantaneously after resume
(versus polling for a resume message).
Upon resume, SDL will attempt to restore the GL context automatically.
In modern devices (Android 3.0 and up) this will most likely succeed and your
app can continue to operate as it was.
However, there's a chance (on older hardware, or on systems under heavy load),
where the GL context can not be restored. In that case you have to listen for
a specific message (SDL_RENDER_DEVICE_RESET) and restore your textures
manually or quit the app.
You should not use the SDL renderer API while the app going in background:
- SDL_APP_WILLENTERBACKGROUND:
after you read this message, GL context gets backed-up and you should not
use the SDL renderer API.
When this event is received, you have to set the render target to NULL, if you're using it.
(eg call SDL_SetRenderTarget(renderer, NULL))
- SDL_APP_DIDENTERFOREGROUND:
GL context is restored, and the SDL renderer API is available (unless you
receive SDL_RENDER_DEVICE_RESET).
Mouse / Touch events
================================================================================
In some case, SDL generates synthetic mouse (resp. touch) events for touch
(resp. mouse) devices.
To enable/disable this behavior, see SDL_hints.h:
- SDL_HINT_TOUCH_MOUSE_EVENTS
- SDL_HINT_MOUSE_TOUCH_EVENTS
Misc
================================================================================
For some device, it appears to works better setting explicitly GL attributes
before creating a window:
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
Threads and the Java VM
================================================================================
For a quick tour on how Linux native threads interoperate with the Java VM, take
a look here: https://developer.android.com/guide/practices/jni.html
If you want to use threads in your SDL app, it's strongly recommended that you
do so by creating them using SDL functions. This way, the required attach/detach
handling is managed by SDL automagically. If you have threads created by other
means and they make calls to SDL functions, make sure that you call
Android_JNI_SetupThread() before doing anything else otherwise SDL will attach
your thread automatically anyway (when you make an SDL call), but it'll never
detach it.
If you ever want to use JNI in a native thread (created by "SDL_CreateThread()"),
it won't be able to find your java class and method because of the java class loader
which is different for native threads, than for java threads (eg your "main()").
the work-around is to find class/method, in you "main()" thread, and to use them
in your native thread.
see:
https://developer.android.com/training/articles/perf-jni#faq:-why-didnt-findclass-find-my-class
Using STL
================================================================================
You can use STL in your project by creating an Application.mk file in the jni
folder and adding the following line:
APP_STL := c++_shared
For more information go here:
https://developer.android.com/ndk/guides/cpp-support
Using the emulator
================================================================================
There are some good tips and tricks for getting the most out of the
emulator here: https://developer.android.com/tools/devices/emulator.html
Especially useful is the info on setting up OpenGL ES 2.0 emulation.
Notice that this software emulator is incredibly slow and needs a lot of disk space.
Using a real device works better.
Troubleshooting
================================================================================
You can see if adb can see any devices with the following command:
adb devices
You can see the output of log messages on the default device with:
adb logcat
You can push files to the device with:
adb push local_file remote_path_and_file
You can push files to the SD Card at /sdcard, for example:
adb push moose.dat /sdcard/moose.dat
You can see the files on the SD card with a shell command:
adb shell ls /sdcard/
You can start a command shell on the default device with:
adb shell
You can remove the library files of your project (and not the SDL lib files) with:
ndk-build clean
You can do a build with the following command:
ndk-build
You can see the complete command line that ndk-build is using by passing V=1 on the command line:
ndk-build V=1
If your application crashes in native code, you can use ndk-stack to get a symbolic stack trace:
https://developer.android.com/ndk/guides/ndk-stack
If you want to go through the process manually, you can use addr2line to convert the
addresses in the stack trace to lines in your code.
For example, if your crash looks like this:
I/DEBUG ( 31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
I/DEBUG ( 31): r0 00000000 r1 00001000 r2 00000003 r3 400085d4
I/DEBUG ( 31): r4 400085d0 r5 40008000 r6 afd41504 r7 436c6a7c
I/DEBUG ( 31): r8 436c6b30 r9 435c6fb0 10 435c6f9c fp 4168d82c
I/DEBUG ( 31): ip 8346aff0 sp 436c6a60 lr afd1c8ff pc afd1c902 cpsr 60000030
I/DEBUG ( 31): #00 pc 0001c902 /system/lib/libc.so
I/DEBUG ( 31): #01 pc 0001ccf6 /system/lib/libc.so
I/DEBUG ( 31): #02 pc 000014bc /data/data/org.libsdl.app/lib/libmain.so
I/DEBUG ( 31): #03 pc 00001506 /data/data/org.libsdl.app/lib/libmain.so
You can see that there's a crash in the C library being called from the main code.
I run addr2line with the debug version of my code:
arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
and then paste in the number after "pc" in the call stack, from the line that I care about:
000014bc
I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
You can add logging to your code to help show what's happening:
#include <android/log.h>
__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
If you need to build without optimization turned on, you can create a file called
"Application.mk" in the jni directory, with the following line in it:
APP_OPTIM := debug
Memory debugging
================================================================================
The best (and slowest) way to debug memory issues on Android is valgrind.
Valgrind has support for Android out of the box, just grab code using:
svn co svn://svn.valgrind.org/valgrind/trunk valgrind
... and follow the instructions in the file README.android to build it.
One thing I needed to do on Mac OS X was change the path to the toolchain,
and add ranlib to the environment variables:
export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
Once valgrind is built, you can create a wrapper script to launch your
application with it, changing org.libsdl.app to your package identifier:
--- start_valgrind_app -------------------
#!/system/bin/sh
export TMPDIR=/data/data/org.libsdl.app
exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
------------------------------------------
Then push it to the device:
adb push start_valgrind_app /data/local
and make it executable:
adb shell chmod 755 /data/local/start_valgrind_app
and tell Android to use the script to launch your application:
adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
If the setprop command says "could not set property", it's likely that
your package name is too long and you should make it shorter by changing
AndroidManifest.xml and the path to your class file in android-project/src
You can then launch your application normally and waaaaaaaiiittt for it.
You can monitor the startup process with the logcat command above, and
when it's done (or even while it's running) you can grab the valgrind
output file:
adb pull /sdcard/valgrind.log
When you're done instrumenting with valgrind, you can disable the wrapper:
adb shell setprop wrap.org.libsdl.app ""
Graphics debugging
================================================================================
If you are developing on a compatible Tegra-based tablet, NVidia provides
Tegra Graphics Debugger at their website. Because SDL2 dynamically loads EGL
and GLES libraries, you must follow their instructions for installing the
interposer library on a rooted device. The non-rooted instructions are not
compatible with applications that use SDL2 for video.
The Tegra Graphics Debugger is available from NVidia here:
https://developer.nvidia.com/tegra-graphics-debugger
Why is API level 19 the minimum required?
================================================================================
The latest NDK toolchain doesn't support targeting earlier than API level 19.
As of this writing, according to https://www.composables.com/tools/distribution-chart
about 99.7% of the Android devices accessing Google Play support API level 19 or
higher (August 2023).
A note regarding the use of the "dirty rectangles" rendering technique
================================================================================
If your app uses a variation of the "dirty rectangles" rendering technique,
where you only update a portion of the screen on each frame, you may notice a
variety of visual glitches on Android, that are not present on other platforms.
This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
contexts, in particular the use of the eglSwapBuffers function. As stated in the
documentation for the function "The contents of ancillary buffers are always
undefined after calling eglSwapBuffers".
Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
is not possible for SDL as it requires EGL 1.4, available only on the API level
17+, so the only workaround available on this platform is to redraw the entire
screen each frame.
Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
Ending your application
================================================================================
Two legitimate ways:
- return from your main() function. Java side will automatically terminate the
Activity by calling Activity.finish().
- Android OS can decide to terminate your application by calling onDestroy()
(see Activity life cycle). Your application will receive a SDL_QUIT event you
can handle to save things and quit.
Don't call exit() as it stops the activity badly.
NB: "Back button" can be handled as a SDL_KEYDOWN/UP events, with Keycode
SDLK_AC_BACK, for any purpose.
Known issues
================================================================================
- The number of buttons reported for each joystick is hardcoded to be 36, which
is the current maximum number of buttons Android can report.
Android
================================================================================
Matt Styles wrote a tutorial on building SDL for Android with Visual Studio:
http://trederia.blogspot.de/2017/03/building-sdl2-for-android-with-visual.html
The rest of this README covers the Android gradle style build process.
If you are using the older ant build process, it is no longer officially
supported, but you can use the "android-project-ant" directory as a template.
Requirements
================================================================================
Android SDK (version 34 or later)
https://developer.android.com/sdk/index.html
Android NDK r15c or later
https://developer.android.com/tools/sdk/ndk/index.html
Minimum API level supported by SDL: 19 (Android 4.4)
How the port works
================================================================================
- Android applications are Java-based, optionally with parts written in C
- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to
the SDL library
- This means that your application C code must be placed inside an Android
Java project, along with some C support code that communicates with Java
- This eventually produces a standard Android .apk package
The Android Java code implements an "Activity" and can be found in:
android-project/app/src/main/java/org/libsdl/app/SDLActivity.java
The Java code loads your game code, the SDL shared library, and
dispatches to native functions implemented in the SDL library:
src/core/android/SDL_android.c
Building an app
================================================================================
For simple projects you can use the script located at build-scripts/androidbuild.sh
There's two ways of using it:
androidbuild.sh com.yourcompany.yourapp < sources.list
androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c
sources.list should be a text file with a source file name in each line
Filenames should be specified relative to the current directory, for example if
you are in the build-scripts directory and want to create the testgles.c test, you'll
run:
./androidbuild.sh org.libsdl.testgles ../test/testgles.c
One limitation of this script is that all sources provided will be aggregated into
a single directory, thus all your source files should have a unique name.
Once the project is complete the script will tell you where the debug APK is located.
If you want to create a signed release APK, you can use the project created by this
utility to generate it.
Finally, a word of caution: re running androidbuild.sh wipes any changes you may have
done in the build directory for the app!
For more complex projects, follow these instructions:
1. Get the source code for SDL and copy the 'android-project' directory located at SDL/android-project to a suitable location. Also make sure to rename it to your project name (In these examples: YOURPROJECT).
(The 'android-project' directory can basically be seen as a sort of starting point for the android-port of your project. It contains the glue code between the Android Java 'frontend' and the SDL code 'backend'. It also contains some standard behaviour, like how events should be handled, which you will be able to change.)
2. Move or [symlink](https://en.wikipedia.org/wiki/Symbolic_link) the SDL directory into the "YOURPROJECT/app/jni" directory
(This is needed as the source of SDL has to be compiled by the Android compiler)
3. Edit "YOURPROJECT/app/jni/src/Android.mk" to include your source files.
(They should be separated by spaces after the "LOCAL_SRC_FILES := " declaration)
4a. If you want to use Android Studio, simply open your 'YOURPROJECT' directory and start building.
4b. If you want to build manually, run './gradlew installDebug' in the project directory. This compiles the .java, creates an .apk with the native code embedded, and installs it on any connected Android device
If you already have a project that uses CMake, the instructions change somewhat:
1. Do points 1 and 2 from the instruction above.
2. Edit "YOURPROJECT/app/build.gradle" to comment out or remove sections containing ndk-build
and uncomment the cmake sections. Add arguments to the CMake invocation as needed.
3. Edit "YOURPROJECT/app/jni/CMakeLists.txt" to include your project (it defaults to
adding the "src" subdirectory). Note that you'll have SDL2, SDL2main and SDL2-static
as targets in your project, so you should have "target_link_libraries(yourgame SDL2 SDL2main)"
in your CMakeLists.txt file. Also be aware that you should use add_library() instead of
add_executable() for the target containing your "main" function.
If you wish to use Android Studio, you can skip the last step.
4. Run './gradlew installDebug' or './gradlew installRelease' in the project directory. It will build and install your .apk on any
connected Android device
Here's an explanation of the files in the Android project, so you can customize them:
android-project/app
build.gradle - build info including the application version and SDK
src/main/AndroidManifest.xml - package manifest. Among others, it contains the class name of the main Activity and the package name of the application.
jni/ - directory holding native code
jni/Application.mk - Application JNI settings, including target platform and STL library
jni/Android.mk - Android makefile that can call recursively the Android.mk files in all subdirectories
jni/CMakeLists.txt - Top-level CMake project that adds SDL as a subproject
jni/SDL/ - (symlink to) directory holding the SDL library files
jni/SDL/Android.mk - Android makefile for creating the SDL shared library
jni/src/ - directory holding your C/C++ source
jni/src/Android.mk - Android makefile that you should customize to include your source code and any library references
jni/src/CMakeLists.txt - CMake file that you may customize to include your source code and any library references
src/main/assets/ - directory holding asset files for your application
src/main/res/ - directory holding resources for your application
src/main/res/mipmap-* - directories holding icons for different phone hardware
src/main/res/values/strings.xml - strings used in your application, including the application name
src/main/java/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding to SDL. Be very careful changing this, as the SDL library relies on this implementation. You should instead subclass this for your application.
Customizing your application name
================================================================================
To customize your application name, edit AndroidManifest.xml and replace
"org.libsdl.app" with an identifier for your product package.
Then create a Java class extending SDLActivity and place it in a directory
under src matching your package, e.g.
src/com/gamemaker/game/MyGame.java
Here's an example of a minimal class file:
--- MyGame.java --------------------------
package com.gamemaker.game;
import org.libsdl.app.SDLActivity;
/**
* A sample wrapper class that just calls SDLActivity
*/
public class MyGame extends SDLActivity { }
------------------------------------------
Then replace "SDLActivity" in AndroidManifest.xml with the name of your
class, .e.g. "MyGame"
Customizing your application icon
================================================================================
Conceptually changing your icon is just replacing the "ic_launcher.png" files in
the drawable directories under the res directory. There are several directories
for different screen sizes.
Loading assets
================================================================================
Any files you put in the "app/src/main/assets" directory of your project
directory will get bundled into the application package and you can load
them using the standard functions in SDL_rwops.h.
There are also a few Android specific functions that allow you to get other
useful paths for saving and loading data:
* SDL_AndroidGetInternalStoragePath()
* SDL_AndroidGetExternalStorageState()
* SDL_AndroidGetExternalStoragePath()
See SDL_system.h for more details on these functions.
The asset packaging system will, by default, compress certain file extensions.
SDL includes two asset file access mechanisms, the preferred one is the so
called "File Descriptor" method, which is faster and doesn't involve the Dalvik
GC, but given this method does not work on compressed assets, there is also the
"Input Stream" method, which is automatically used as a fall back by SDL. You
may want to keep this fact in mind when building your APK, specially when large
files are involved.
For more information on which extensions get compressed by default and how to
disable this behaviour, see for example:
http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/
Pause / Resume behaviour
================================================================================
If SDL_HINT_ANDROID_BLOCK_ON_PAUSE hint is set (the default),
the event loop will block itself when the app is paused (ie, when the user
returns to the main Android dashboard). Blocking is better in terms of battery
use, and it allows your app to spring back to life instantaneously after resume
(versus polling for a resume message).
Upon resume, SDL will attempt to restore the GL context automatically.
In modern devices (Android 3.0 and up) this will most likely succeed and your
app can continue to operate as it was.
However, there's a chance (on older hardware, or on systems under heavy load),
where the GL context can not be restored. In that case you have to listen for
a specific message (SDL_RENDER_DEVICE_RESET) and restore your textures
manually or quit the app.
You should not use the SDL renderer API while the app going in background:
- SDL_APP_WILLENTERBACKGROUND:
after you read this message, GL context gets backed-up and you should not
use the SDL renderer API.
When this event is received, you have to set the render target to NULL, if you're using it.
(eg call SDL_SetRenderTarget(renderer, NULL))
- SDL_APP_DIDENTERFOREGROUND:
GL context is restored, and the SDL renderer API is available (unless you
receive SDL_RENDER_DEVICE_RESET).
Mouse / Touch events
================================================================================
In some case, SDL generates synthetic mouse (resp. touch) events for touch
(resp. mouse) devices.
To enable/disable this behavior, see SDL_hints.h:
- SDL_HINT_TOUCH_MOUSE_EVENTS
- SDL_HINT_MOUSE_TOUCH_EVENTS
Misc
================================================================================
For some device, it appears to works better setting explicitly GL attributes
before creating a window:
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
Threads and the Java VM
================================================================================
For a quick tour on how Linux native threads interoperate with the Java VM, take
a look here: https://developer.android.com/guide/practices/jni.html
If you want to use threads in your SDL app, it's strongly recommended that you
do so by creating them using SDL functions. This way, the required attach/detach
handling is managed by SDL automagically. If you have threads created by other
means and they make calls to SDL functions, make sure that you call
Android_JNI_SetupThread() before doing anything else otherwise SDL will attach
your thread automatically anyway (when you make an SDL call), but it'll never
detach it.
If you ever want to use JNI in a native thread (created by "SDL_CreateThread()"),
it won't be able to find your java class and method because of the java class loader
which is different for native threads, than for java threads (eg your "main()").
the work-around is to find class/method, in you "main()" thread, and to use them
in your native thread.
see:
https://developer.android.com/training/articles/perf-jni#faq:-why-didnt-findclass-find-my-class
Using STL
================================================================================
You can use STL in your project by creating an Application.mk file in the jni
folder and adding the following line:
APP_STL := c++_shared
For more information go here:
https://developer.android.com/ndk/guides/cpp-support
Using the emulator
================================================================================
There are some good tips and tricks for getting the most out of the
emulator here: https://developer.android.com/tools/devices/emulator.html
Especially useful is the info on setting up OpenGL ES 2.0 emulation.
Notice that this software emulator is incredibly slow and needs a lot of disk space.
Using a real device works better.
Troubleshooting
================================================================================
You can see if adb can see any devices with the following command:
adb devices
You can see the output of log messages on the default device with:
adb logcat
You can push files to the device with:
adb push local_file remote_path_and_file
You can push files to the SD Card at /sdcard, for example:
adb push moose.dat /sdcard/moose.dat
You can see the files on the SD card with a shell command:
adb shell ls /sdcard/
You can start a command shell on the default device with:
adb shell
You can remove the library files of your project (and not the SDL lib files) with:
ndk-build clean
You can do a build with the following command:
ndk-build
You can see the complete command line that ndk-build is using by passing V=1 on the command line:
ndk-build V=1
If your application crashes in native code, you can use ndk-stack to get a symbolic stack trace:
https://developer.android.com/ndk/guides/ndk-stack
If you want to go through the process manually, you can use addr2line to convert the
addresses in the stack trace to lines in your code.
For example, if your crash looks like this:
I/DEBUG ( 31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0
I/DEBUG ( 31): r0 00000000 r1 00001000 r2 00000003 r3 400085d4
I/DEBUG ( 31): r4 400085d0 r5 40008000 r6 afd41504 r7 436c6a7c
I/DEBUG ( 31): r8 436c6b30 r9 435c6fb0 10 435c6f9c fp 4168d82c
I/DEBUG ( 31): ip 8346aff0 sp 436c6a60 lr afd1c8ff pc afd1c902 cpsr 60000030
I/DEBUG ( 31): #00 pc 0001c902 /system/lib/libc.so
I/DEBUG ( 31): #01 pc 0001ccf6 /system/lib/libc.so
I/DEBUG ( 31): #02 pc 000014bc /data/data/org.libsdl.app/lib/libmain.so
I/DEBUG ( 31): #03 pc 00001506 /data/data/org.libsdl.app/lib/libmain.so
You can see that there's a crash in the C library being called from the main code.
I run addr2line with the debug version of my code:
arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so
and then paste in the number after "pc" in the call stack, from the line that I care about:
000014bc
I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23.
You can add logging to your code to help show what's happening:
#include <android/log.h>
__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x);
If you need to build without optimization turned on, you can create a file called
"Application.mk" in the jni directory, with the following line in it:
APP_OPTIM := debug
Memory debugging
================================================================================
The best (and slowest) way to debug memory issues on Android is valgrind.
Valgrind has support for Android out of the box, just grab code using:
svn co svn://svn.valgrind.org/valgrind/trunk valgrind
... and follow the instructions in the file README.android to build it.
One thing I needed to do on Mac OS X was change the path to the toolchain,
and add ranlib to the environment variables:
export RANLIB=$NDKROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-ranlib
Once valgrind is built, you can create a wrapper script to launch your
application with it, changing org.libsdl.app to your package identifier:
--- start_valgrind_app -------------------
#!/system/bin/sh
export TMPDIR=/data/data/org.libsdl.app
exec /data/local/Inst/bin/valgrind --log-file=/sdcard/valgrind.log --error-limit=no $*
------------------------------------------
Then push it to the device:
adb push start_valgrind_app /data/local
and make it executable:
adb shell chmod 755 /data/local/start_valgrind_app
and tell Android to use the script to launch your application:
adb shell setprop wrap.org.libsdl.app "logwrapper /data/local/start_valgrind_app"
If the setprop command says "could not set property", it's likely that
your package name is too long and you should make it shorter by changing
AndroidManifest.xml and the path to your class file in android-project/src
You can then launch your application normally and waaaaaaaiiittt for it.
You can monitor the startup process with the logcat command above, and
when it's done (or even while it's running) you can grab the valgrind
output file:
adb pull /sdcard/valgrind.log
When you're done instrumenting with valgrind, you can disable the wrapper:
adb shell setprop wrap.org.libsdl.app ""
Graphics debugging
================================================================================
If you are developing on a compatible Tegra-based tablet, NVidia provides
Tegra Graphics Debugger at their website. Because SDL2 dynamically loads EGL
and GLES libraries, you must follow their instructions for installing the
interposer library on a rooted device. The non-rooted instructions are not
compatible with applications that use SDL2 for video.
The Tegra Graphics Debugger is available from NVidia here:
https://developer.nvidia.com/tegra-graphics-debugger
Why is API level 19 the minimum required?
================================================================================
The latest NDK toolchain doesn't support targeting earlier than API level 19.
As of this writing, according to https://www.composables.com/tools/distribution-chart
about 99.7% of the Android devices accessing Google Play support API level 19 or
higher (August 2023).
A note regarding the use of the "dirty rectangles" rendering technique
================================================================================
If your app uses a variation of the "dirty rectangles" rendering technique,
where you only update a portion of the screen on each frame, you may notice a
variety of visual glitches on Android, that are not present on other platforms.
This is caused by SDL's use of EGL as the support system to handle OpenGL ES/ES2
contexts, in particular the use of the eglSwapBuffers function. As stated in the
documentation for the function "The contents of ancillary buffers are always
undefined after calling eglSwapBuffers".
Setting the EGL_SWAP_BEHAVIOR attribute of the surface to EGL_BUFFER_PRESERVED
is not possible for SDL as it requires EGL 1.4, available only on the API level
17+, so the only workaround available on this platform is to redraw the entire
screen each frame.
Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html
Ending your application
================================================================================
Two legitimate ways:
- return from your main() function. Java side will automatically terminate the
Activity by calling Activity.finish().
- Android OS can decide to terminate your application by calling onDestroy()
(see Activity life cycle). Your application will receive a SDL_QUIT event you
can handle to save things and quit.
Don't call exit() as it stops the activity badly.
NB: "Back button" can be handled as a SDL_KEYDOWN/UP events, with Keycode
SDLK_AC_BACK, for any purpose.
Known issues
================================================================================
- The number of buttons reported for each joystick is hardcoded to be 36, which
is the current maximum number of buttons Android can report.
+163 -163
View File
@@ -1,163 +1,163 @@
# CMake
(www.cmake.org)
SDL's build system was traditionally based on autotools. Over time, this
approach has suffered from several issues across the different supported
platforms.
To solve these problems, a new build system based on CMake was introduced.
It is developed in parallel to the legacy autotools build system, so users
can experiment with it without complication.
The CMake build system is supported on the following platforms:
* FreeBSD
* Linux
* Microsoft Visual C
* MinGW and Msys
* macOS, iOS, and tvOS, with support for XCode
* Android
* Emscripten
* RiscOS
* Playstation Vita
## Building SDL
Assuming the source for SDL is located at `~/sdl`
```sh
cd ~
mkdir build
cd build
cmake ~/sdl
cmake --build .
```
This will build the static and dynamic versions of SDL in the `~/build` directory.
Installation can be done using:
```sh
cmake --install . # '--install' requires CMake 3.15, or newer
```
## Including SDL in your project
SDL can be included in your project in 2 major ways:
- using a system SDL library, provided by your (*nix) distribution or a package manager
- using a vendored SDL library: this is SDL copied or symlinked in a subfolder.
The following CMake script supports both, depending on the value of `MYGAME_VENDORED`.
```cmake
cmake_minimum_required(VERSION 3.5)
project(mygame)
# Create an option to switch between a system sdl library and a vendored sdl library
option(MYGAME_VENDORED "Use vendored libraries" OFF)
if(MYGAME_VENDORED)
add_subdirectory(vendored/sdl EXCLUDE_FROM_ALL)
else()
# 1. Look for a SDL2 package, 2. look for the SDL2 component and 3. fail if none can be found
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
# 1. Look for a SDL2 package, 2. Look for the SDL2maincomponent and 3. DO NOT fail when SDL2main is not available
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
endif()
# Create your game executable target as usual
add_executable(mygame WIN32 mygame.c)
# SDL2::SDL2main may or may not be available. It is e.g. required by Windows GUI applications
if(TARGET SDL2::SDL2main)
# It has an implicit dependency on SDL2 functions, so it MUST be added before SDL2::SDL2 (or SDL2::SDL2-static)
target_link_libraries(mygame PRIVATE SDL2::SDL2main)
endif()
# Link to the actual SDL2 library. SDL2::SDL2 is the shared SDL library, SDL2::SDL2-static is the static SDL libarary.
target_link_libraries(mygame PRIVATE SDL2::SDL2)
```
### A system SDL library
For CMake to find SDL, it must be installed in [a default location CMake is looking for](https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure).
The following components are available, to be used as an argument of `find_package`.
| Component name | Description |
|----------------|--------------------------------------------------------------------------------------------|
| SDL2 | The SDL2 shared library, available through the `SDL2::SDL2` target [^SDL_TARGET_EXCEPTION] |
| SDL2-static | The SDL2 static library, available through the `SDL2::SDL2-static` target |
| SDL2main | The SDL2main static library, available through the `SDL2::SDL2main` target |
| SDL2test | The SDL2test static library, available through the `SDL2::SDL2test` target |
### Using a vendored SDL
This only requires a copy of SDL in a subdirectory.
## CMake configuration options for platforms
### iOS/tvOS
CMake 3.14+ natively includes support for iOS and tvOS. SDL binaries may be built
using Xcode or Make, possibly among other build-systems.
When using a recent version of CMake (3.14+), it should be possible to:
- build SDL for iOS, both static and dynamic
- build SDL test apps (as iOS/tvOS .app bundles)
- generate a working SDL_config.h for iOS (using SDL_config.h.cmake as a basis)
To use, set the following CMake variables when running CMake's configuration stage:
- `CMAKE_SYSTEM_NAME=<OS>` (either `iOS` or `tvOS`)
- `CMAKE_OSX_SYSROOT=<SDK>` (examples: `iphoneos`, `iphonesimulator`, `iphoneos12.4`, `/full/path/to/iPhoneOS.sdk`,
`appletvos`, `appletvsimulator`, `appletvos12.4`, `/full/path/to/AppleTVOS.sdk`, etc.)
- `CMAKE_OSX_ARCHITECTURES=<semicolon-separated list of CPU architectures>` (example: "arm64;armv7s;x86_64")
#### Examples
- for iOS-Simulator, using the latest, installed SDK:
```bash
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for iOS-Device, using the latest, installed SDK, 64-bit only
```bash
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES=arm64
```
- for iOS-Device, using the latest, installed SDK, mixed 32/64 bit
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES="arm64;armv7s"
```
- for iOS-Device, using a specific SDK revision (iOS 12.4, in this example):
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos12.4 -DCMAKE_OSX_ARCHITECTURES=arm64
```
- for iOS-Simulator, using the latest, installed SDK, and building SDL test apps (as .app bundles):
```cmake
cmake ~/sdl -DSDL_TESTS=1 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for tvOS-Simulator, using the latest, installed SDK:
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvsimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for tvOS-Device, using the latest, installed SDK:
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_ARCHITECTURES=arm64`
```
[^SDL_TARGET_EXCEPTION]: `SDL2::SDL2` can be an ALIAS to a static `SDL2::SDL2-static` target for multiple reasons.
# CMake
(www.cmake.org)
SDL's build system was traditionally based on autotools. Over time, this
approach has suffered from several issues across the different supported
platforms.
To solve these problems, a new build system based on CMake was introduced.
It is developed in parallel to the legacy autotools build system, so users
can experiment with it without complication.
The CMake build system is supported on the following platforms:
* FreeBSD
* Linux
* Microsoft Visual C
* MinGW and Msys
* macOS, iOS, and tvOS, with support for XCode
* Android
* Emscripten
* RiscOS
* Playstation Vita
## Building SDL
Assuming the source for SDL is located at `~/sdl`
```sh
cd ~
mkdir build
cd build
cmake ~/sdl
cmake --build .
```
This will build the static and dynamic versions of SDL in the `~/build` directory.
Installation can be done using:
```sh
cmake --install . # '--install' requires CMake 3.15, or newer
```
## Including SDL in your project
SDL can be included in your project in 2 major ways:
- using a system SDL library, provided by your (*nix) distribution or a package manager
- using a vendored SDL library: this is SDL copied or symlinked in a subfolder.
The following CMake script supports both, depending on the value of `MYGAME_VENDORED`.
```cmake
cmake_minimum_required(VERSION 3.5)
project(mygame)
# Create an option to switch between a system sdl library and a vendored sdl library
option(MYGAME_VENDORED "Use vendored libraries" OFF)
if(MYGAME_VENDORED)
add_subdirectory(vendored/sdl EXCLUDE_FROM_ALL)
else()
# 1. Look for a SDL2 package, 2. look for the SDL2 component and 3. fail if none can be found
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
# 1. Look for a SDL2 package, 2. Look for the SDL2maincomponent and 3. DO NOT fail when SDL2main is not available
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
endif()
# Create your game executable target as usual
add_executable(mygame WIN32 mygame.c)
# SDL2::SDL2main may or may not be available. It is e.g. required by Windows GUI applications
if(TARGET SDL2::SDL2main)
# It has an implicit dependency on SDL2 functions, so it MUST be added before SDL2::SDL2 (or SDL2::SDL2-static)
target_link_libraries(mygame PRIVATE SDL2::SDL2main)
endif()
# Link to the actual SDL2 library. SDL2::SDL2 is the shared SDL library, SDL2::SDL2-static is the static SDL libarary.
target_link_libraries(mygame PRIVATE SDL2::SDL2)
```
### A system SDL library
For CMake to find SDL, it must be installed in [a default location CMake is looking for](https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure).
The following components are available, to be used as an argument of `find_package`.
| Component name | Description |
|----------------|--------------------------------------------------------------------------------------------|
| SDL2 | The SDL2 shared library, available through the `SDL2::SDL2` target [^SDL_TARGET_EXCEPTION] |
| SDL2-static | The SDL2 static library, available through the `SDL2::SDL2-static` target |
| SDL2main | The SDL2main static library, available through the `SDL2::SDL2main` target |
| SDL2test | The SDL2test static library, available through the `SDL2::SDL2test` target |
### Using a vendored SDL
This only requires a copy of SDL in a subdirectory.
## CMake configuration options for platforms
### iOS/tvOS
CMake 3.14+ natively includes support for iOS and tvOS. SDL binaries may be built
using Xcode or Make, possibly among other build-systems.
When using a recent version of CMake (3.14+), it should be possible to:
- build SDL for iOS, both static and dynamic
- build SDL test apps (as iOS/tvOS .app bundles)
- generate a working SDL_config.h for iOS (using SDL_config.h.cmake as a basis)
To use, set the following CMake variables when running CMake's configuration stage:
- `CMAKE_SYSTEM_NAME=<OS>` (either `iOS` or `tvOS`)
- `CMAKE_OSX_SYSROOT=<SDK>` (examples: `iphoneos`, `iphonesimulator`, `iphoneos12.4`, `/full/path/to/iPhoneOS.sdk`,
`appletvos`, `appletvsimulator`, `appletvos12.4`, `/full/path/to/AppleTVOS.sdk`, etc.)
- `CMAKE_OSX_ARCHITECTURES=<semicolon-separated list of CPU architectures>` (example: "arm64;armv7s;x86_64")
#### Examples
- for iOS-Simulator, using the latest, installed SDK:
```bash
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for iOS-Device, using the latest, installed SDK, 64-bit only
```bash
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES=arm64
```
- for iOS-Device, using the latest, installed SDK, mixed 32/64 bit
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_ARCHITECTURES="arm64;armv7s"
```
- for iOS-Device, using a specific SDK revision (iOS 12.4, in this example):
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos12.4 -DCMAKE_OSX_ARCHITECTURES=arm64
```
- for iOS-Simulator, using the latest, installed SDK, and building SDL test apps (as .app bundles):
```cmake
cmake ~/sdl -DSDL_TESTS=1 -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for tvOS-Simulator, using the latest, installed SDK:
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvsimulator -DCMAKE_OSX_ARCHITECTURES=x86_64
```
- for tvOS-Device, using the latest, installed SDK:
```cmake
cmake ~/sdl -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_ARCHITECTURES=arm64`
```
[^SDL_TARGET_EXCEPTION]: `SDL2::SDL2` can be an ALIAS to a static `SDL2::SDL2-static` target for multiple reasons.
+123 -123
View File
@@ -1,123 +1,123 @@
DirectFB
========
Supports:
- Hardware YUV overlays
- OpenGL - software only
- 2D/3D accelerations (depends on directfb driver)
- multiple displays
- windows
What you need:
* DirectFB 1.0.1, 1.2.x, 1.3.0
* Kernel-Framebuffer support: required: vesafb, radeonfb ....
* Mesa 7.0.x - optional for OpenGL
The `/etc/directfbrc` file should contain the following lines to make
your joystick work and avoid crashes:
```
disable-module=joystick
disable-module=cle266
disable-module=cyber5k
no-linux-input-grab
```
To disable to use x11 backend when DISPLAY variable is found use
```
export SDL_DIRECTFB_X11_CHECK=0
```
To disable the use of linux input devices, i.e. multimice/multikeyboard support,
use
```
export SDL_DIRECTFB_LINUX_INPUT=0
```
To use hardware accelerated YUV-overlays for YUV-textures, use:
```
export SDL_DIRECTFB_YUV_DIRECT=1
```
This is disabled by default. It will only support one
YUV texture, namely the first. Every other YUV texture will be
rendered in software.
In addition, you may use (directfb-1.2.x)
```
export SDL_DIRECTFB_YUV_UNDERLAY=1
```
to make the YUV texture an underlay. This will make the cursor to
be shown.
Simple Window Manager
=====================
The driver has support for a very, very basic window manager you may
want to use when running with `wm=default`. Use
```
export SDL_DIRECTFB_WM=1
```
to enable basic window borders. In order to have the window title rendered,
you need to have the following font installed:
```
/usr/share/fonts/truetype/freefont/FreeSans.ttf
```
OpenGL Support
==============
The following instructions will give you *software* OpenGL. However this
works at least on all directfb supported platforms.
As of this writing 20100802 you need to pull Mesa from git and do the following:
```
git clone git://anongit.freedesktop.org/git/mesa/mesa
cd mesa
git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
```
Edit `configs/linux-directfb` so that the Directories-section looks like this:
```
# Directories
SRC_DIRS = mesa glu
GLU_DIRS = sgi
DRIVER_DIRS = directfb
PROGRAM_DIRS =
```
Then do the following:
```
make linux-directfb
make
echo Installing - please enter sudo pw.
sudo make install INSTALL_DIR=/usr/local/dfb_GL
cd src/mesa/drivers/directfb
make
sudo make install INSTALL_DIR=/usr/local/dfb_GL
```
To run the SDL - testprograms:
```
export SDL_VIDEODRIVER=directfb
export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
./testgl
```
DirectFB
========
Supports:
- Hardware YUV overlays
- OpenGL - software only
- 2D/3D accelerations (depends on directfb driver)
- multiple displays
- windows
What you need:
* DirectFB 1.0.1, 1.2.x, 1.3.0
* Kernel-Framebuffer support: required: vesafb, radeonfb ....
* Mesa 7.0.x - optional for OpenGL
The `/etc/directfbrc` file should contain the following lines to make
your joystick work and avoid crashes:
```
disable-module=joystick
disable-module=cle266
disable-module=cyber5k
no-linux-input-grab
```
To disable to use x11 backend when DISPLAY variable is found use
```
export SDL_DIRECTFB_X11_CHECK=0
```
To disable the use of linux input devices, i.e. multimice/multikeyboard support,
use
```
export SDL_DIRECTFB_LINUX_INPUT=0
```
To use hardware accelerated YUV-overlays for YUV-textures, use:
```
export SDL_DIRECTFB_YUV_DIRECT=1
```
This is disabled by default. It will only support one
YUV texture, namely the first. Every other YUV texture will be
rendered in software.
In addition, you may use (directfb-1.2.x)
```
export SDL_DIRECTFB_YUV_UNDERLAY=1
```
to make the YUV texture an underlay. This will make the cursor to
be shown.
Simple Window Manager
=====================
The driver has support for a very, very basic window manager you may
want to use when running with `wm=default`. Use
```
export SDL_DIRECTFB_WM=1
```
to enable basic window borders. In order to have the window title rendered,
you need to have the following font installed:
```
/usr/share/fonts/truetype/freefont/FreeSans.ttf
```
OpenGL Support
==============
The following instructions will give you *software* OpenGL. However this
works at least on all directfb supported platforms.
As of this writing 20100802 you need to pull Mesa from git and do the following:
```
git clone git://anongit.freedesktop.org/git/mesa/mesa
cd mesa
git checkout 2c9fdaf7292423c157fc79b5ce43f0f199dd753a
```
Edit `configs/linux-directfb` so that the Directories-section looks like this:
```
# Directories
SRC_DIRS = mesa glu
GLU_DIRS = sgi
DRIVER_DIRS = directfb
PROGRAM_DIRS =
```
Then do the following:
```
make linux-directfb
make
echo Installing - please enter sudo pw.
sudo make install INSTALL_DIR=/usr/local/dfb_GL
cd src/mesa/drivers/directfb
make
sudo make install INSTALL_DIR=/usr/local/dfb_GL
```
To run the SDL - testprograms:
```
export SDL_VIDEODRIVER=directfb
export LD_LIBRARY_PATH=/usr/local/dfb_GL/lib
export LD_PRELOAD=/usr/local/dfb_GL/libGL.so.7
./testgl
```
+138 -138
View File
@@ -1,138 +1,138 @@
# Dynamic API
Originally posted on Ryan's Google+ account.
Background:
- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2,
but developers are shipping their own SDL2 with individual Steam games.
These games might stop getting updates, but a newer SDL2 might be needed later.
Certainly we'll always be fixing bugs in SDL, even if a new video target isn't
ever needed, and these fixes won't make it to a game shipping its own SDL.
- Even if we replace the SDL2 in those games with a compatible one, that is to
say, edit a developer's Steam depot (yuck!), there are developers that are
statically linking SDL2 that we can't do this for. We can't even force the
dynamic loader to ignore their SDL2 in this case, of course.
- If you don't ship an SDL2 with the game in some form, people that disabled the
Steam Runtime, or just tried to run the game from the command line instead of
Steam might find themselves unable to run the game, due to a missing dependency.
- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
generic Linux boxes that may or may not have SDL2 installed, you have to ship
the library or risk a total failure to launch. So now, you might have to have
a non-Steam build plus a Steam build (that is, one with and one without SDL2
included), which is inconvenient if you could have had one universal build
that works everywhere.
- We like the zlib license, but the biggest complaint from the open source
community about the license change is the static linking. The LGPL forced this
as a legal, not technical issue, but zlib doesn't care. Even those that aren't
concerned about the GNU freedoms found themselves solving the same problems:
swapping in a newer SDL to an older game often times can save the day.
Static linking stops this dead.
So here's what we did:
SDL now has, internally, a table of function pointers. So, this is what SDL_Init
now looks like:
```c
Uint32 SDL_Init(Uint32 flags)
{
return jump_table.SDL_Init(flags);
}
```
Except that is all done with a bunch of macro magic so we don't have to maintain
every one of these.
What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
SDL_Init() that you've been calling all this time. But at startup, it looks more
like this:
```c
Uint32 SDL_Init_DEFAULT(Uint32 flags)
{
SDL_InitDynamicAPI();
return jump_table.SDL_Init(flags);
}
```
SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function
pointers, which means that this `_DEFAULT` function never gets called again.
First call to any SDL function sets the whole thing up.
So you might be asking, what was the value in that? Isn't this what the operating
system's dynamic loader was supposed to do for us? Yes, but now we've got this
level of indirection, we can do things like this:
```bash
export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
./MyGameThatIsStaticallyLinkedToSDL2
```
And now, this game that is statically linked to SDL, can still be overridden
with a newer, or better, SDL. The statically linked one will only be used as
far as calling into the jump table in this case. But in cases where no override
is desired, the statically linked version will provide its own jump table,
and everyone is happy.
So now:
- Developers can statically link SDL, and users can still replace it.
(We'd still rather you ship a shared library, though!)
- Developers can ship an SDL with their game, Valve can override it for, say,
new features on SteamOS, or distros can override it for their own needs,
but it'll also just work in the default case.
- Developers can ship the same package to everyone (Humble Bundle, GOG, etc),
and it'll do the right thing.
- End users (and Valve) can update a game's SDL in almost any case,
to keep abandoned games running on newer platforms.
- Everyone develops with SDL exactly as they have been doing all along.
Same headers, same ABI. Just get the latest version to enable this magic.
A little more about SDL_InitDynamicAPI():
Internally, InitAPI does some locking to make sure everything waits until a
single thread initializes everything (although even SDL_CreateThread() goes
through here before spinning a thread, too), and then decides if it should use
an external SDL library. If not, it sets up the jump table using the current
SDL's function pointers (which might be statically linked into a program, or in
a shared library of its own). If so, it loads that library and looks for and
calls a single function:
```c
Sint32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
```
That function takes a version number (more on that in a moment), the address of
the jump table, and the size, in bytes, of the table.
Now, we've got policy here: this table's layout never changes; new stuff gets
added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all
the needed functions if tablesize <= sizeof its own jump table. If tablesize is
bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
if it's smaller, we know we can provide the entire API that the caller needs.
The version variable is a failsafe switch.
Right now it's always 1. This number changes when there are major API changes
(so we know if the tablesize might be smaller, or entries in it have changed).
Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not
inconceivable to have a small dispatch library that only supplies this one
function and loads different, otherwise-incompatible SDL libraries and has the
right one initialize the jump table based on the version. For something that
must generically catch lots of different versions of SDL over time, like the
Steam Client, this isn't a bad option.
Finally, I'm sure some people are reading this and thinking,
"I don't want that overhead in my project!"
To which I would point out that the extra function call through the jump table
probably wouldn't even show up in a profile, but lucky you: this can all be
disabled. You can build SDL without this if you absolutely must, but we would
encourage you not to do that. However, on heavily locked down platforms like
iOS, or maybe when debugging, it makes sense to disable it. The way this is
designed in SDL, you just have to change one #define, and the entire system
vaporizes out, and SDL functions exactly like it always did. Most of it is
macro magic, so the system is contained to one C file and a few headers.
However, this is on by default and you have to edit a header file to turn it
off. Our hopes is that if we make it easy to disable, but not too easy,
everyone will ultimately be able to get what they want, but we've gently
nudged everyone towards what we think is the best solution.
# Dynamic API
Originally posted on Ryan's Google+ account.
Background:
- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2,
but developers are shipping their own SDL2 with individual Steam games.
These games might stop getting updates, but a newer SDL2 might be needed later.
Certainly we'll always be fixing bugs in SDL, even if a new video target isn't
ever needed, and these fixes won't make it to a game shipping its own SDL.
- Even if we replace the SDL2 in those games with a compatible one, that is to
say, edit a developer's Steam depot (yuck!), there are developers that are
statically linking SDL2 that we can't do this for. We can't even force the
dynamic loader to ignore their SDL2 in this case, of course.
- If you don't ship an SDL2 with the game in some form, people that disabled the
Steam Runtime, or just tried to run the game from the command line instead of
Steam might find themselves unable to run the game, due to a missing dependency.
- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target
generic Linux boxes that may or may not have SDL2 installed, you have to ship
the library or risk a total failure to launch. So now, you might have to have
a non-Steam build plus a Steam build (that is, one with and one without SDL2
included), which is inconvenient if you could have had one universal build
that works everywhere.
- We like the zlib license, but the biggest complaint from the open source
community about the license change is the static linking. The LGPL forced this
as a legal, not technical issue, but zlib doesn't care. Even those that aren't
concerned about the GNU freedoms found themselves solving the same problems:
swapping in a newer SDL to an older game often times can save the day.
Static linking stops this dead.
So here's what we did:
SDL now has, internally, a table of function pointers. So, this is what SDL_Init
now looks like:
```c
UInt32 SDL_Init(Uint32 flags)
{
return jump_table.SDL_Init(flags);
}
```
Except that is all done with a bunch of macro magic so we don't have to maintain
every one of these.
What is jump_table.SDL_init()? Eventually, that's a function pointer of the real
SDL_Init() that you've been calling all this time. But at startup, it looks more
like this:
```c
Uint32 SDL_Init_DEFAULT(Uint32 flags)
{
SDL_InitDynamicAPI();
return jump_table.SDL_Init(flags);
}
```
SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function
pointers, which means that this `_DEFAULT` function never gets called again.
First call to any SDL function sets the whole thing up.
So you might be asking, what was the value in that? Isn't this what the operating
system's dynamic loader was supposed to do for us? Yes, but now we've got this
level of indirection, we can do things like this:
```bash
export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0
./MyGameThatIsStaticallyLinkedToSDL2
```
And now, this game that is statically linked to SDL, can still be overridden
with a newer, or better, SDL. The statically linked one will only be used as
far as calling into the jump table in this case. But in cases where no override
is desired, the statically linked version will provide its own jump table,
and everyone is happy.
So now:
- Developers can statically link SDL, and users can still replace it.
(We'd still rather you ship a shared library, though!)
- Developers can ship an SDL with their game, Valve can override it for, say,
new features on SteamOS, or distros can override it for their own needs,
but it'll also just work in the default case.
- Developers can ship the same package to everyone (Humble Bundle, GOG, etc),
and it'll do the right thing.
- End users (and Valve) can update a game's SDL in almost any case,
to keep abandoned games running on newer platforms.
- Everyone develops with SDL exactly as they have been doing all along.
Same headers, same ABI. Just get the latest version to enable this magic.
A little more about SDL_InitDynamicAPI():
Internally, InitAPI does some locking to make sure everything waits until a
single thread initializes everything (although even SDL_CreateThread() goes
through here before spinning a thread, too), and then decides if it should use
an external SDL library. If not, it sets up the jump table using the current
SDL's function pointers (which might be statically linked into a program, or in
a shared library of its own). If so, it loads that library and looks for and
calls a single function:
```c
SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize);
```
That function takes a version number (more on that in a moment), the address of
the jump table, and the size, in bytes, of the table.
Now, we've got policy here: this table's layout never changes; new stuff gets
added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all
the needed functions if tablesize <= sizeof its own jump table. If tablesize is
bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but
if it's smaller, we know we can provide the entire API that the caller needs.
The version variable is a failsafe switch.
Right now it's always 1. This number changes when there are major API changes
(so we know if the tablesize might be smaller, or entries in it have changed).
Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not
inconceivable to have a small dispatch library that only supplies this one
function and loads different, otherwise-incompatible SDL libraries and has the
right one initialize the jump table based on the version. For something that
must generically catch lots of different versions of SDL over time, like the
Steam Client, this isn't a bad option.
Finally, I'm sure some people are reading this and thinking,
"I don't want that overhead in my project!"
To which I would point out that the extra function call through the jump table
probably wouldn't even show up in a profile, but lucky you: this can all be
disabled. You can build SDL without this if you absolutely must, but we would
encourage you not to do that. However, on heavily locked down platforms like
iOS, or maybe when debugging, it makes sense to disable it. The way this is
designed in SDL, you just have to change one #define, and the entire system
vaporizes out, and SDL functions exactly like it always did. Most of it is
macro magic, so the system is contained to one C file and a few headers.
However, this is on by default and you have to edit a header file to turn it
off. Our hopes is that if we make it easy to disable, but not too easy,
everyone will ultimately be able to get what they want, but we've gently
nudged everyone towards what we think is the best solution.
+76 -374
View File
@@ -1,374 +1,76 @@
# Emscripten
## The state of things
(As of September 2023, but things move quickly and we don't update this
document often.)
In modern times, all the browsers you probably care about (Chrome, Firefox,
Edge, and Safari, on Windows, macOS, Linux, iOS and Android), support some
reasonable base configurations:
- WebAssembly (don't bother with asm.js any more)
- WebGL (which will look like OpenGL ES 2 or 3 to your app).
- Threads (see caveats, though!)
- Game controllers
- Autoupdating (so you can assume they have a recent version of the browser)
All this to say we're at the point where you don't have to make a lot of
concessions to get even a fairly complex SDL-based game up and running.
## RTFM
This document is a quick rundown of some high-level details. The
documentation at [emscripten.org](https://emscripten.org/) is vast
and extremely detailed for a wide variety of topics, and you should at
least skim through it at some point.
## Porting your app to Emscripten
Many many things just need some simple adjustments and they'll compile
like any other C/C++ code, as long as SDL was handling the platform-specific
work for your program.
First, you probably need this in at least one of your source files:
```c
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
```
Second: assembly language code has to go. Replace it with C. You can even use
[x86 SIMD intrinsic functions in Emscripten](https://emscripten.org/docs/porting/simd.html)!
Third: Middleware has to go. If you have a third-party library you link
against, you either need an Emscripten port of it, or the source code to it
to compile yourself, or you need to remove it.
Fourth: You still start in a function called main(), but you need to get out of
it and into a function that gets called repeatedly, and returns quickly,
called a mainloop.
Somewhere in your program, you probably have something that looks like a more
complicated version of this:
```c
void main(void)
{
initialize_the_game();
while (game_is_still_running) {
check_for_new_input();
think_about_stuff();
draw_the_next_frame();
}
deinitialize_the_game();
}
```
This will not work on Emscripten, because the main thread needs to be free
to do stuff and can't sit in this loop forever. So Emscripten lets you set up
a [mainloop](https://emscripten.org/docs/porting/emscripten-runtime-environment.html#browser-main-loop).
```c
static void mainloop(void) /* this will run often, possibly at the monitor's refresh rate */
{
if (!game_is_still_running) {
deinitialize_the_game();
#ifdef __EMSCRIPTEN__
emscripten_cancel_main_loop(); /* this should "kill" the app. */
#else
exit(0);
#endif
}
check_for_new_input();
think_about_stuff();
draw_the_next_frame();
}
void main(void)
{
initialize_the_game();
#ifdef __EMSCRIPTEN__
emscripten_set_main_loop(mainloop, 0, 1);
#else
while (1) { mainloop(); }
#endif
}
```
Basically, `emscripten_set_main_loop(mainloop, 0, 1);` says "run
`mainloop` over and over until I end the program." The function will
run, and return, freeing the main thread for other tasks, and then
run again when it's time. The `1` parameter does some magic to make
your main() function end immediately; this is useful because you
don't want any shutdown code that might be sitting below this code
to actually run if main() were to continue on, since we're just
getting started.
There's a lot of little details that are beyond the scope of this
document, but that's the biggest intial set of hurdles to porting
your app to the web.
## Do you need threads?
If you plan to use threads, they work on all major browsers now. HOWEVER,
they bring with them a lot of careful considerations. Rendering _must_
be done on the main thread. This is a general guideline for many
platforms, but a hard requirement on the web.
Many other things also must happen on the main thread; often times SDL
and Emscripten make efforts to "proxy" work to the main thread that
must be there, but you have to be careful (and read more detailed
documentation than this for the finer points).
Even when using threads, your main thread needs to set an Emscripten
mainloop that runs quickly and returns, or things will fail to work
correctly.
You should definitely read [Emscripten's pthreads docs](https://emscripten.org/docs/porting/pthreads.html)
for all the finer points. Mostly SDL's thread API will work as expected,
but is built on pthreads, so it shares the same little incompatibilities
that are documented there, such as where you can use a mutex, and when
a thread will start running, etc.
IMPORTANT: You have to decide to either build something that uses
threads or something that doesn't; you can't have one build
that works everywhere. This is an Emscripten (or maybe WebAssembly?
Or just web browsers in general?) limitation. If you aren't using
threads, it's easier to not enable them at all, at build time.
If you use threads, you _have to_ run from a web server that has
[COOP/COEP headers set correctly](https://web.dev/why-coop-coep/)
or your program will fail to start at all.
If building with threads, `__EMSCRIPTEN_PTHREADS__` will be defined
for checking with the C preprocessor, so you can build something
different depending on what sort of build you're compiling.
## Audio
Audio works as expected at the API level, but not exactly like other
platforms.
You'll only see a single default audio device. Audio capture also works;
if the browser pops up a prompt to ask for permission to access the
microphone, the SDL_OpenAudioDevice call will succeed and start producing
silence at a regular interval. Once the user approves the request, real
audio data will flow. If the user denies it, the app is not informed and
will just continue to receive silence.
Modern web browsers will not permit web pages to produce sound before the
user has interacted with them (clicked or tapped on them, usually); this is
for several reasons, not the least of which being that no one likes when a
random browser tab suddenly starts making noise and the user has to scramble
to figure out which and silence it.
SDL will allow you to open the audio device for playback in this
circumstance, and your audio callback will fire, but SDL will throw the audio
data away until the user interacts with the page. This helps apps that depend
on the audio callback to make progress, and also keeps audio playback in sync
once the app is finally allowed to make noise.
There are two reasonable ways to deal with the silence at the app level:
if you are writing some sort of media player thing, where the user expects
there to be a volume control when you mouseover the canvas, just default
that control to a muted state; if the user clicks on the control to unmute
it, on this first click, open the audio device. This allows the media to
play at start, and the user can reasonably opt-in to listening.
Many games do not have this sort of UI, and are more rigid about starting
audio along with everything else at the start of the process. For these, your
best bet is to write a little Javascript that puts up a "Click here to play!"
UI, and upon the user clicking, remove that UI and then call the Emscripten
app's main() function. As far as the application knows, the audio device was
available to be opened as soon as the program started, and since this magic
happens in a little Javascript, you don't have to change your C/C++ code at
all to make it happen.
Please see the discussion at https://github.com/libsdl-org/SDL/issues/6385
for some Javascript code to steal for this approach.
## Rendering
If you use SDL's 2D render API, it will use GLES2 internally, which
Emscripten will turn into WebGL calls. You can also use OpenGL ES 2
directly by creating a GL context and drawing into it.
Calling SDL_RenderPresent (or SDL_GL_SwapWindow) will not actually
present anything on the screen until your return from your mainloop
function.
## Building SDL/emscripten
First: do you _really_ need to build SDL from source?
If you aren't developing SDL itself, have a desire to mess with its source
code, or need something on the bleeding edge, don't build SDL. Just use
Emscripten's packaged version!
Compile and link your app with `-sUSE_SDL=2` and it'll use a build of
SDL packaged with Emscripten. This comes from the same source code and
fixes the Emscripten project makes to SDL are generally merged into SDL's
revision control, so often this is much easier for app developers.
`-sUSE_SDL=1` will select Emscripten's JavaScript reimplementation of SDL
1.2 instead; if you need SDL 1.2, this might be fine, but we generally
recommend you don't use SDL 1.2 in modern times.
If you want to build SDL, though...
SDL currently requires at least Emscripten 3.1.35 to build. Newer versions
are likely to work, as well.
Build:
This works on Linux/Unix and macOS. Please send comments about Windows.
Make sure you've [installed emsdk](https://emscripten.org/docs/getting_started/downloads.html)
first, and run `source emsdk_env.sh` at the command line so it finds the
tools.
(These configure options might be overkill, but this has worked for me.)
```bash
cd SDL
mkdir build
cd build
emconfigure ../configure --host=wasm32-unknown-emscripten --disable-pthreads --disable-assembly --disable-cpuinfo CFLAGS="-sUSE_SDL=0 -O3"
emmake make -j4
```
If you want to build with thread support, something like this works:
```bash
emconfigure ../configure --host=wasm32-unknown-emscripten --enable-pthreads --disable-assembly --disable-cpuinfo CFLAGS="-sUSE_SDL=0 -O3 -pthread" LDFLAGS="-pthread"
```
Or with cmake:
```bash
mkdir build
cd build
emcmake cmake ..
emmake make -j4
```
To build one of the tests:
```bash
cd test/
emcc -O2 --js-opts 0 -g4 testdraw2.c -I../include ../build/.libs/libSDL2.a ../build/libSDL2_test.a -o a.html
```
## Building your app
You need to compile with `emcc` instead of `gcc` or `clang` or whatever, but
mostly it uses the same command line arguments as Clang.
Link against the SDL/build/.libs/libSDL2.a file you generated by building SDL,
link with `-sUSE_SDL=2` to use Emscripten's prepackaged SDL2 build.
Usually you would produce a binary like this:
```bash
gcc -o mygame mygame.c # or whatever
```
But for Emscripten, you want to output something else:
```bash
emcc -o index.html mygame.c
```
This will produce several files...support Javascript and WebAssembly (.wasm)
files. The `-o index.html` will produce a simple HTML page that loads and
runs your app. You will (probably) eventually want to replace or customize
that file and do `-o index.js` instead to just build the code pieces.
If you're working on a program of any serious size, you'll likely need to
link with `-sALLOW_MEMORY_GROWTH=1 -sMAXIMUM_MEMORY=1gb` to get access
to more memory. If using pthreads, you'll need the `-sMAXIMUM_MEMORY=1gb`
or the app will fail to start on iOS browsers, but this might be a bug that
goes away in the future.
## Data files
Your game probably has data files. Here's how to access them.
Filesystem access works like a Unix filesystem; you have a single directory
tree, possibly interpolated from several mounted locations, no drive letters,
'/' for a path separator. You can access them with standard file APIs like
open() or fopen() or SDL_RWops. You can read or write from the filesystem.
By default, you probably have a "MEMFS" filesystem (all files are stored in
memory, but access to them is immediate and doesn't need to block). There are
other options, like "IDBFS" (files are stored in a local database, so they
don't need to be in RAM all the time and they can persist between runs of the
program, but access is not synchronous). You can mix and match these file
systems, mounting a MEMFS filesystem at one place and idbfs elsewhere, etc,
but that's beyond the scope of this document. Please refer to Emscripten's
[page on the topic](https://emscripten.org/docs/porting/files/file_systems_overview.html)
for more info.
The _easiest_ (but not the best) way to get at your data files is to embed
them in the app itself. Emscripten's linker has support for automating this.
```bash
emcc -o index.html loopwave.c --embed-file=../test/sample.wav@/sounds/sample.wav
```
This will pack ../test/sample.wav in your app, and make it available at
"/sounds/sample.wav" at runtime. Emscripten makes sure this data is available
before your main() function runs, and since it's in MEMFS, you can just
read it like you do on other platforms. `--embed-file` can also accept a
directory to pack an entire tree, and you can specify the argument multiple
times to pack unrelated things into the final installation.
Note that this is absolutely the best approach if you have a few small
files to include and shouldn't worry about the issue further. However, if you
have hundreds of megabytes and/or thousands of files, this is not so great,
since the user will download it all every time they load your page, and it
all has to live in memory at runtime.
[Emscripten's documentation on the matter](https://emscripten.org/docs/porting/files/packaging_files.html)
gives other options and details, and is worth a read.
## Debugging
Debugging web apps is a mixed bag. You should compile and link with
`-gsource-map`, which embeds a ton of source-level debugging information into
the build, and make sure _the app source code is available on the web server_,
which is often a scary proposition for various reasons.
When you debug from the browser's tools and hit a breakpoint, you can step
through the actual C/C++ source code, though, which can be nice.
If you try debugging in Firefox and it doesn't work well for no apparent
reason, try Chrome, and vice-versa. These tools are still relatively new,
and improving all the time.
SDL_Log() (or even plain old printf) will write to the Javascript console,
and honestly I find printf-style debugging to be easier than setting up a build
for proper debugging, so use whatever tools work best for you.
## Questions?
Please give us feedback on this document at [the SDL bug tracker](https://github.com/libsdl-org/SDL/issues).
If something is wrong or unclear, we want to know!
# Emscripten
(This documentation is not very robust; we will update and expand this later.)
## A quick note about audio
Modern web browsers will not permit web pages to produce sound before the
user has interacted with them; this is for several reasons, not the least
of which being that no one likes when a random browser tab suddenly starts
making noise and the user has to scramble to figure out which and silence
it.
To solve this, most browsers will refuse to let a web app use the audio
subsystem at all before the user has interacted with (clicked on) the page
in a meaningful way. SDL-based apps also have to deal with this problem; if
the user hasn't interacted with the page, SDL_OpenAudioDevice will fail.
There are two reasonable ways to deal with this: if you are writing some
sort of media player thing, where the user expects there to be a volume
control when you mouseover the canvas, just default that control to a muted
state; if the user clicks on the control to unmute it, on this first click,
open the audio device. This allows the media to play at start, the user can
reasonably opt-in to listening, and you never get access denied to the audio
device.
Many games do not have this sort of UI, and are more rigid about starting
audio along with everything else at the start of the process. For these, your
best bet is to write a little Javascript that puts up a "Click here to play!"
UI, and upon the user clicking, remove that UI and then call the Emscripten
app's main() function. As far as the application knows, the audio device was
available to be opened as soon as the program started, and since this magic
happens in a little Javascript, you don't have to change your C/C++ code at
all to make it happen.
Please see the discussion at https://github.com/libsdl-org/SDL/issues/6385
for some Javascript code to steal for this approach.
## Building SDL/emscripten
SDL currently requires at least Emscripten 3.1.35 to build. Newer versions
are likely to work, as well.
Build:
$ mkdir build
$ cd build
$ emconfigure ../configure --host=asmjs-unknown-emscripten --disable-assembly --disable-threads --disable-cpuinfo CFLAGS="-O2"
$ emmake make
Or with cmake:
$ mkdir build
$ cd build
$ emcmake cmake ..
$ emmake make
To build one of the tests:
$ cd test/
$ emcc -O2 --js-opts 0 -g4 testdraw2.c -I../include ../build/.libs/libSDL2.a ../build/libSDL2_test.a -o a.html
Uses GLES2 renderer or software
Some other SDL2 libraries can be easily built (assuming SDL2 is installed somewhere):
SDL_mixer (http://www.libsdl.org/projects/SDL_mixer/):
$ EMCONFIGURE_JS=1 emconfigure ../configure
build as usual...
SDL_gfx (http://cms.ferzkopp.net/index.php/software/13-sdl-gfx):
$ EMCONFIGURE_JS=1 emconfigure ../configure --disable-mmx
build as usual...
+155 -176
View File
@@ -1,176 +1,155 @@
GDK
=====
This port allows SDL applications to run via Microsoft's Game Development Kit (GDK).
Windows (GDK) and Xbox One/Xbox Series (GDKX) are both supported and all the required code is included in this public SDL release. However, only licensed Xbox developers have access to the GDKX libraries which will allow you to build the Xbox targets.
Requirements
------------
* Microsoft Visual Studio 2022 (in theory, it should also work in 2017 or 2019, but this has not been tested)
* Microsoft GDK June 2022 or newer (public release [here](https://github.com/microsoft/GDK/releases/tag/June_2022))
* For Xbox, you will need the corresponding GDKX version (licensed developers only)
* To publish a package or successfully authenticate a user, you will need to create an app id/configure services in Partner Center. However, for local testing purposes (without authenticating on Xbox Live), the identifiers used by the GDK test programs in the included solution will work.
Windows GDK Status
------
The Windows GDK port supports the full set of Win32 APIs, renderers, controllers, input devices, etc., as the normal Windows x64 build of SDL.
* Additionally, the GDK port adds the following:
* Compile-time platform detection for SDL programs. The `__GDK__` is `#define`d on every GDK platform, and the `__WINGDK__` is `#define`d on Windows GDK, specifically. (This distinction exists because other GDK platforms support a smaller subset of functionality. This allows you to mark code for "any" GDK separate from Windows GDK.)
* GDK-specific setup:
* Initializing/uninitializing the game runtime, and initializing Xbox Live services
* Creating a global task queue and setting it as the default for the process. When running any async operations, passing in `NULL` as the task queue will make the task get added to the global task queue.
* An implementation on `WinMain` that performs the above GDK setup (you should link against SDL2main.lib, as in Windows x64). If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
* Global task queue callbacks are dispatched during `SDL_PumpEvents` (which is also called internally if using `SDL_PollEvent`).
* You can get the handle of the global task queue through `SDL_GDKGetTaskQueue`, if needed. When done with the queue, be sure to use `XTaskQueueCloseHandle` to decrement the reference count (otherwise it will cause a resource leak).
* Single-player games have some additional features available:
* Call `SDL_GDKGetDefaultUser` to get the default XUserHandle pointer.
* `SDL_GetPrefPath` still works, but only for single-player titles.
These functions mostly wrap around async APIs, and thus should be treated as synchronous alternatives. Also note that the single-player functions return on any OS errors, so be sure to validate the return values!
* What doesn't work:
* Compilation with anything other than through the included Visual C++ solution file
## VisualC-GDK Solution
The included `VisualC-GDK/SDL.sln` solution includes the following targets for the Gaming.Desktop.x64 configuration:
* SDL2 (DLL) - This is the typical SDL2.dll, but for Gaming.Desktop.x64.
* SDL2main (lib) - This contains a drop-in implementation of `WinMain` that is used as the entry point for GDK programs.
* tests/testgamecontroller - Standard SDL test program demonstrating controller functionality.
* tests/testgdk - GDK-specific test program that demonstrates using the global task queue to login a user into Xbox Live.
*NOTE*: As of the June 2022 GDK, you cannot test user logins without a valid Title ID and MSAAppId. You will need to manually change the identifiers in the `MicrosoftGame.config` to your valid IDs from Partner Center if you wish to test this.
* tests/testsprite2 - Standard SDL test program demonstrating sprite drawing functionality.
If you set one of the test programs as a startup project, you can run it directly from Visual Studio.
Windows GDK Setup, Detailed Steps
---------------------
These steps assume you already have a game using SDL that runs on Windows x64 along with a corresponding Visual Studio solution file for the x64 version. If you don't have this, it's easiest to use one of the test program vcxproj files in the `VisualC-GDK` directory as a starting point, though you will still need to do most of the steps below.
### 1. Add a Gaming.Desktop.x64 Configuration ###
In your game's existing Visual Studio Solution, go to Build > Configuration Manager. From the "Active solution platform" drop-down select "New...". From the drop-down list, select Gaming.Desktop.x64 and copy the settings from the x64 configuration.
### 2. Build SDL2 and SDL2main for GDK ###
Open `VisualC-GDK/SDL.sln` in Visual Studio, you need to build the SDL2 and SDL2main targets for the Gaming.Desktop.x64 platform (Release is recommended). You will need to copy/keep track of the `SDL2.dll`, `XCurl.dll` (which is output by Gaming.Desktop.x64), `SDL2.lib`, and `SDL2main.lib` output files for your game project.
*Alternatively*, you could setup your solution file to instead reference the SDL2/SDL2main project file targets from the SDL source, and add those projects as a dependency. This would mean that SDL2 and SDL2main would both be built when your game is built.
### 3. Configuring Project Settings ###
While the Gaming.Desktop.x64 configuration sets most of the required settings, there are some additional items to configure for your game project under the Gaming.Desktop.x64 Configuration:
* Under C/C++ > General > Additional Include Directories, make sure the `SDL/include` path is referenced
* Under Linker > General > Additional Library Directories, make sure to reference the path where the newly-built SDL2.lib and SDL2main.lib are
* Under Linker > Input > Additional Dependencies, you need the following:
* `SDL2.lib`
* `SDL2main.lib` (unless not using)
* `xgameruntime.lib`
* `../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib`
* Note that in general, the GDK libraries depend on the MSVC C/C++ runtime, so there is no way to remove this dependency from a GDK program that links against GDK.
### 4. Setting up SDL_main ###
Rather than using your own implementation of `WinMain`, it's recommended that you instead `#include "SDL_main.h"` and declare a standard main function. If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
### 5. Required DLLs ###
The game will not launch in the debugger unless required DLLs are included in the directory that contains the game's .exe file. You need to make sure that the following files are copied into the directory:
* Your SDL2.dll
* "$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll"
* XCurl.dll
You can either copy these in a post-build step, or you can add the dlls into the project and set its Configuration Properties > General > Item type to "Copy file," which will also copy them into the output directory.
### 6. Setting up MicrosoftGame.config ###
You can copy `VisualC-GDK/tests/testgdk/MicrosoftGame.config` and use that as a starting point in your project. Minimally, you will want to change the Executable Name attribute, the DefaultDisplayName, and the Description.
This file must be copied into the same directory as the game's .exe file. As with the DLLs, you can either use a post-build step or the "Copy file" item type.
For basic testing, you do not need to change anything else in `MicrosoftGame.config`. However, if you want to test any Xbox Live services (such as logging in users) _or_ publish a package, you will need to setup a Game app on Partner Center.
Then, you need to set the following values to the values from Partner Center:
* Identity tag - Name and Publisher attributes
* TitleId
* MSAAppId
### 7. Adding Required Logos
Several logo PNG files are required to be able to launch the game, even from the debugger. You can use the sample logos provided in `VisualC-GDK/logos`. As with the other files, they must be copied into the same directory as the game's .exe file.
### 8. Copying any Data Files ###
When debugging GDK games, there is no way to specify a working directory. Therefore, any required game data must also be copied into the output directory, likely in a post-build step.
### 9. Build and Run from Visual Studio ###
At this point, you should be able to build and run your game from the Visual Studio Debugger. If you get any linker errors, make sure you double-check that you referenced all the required libs.
If you are testing Xbox Live functionality, it's likely you will need to change to the Sandbox for your title. To do this:
1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
2. Switch the sandbox name with:
`XblPCSandbox SANDBOX.#`
3. (To switch back to the retail sandbox):
`XblPCSandbox RETAIL`
### 10. Packaging and Installing Locally
You can use one of the test program's `PackageLayout.xml` as a starting point. Minimally, you will need to change the exe to the correct name and also reference any required game data. As with the other data files, it's easiest if you have this copy to the output directory, although it's not a requirement as you can specify relative paths to files.
To create the package:
1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
2. `cd` to the directory containing the `PackageLayout.xml` with the correct paths (if you use the local path as in the sample package layout, this would be from your .exe output directory)
3. `mkdir Package` to create an output directory
4. To package the file into the `Package` directory, use:
`makepkg pack /f PackageLayout.xml /lt /d . /nogameos /pc /pd Package`
5. To install the package, use:
`wdapp install PACKAGENAME.msixvc`
6. Once the package is installed, you can run it from the start menu.
7. As with when running from Visual Studio, if you need to test any Xbox Live functionality you must switch to the correct sandbox.
Xbox GDKX Setup
---------------------
In general, the same process in the Windows GDK instructions work. There are just a few additional notes:
* For Xbox One consoles, use the Gaming.Xbox.XboxOne.x64 target
* For Xbox Series consoles, use the Gaming.Xbox.Scarlett.x64 target
* The Xbox One target sets the `__XBOXONE__` define and the Xbox Series target sets the `__XBOXSERIES__` define
* You don't need to link against the Xbox.Services Thunks lib nor include that dll in your package (it doesn't exist for Xbox)
* The shader blobs for Xbox are created in a pre-build step for the Xbox targets, rather than included in the source (due to NDA and version compatability reasons)
* To create a package, use:
`makepkg pack /f PackageLayout.xml /lt /d . /pd Package`
* To install the package, use:
`xbapp install [PACKAGE].xvc`
* For some reason, if you make changes that require SDL2.dll to build, and you are running through the debugger (instead of a package), you have to rebuild your .exe target for the debugger to recognize the dll has changed and needs to be transferred to the console again
* While there are successful releases of Xbox titles using this port, it is not as extensively tested as other targets
Troubleshooting
---------------
#### Xbox Live Login does not work
As of June 2022 GDK, you must have a valid Title Id and MSAAppId in order to test Xbox Live functionality such as user login. Make sure these are set correctly in the `MicrosoftGame.config`. This means that even testgdk will not let you login without setting these properties to valid values.
Furthermore, confirm that your PC is set to the correct sandbox.
#### "The current user has already installed an unpackaged version of this app. A packaged version cannot replace this." error when installing
Prior to June 2022 GDK, running from the Visual Studio debugger would still locally register the app (and it would appear on the start menu). To fix this, you have to uninstall it (it's simplest to right click on it from the start menu to uninstall it).
GDK
=====
This port allows SDL applications to run via Microsoft's Game Development Kit (GDK).
Windows (GDK) and Xbox One/Xbox Series (GDKX) are supported. Although most of the Xbox code is included in the public SDL source code, NDA access is required for a small number of source files. If you have access to GDKX, these required Xbox files are posted on the GDK forums [here](https://forums.xboxlive.com/questions/130003/).
Requirements
------------
* Microsoft Visual Studio 2022 (in theory, it should also work in 2017 or 2019, but this has not been tested)
* Microsoft GDK June 2022 or newer (public release [here](https://github.com/microsoft/GDK/releases/tag/June_2022))
* To publish a package or successfully authenticate a user, you will need to create an app id/configure services in Partner Center. However, for local testing purposes (without authenticating on Xbox Live), the identifiers used by the GDK test programs in the included solution will work.
Windows GDK Status
------
The Windows GDK port supports the full set of Win32 APIs, renderers, controllers, input devices, etc., as the normal Windows x64 build of SDL.
* Additionally, the GDK port adds the following:
* Compile-time platform detection for SDL programs. The `__GDK__` is `#define`d on every GDK platform, and the `__WINGDK__` is `#define`d on Windows GDK, specifically. (This distinction exists because other GDK platforms support a smaller subset of functionality. This allows you to mark code for "any" GDK separate from Windows GDK.)
* GDK-specific setup:
* Initializing/uninitializing the game runtime, and initializing Xbox Live services
* Creating a global task queue and setting it as the default for the process. When running any async operations, passing in `NULL` as the task queue will make the task get added to the global task queue.
* An implementation on `WinMain` that performs the above GDK setup (you should link against SDL2main.lib, as in Windows x64). If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
* Global task queue callbacks are dispatched during `SDL_PumpEvents` (which is also called internally if using `SDL_PollEvent`).
* You can get the handle of the global task queue through `SDL_GDKGetTaskQueue`, if needed. When done with the queue, be sure to use `XTaskQueueCloseHandle` to decrement the reference count (otherwise it will cause a resource leak).
* What doesn't work:
* Compilation with anything other than through the included Visual C++ solution file
## VisualC-GDK Solution
The included `VisualC-GDK/SDL.sln` solution includes the following targets for the Gaming.Desktop.x64 configuration:
* SDL2 (DLL) - This is the typical SDL2.dll, but for Gaming.Desktop.x64.
* SDL2main (lib) - This contains a drop-in implementation of `WinMain` that is used as the entry point for GDK programs.
* tests/testgamecontroller - Standard SDL test program demonstrating controller functionality.
* tests/testgdk - GDK-specific test program that demonstrates using the global task queue to login a user into Xbox Live.
*NOTE*: As of the June 2022 GDK, you cannot test user logins without a valid Title ID and MSAAppId. You will need to manually change the identifiers in the `MicrosoftGame.config` to your valid IDs from Partner Center if you wish to test this.
* tests/testsprite2 - Standard SDL test program demonstrating sprite drawing functionality.
If you set one of the test programs as a startup project, you can run it directly from Visual Studio.
Windows GDK Setup, Detailed Steps
---------------------
These steps assume you already have a game using SDL that runs on Windows x64 along with a corresponding Visual Studio solution file for the x64 version. If you don't have this, it's easiest to use one of the test program vcxproj files in the `VisualC-GDK` directory as a starting point, though you will still need to do most of the steps below.
### 1. Add a Gaming.Desktop.x64 Configuration ###
In your game's existing Visual Studio Solution, go to Build > Configuration Manager. From the "Active solution platform" drop-down select "New...". From the drop-down list, select Gaming.Desktop.x64 and copy the settings from the x64 configuration.
### 2. Build SDL2 and SDL2main for GDK ###
Open `VisualC-GDK/SDL.sln` in Visual Studio, you need to build the SDL2 and SDL2main targets for the Gaming.Desktop.x64 platform (Release is recommended). You will need to copy/keep track of the `SDL2.dll`, `XCurl.dll` (which is output by Gaming.Desktop.x64), `SDL2.lib`, and `SDL2main.lib` output files for your game project.
*Alternatively*, you could setup your solution file to instead reference the SDL2/SDL2main project file targets from the SDL source, and add those projects as a dependency. This would mean that SDL2 and SDL2main would both be built when your game is built.
### 3. Configuring Project Settings ###
While the Gaming.Desktop.x64 configuration sets most of the required settings, there are some additional items to configure for your game project under the Gaming.Desktop.x64 Configuration:
* Under C/C++ > General > Additional Include Directories, make sure the `SDL/include` path is referenced
* Under Linker > General > Additional Library Directories, make sure to reference the path where the newly-built SDL2.lib and SDL2main.lib are
* Under Linker > Input > Additional Dependencies, you need the following:
* `SDL2.lib`
* `SDL2main.lib` (unless not using)
* `xgameruntime.lib`
* `../Microsoft.Xbox.Services.141.GDK.C.Thunks.lib`
* Note that in general, the GDK libraries depend on the MSVC C/C++ runtime, so there is no way to remove this dependency from a GDK program that links against GDK.
### 4. Setting up SDL_main ###
Rather than using your own implementation of `WinMain`, it's recommended that you instead `#include "SDL_main.h"` and declare a standard main function. If you are unable to do this, you can instead manually call `SDL_GDKRunApp` from your entry point, passing in your `SDL_main` function and `NULL` as the parameters.
### 5. Required DLLs ###
The game will not launch in the debugger unless required DLLs are included in the directory that contains the game's .exe file. You need to make sure that the following files are copied into the directory:
* Your SDL2.dll
* "$(Console_GRDKExtLibRoot)Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\Lib\Release\Microsoft.Xbox.Services.141.GDK.C.Thunks.dll"
* XCurl.dll
You can either copy these in a post-build step, or you can add the dlls into the project and set its Configuration Properties > General > Item type to "Copy file," which will also copy them into the output directory.
### 6. Setting up MicrosoftGame.config ###
You can copy `VisualC-GDK/tests/testgdk/MicrosoftGame.config` and use that as a starting point in your project. Minimally, you will want to change the Executable Name attribute, the DefaultDisplayName, and the Description.
This file must be copied into the same directory as the game's .exe file. As with the DLLs, you can either use a post-build step or the "Copy file" item type.
For basic testing, you do not need to change anything else in `MicrosoftGame.config`. However, if you want to test any Xbox Live services (such as logging in users) _or_ publish a package, you will need to setup a Game app on Partner Center.
Then, you need to set the following values to the values from Partner Center:
* Identity tag - Name and Publisher attributes
* TitleId
* MSAAppId
### 7. Adding Required Logos
Several logo PNG files are required to be able to launch the game, even from the debugger. You can use the sample logos provided in `VisualC-GDK/logos`. As with the other files, they must be copied into the same directory as the game's .exe file.
### 8. Copying any Data Files ###
When debugging GDK games, there is no way to specify a working directory. Therefore, any required game data must also be copied into the output directory, likely in a post-build step.
### 9. Build and Run from Visual Studio ###
At this point, you should be able to build and run your game from the Visual Studio Debugger. If you get any linker errors, make sure you double-check that you referenced all the required libs.
If you are testing Xbox Live functionality, it's likely you will need to change to the Sandbox for your title. To do this:
1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
2. Switch the sandbox name with:
`XblPCSandbox SANDBOX.#`
3. (To switch back to the retail sandbox):
`XblPCSandbox RETAIL`
### 10. Packaging and Installing Locally
You can use one of the test program's `PackageLayout.xml` as a starting point. Minimally, you will need to change the exe to the correct name and also reference any required game data. As with the other data files, it's easiest if you have this copy to the output directory, although it's not a requirement as you can specify relative paths to files.
To create the package:
1. Run "Desktop VS 2022 Gaming Command Prompt" from the Start Menu
2. `cd` to the directory containing the `PackageLayout.xml` with the correct paths (if you use the local path as in the sample package layout, this would be from your .exe output directory)
3. `mkdir Package` to create an output directory
4. To package the file into the `Package` directory, use:
`makepkg pack /f PackageLayout.xml /lt /d . /nogameos /pc /pd Package`
5. To install the package, use:
`wdapp install PACKAGENAME.msixvc`
6. Once the package is installed, you can run it from the start menu.
7. As with when running from Visual Studio, if you need to test any Xbox Live functionality you must switch to the correct sandbox.
Troubleshooting
---------------
#### Xbox Live Login does not work
As of June 2022 GDK, you must have a valid Title Id and MSAAppId in order to test Xbox Live functionality such as user login. Make sure these are set correctly in the `MicrosoftGame.config`. This means that even testgdk will not let you login without setting these properties to valid values.
Furthermore, confirm that your PC is set to the correct sandbox.
#### "The current user has already installed an unpackaged version of this app. A packaged version cannot replace this." error when installing
Prior to June 2022 GDK, running from the Visual Studio debugger would still locally register the app (and it would appear on the start menu). To fix this, you have to uninstall it (it's simplest to right click on it from the start menu to uninstall it).
+71 -71
View File
@@ -1,71 +1,71 @@
Dollar Gestures
===========================================================================
SDL provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up.
Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID.
Recording:
----------
To begin recording on a touch device call:
SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices.
Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
A SDL_DOLLARRECORD event is a dgesture with the following fields:
* event.dgesture.touchId - the Id of the touch used to record the gesture.
* event.dgesture.gestureId - the unique id of the recorded gesture.
Performing:
-----------
As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields:
* event.dgesture.touchId - the Id of the touch which performed the gesture.
* event.dgesture.gestureId - the unique id of the closest gesture to the performed stroke.
* event.dgesture.error - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
* event.dgesture.numFingers - the number of fingers used to draw the stroke.
Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed).
Saving:
-------
To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored.
To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored.
Both functions return the number of gestures successfully saved.
Loading:
--------
To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file.
SDL_LoadDollarTemplates returns the number of templates successfully loaded.
===========================================================================
Multi Gestures
===========================================================================
SDL provides simple support for pinch/rotate/swipe gestures.
Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
* event.mgesture.touchId - the Id of the touch on which the gesture was performed.
* event.mgesture.x - the normalized x coordinate of the gesture. (0..1)
* event.mgesture.y - the normalized y coordinate of the gesture. (0..1)
* event.mgesture.dTheta - the amount that the fingers rotated during this motion.
* event.mgesture.dDist - the amount that the fingers pinched during this motion.
* event.mgesture.numFingers - the number of fingers used in the gesture.
===========================================================================
Notes
===========================================================================
For a complete example see test/testgesture.c
Please direct questions/comments to:
jim.tla+sdl_touch@gmail.com
Dollar Gestures
===========================================================================
SDL provides an implementation of the $1 gesture recognition system. This allows for recording, saving, loading, and performing single stroke gestures.
Gestures can be performed with any number of fingers (the centroid of the fingers must follow the path of the gesture), but the number of fingers must be constant (a finger cannot go down in the middle of a gesture). The path of a gesture is considered the path from the time when the final finger went down, to the first time any finger comes up.
Dollar gestures are assigned an Id based on a hash function. This is guaranteed to remain constant for a given gesture. There is a (small) chance that two different gestures will be assigned the same ID. In this case, simply re-recording one of the gestures should result in a different ID.
Recording:
----------
To begin recording on a touch device call:
SDL_RecordGesture(SDL_TouchID touchId), where touchId is the id of the touch device you wish to record on, or -1 to record on all connected devices.
Recording terminates as soon as a finger comes up. Recording is acknowledged by an SDL_DOLLARRECORD event.
A SDL_DOLLARRECORD event is a dgesture with the following fields:
* event.dgesture.touchId - the Id of the touch used to record the gesture.
* event.dgesture.gestureId - the unique id of the recorded gesture.
Performing:
-----------
As long as there is a dollar gesture assigned to a touch, every finger-up event will also cause an SDL_DOLLARGESTURE event with the following fields:
* event.dgesture.touchId - the Id of the touch which performed the gesture.
* event.dgesture.gestureId - the unique id of the closest gesture to the performed stroke.
* event.dgesture.error - the difference between the gesture template and the actual performed gesture. Lower error is a better match.
* event.dgesture.numFingers - the number of fingers used to draw the stroke.
Most programs will want to define an appropriate error threshold and check to be sure that the error of a gesture is not abnormally high (an indicator that no gesture was performed).
Saving:
-------
To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored.
To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored.
Both functions return the number of gestures successfully saved.
Loading:
--------
To load templates from a file, call SDL_LoadDollarTemplates(touchId,src) where touchId is the id of the touch to load to (or -1 to load to all touch devices), and src is an SDL_RWops pointer to a gesture save file.
SDL_LoadDollarTemplates returns the number of templates successfully loaded.
===========================================================================
Multi Gestures
===========================================================================
SDL provides simple support for pinch/rotate/swipe gestures.
Every time a finger is moved an SDL_MULTIGESTURE event is sent with the following fields:
* event.mgesture.touchId - the Id of the touch on which the gesture was performed.
* event.mgesture.x - the normalized x coordinate of the gesture. (0..1)
* event.mgesture.y - the normalized y coordinate of the gesture. (0..1)
* event.mgesture.dTheta - the amount that the fingers rotated during this motion.
* event.mgesture.dDist - the amount that the fingers pinched during this motion.
* event.mgesture.numFingers - the number of fingers used in the gesture.
===========================================================================
Notes
===========================================================================
For a complete example see test/testgesture.c
Please direct questions/comments to:
jim.tla+sdl_touch@gmail.com
+19 -19
View File
@@ -1,19 +1,19 @@
git
=========
The latest development version of SDL is available via git.
Git allows you to get up-to-the-minute fixes and enhancements;
as a developer works on a source tree, you can use "git" to mirror that
source tree instead of waiting for an official release. Please look
at the Git website ( https://git-scm.com/ ) for more
information on using git, where you can also download software for
macOS, Windows, and Unix systems.
git clone https://github.com/libsdl-org/SDL
If you are building SDL via configure, you will need to run autogen.sh
before running configure.
There is a web interface to the Git repository at:
http://github.com/libsdl-org/SDL/
git
=========
The latest development version of SDL is available via git.
Git allows you to get up-to-the-minute fixes and enhancements;
as a developer works on a source tree, you can use "git" to mirror that
source tree instead of waiting for an official release. Please look
at the Git website ( https://git-scm.com/ ) for more
information on using git, where you can also download software for
macOS, Windows, and Unix systems.
git clone https://github.com/libsdl-org/SDL
If you are building SDL via configure, you will need to run autogen.sh
before running configure.
There is a web interface to the Git repository at:
http://github.com/libsdl-org/SDL/
+4 -4
View File
@@ -1,4 +1,4 @@
We are no longer hosted in Mercurial. Please see README-git.md for details.
Thanks!
We are no longer hosted in Mercurial. Please see README-git.md for details.
Thanks!
+307 -307
View File
@@ -1,307 +1,307 @@
iOS
======
Building the Simple DirectMedia Layer for iOS 9.0+
==============================================================================
Requirements: Mac OS X 10.9 or later and the iOS 9.0 or newer SDK.
Instructions:
1. Open SDL.xcodeproj (located in Xcode/SDL) in Xcode.
2. Select your desired target, and hit build.
Using the Simple DirectMedia Layer for iOS
==============================================================================
1. Run Xcode and create a new project using the iOS Game template, selecting the Objective C language and Metal game technology.
2. In the main view, delete all files except for Assets and LaunchScreen
3. Right click the project in the main view, select "Add Files...", and add the SDL project, Xcode/SDL/SDL.xcodeproj
4. Select the project in the main view, go to the "Info" tab and under "Custom iOS Target Properties" remove the line "Main storyboard file base name"
5. Select the project in the main view, go to the "Build Settings" tab, select "All", and edit "Header Search Path" and drag over the SDL "Public Headers" folder from the left
6. Select the project in the main view, go to the "Build Phases" tab, select "Link Binary With Libraries", and add SDL2.framework from "Framework-iOS"
7. Select the project in the main view, go to the "General" tab, scroll down to "Frameworks, Libraries, and Embedded Content", and select "Embed & Sign" for the SDL library.
8. In the main view, expand SDL -> Library Source -> main -> uikit and drag SDL_uikit_main.c into your game files
9. Add the source files that you would normally have for an SDL program, making sure to have #include "SDL.h" at the top of the file containing your main() function.
10. Add any assets that your application needs.
11. Enjoy!
TODO: Add information regarding App Store requirements such as icons, etc.
Notes -- Retina / High-DPI and window sizes
==============================================================================
Window and display mode sizes in SDL are in "screen coordinates" (or "points",
in Apple's terminology) rather than in pixels. On iOS this means that a window
created on an iPhone 6 will have a size in screen coordinates of 375 x 667,
rather than a size in pixels of 750 x 1334. All iOS apps are expected to
size their content based on screen coordinates / points rather than pixels,
as this allows different iOS devices to have different pixel densities
(Retina versus non-Retina screens, etc.) without apps caring too much.
By default SDL will not use the full pixel density of the screen on
Retina/high-dpi capable devices. Use the SDL_WINDOW_ALLOW_HIGHDPI flag when
creating your window to enable high-dpi support.
When high-dpi support is enabled, SDL_GetWindowSize() and display mode sizes
will still be in "screen coordinates" rather than pixels, but the window will
have a much greater pixel density when the device supports it, and the
SDL_GL_GetDrawableSize() or SDL_GetRendererOutputSize() functions (depending on
whether raw OpenGL or the SDL_Render API is used) can be queried to determine
the size in pixels of the drawable screen framebuffer.
Some OpenGL ES functions such as glViewport expect sizes in pixels rather than
sizes in screen coordinates. When doing 2D rendering with OpenGL ES, an
orthographic projection matrix using the size in screen coordinates
(SDL_GetWindowSize()) can be used in order to display content at the same scale
no matter whether a Retina device is used or not.
Notes -- Application events
==============================================================================
On iOS the application goes through a fixed life cycle and you will get
notifications of state changes via application events. When these events
are delivered you must handle them in an event callback because the OS may
not give you any processing time after the events are delivered.
e.g.
int HandleAppEvents(void *userdata, SDL_Event *event)
{
switch (event->type)
{
case SDL_APP_TERMINATING:
/* Terminate the app.
Shut everything down before returning from this function.
*/
return 0;
case SDL_APP_LOWMEMORY:
/* You will get this when your app is paused and iOS wants more memory.
Release as much memory as possible.
*/
return 0;
case SDL_APP_WILLENTERBACKGROUND:
/* Prepare your app to go into the background. Stop loops, etc.
This gets called when the user hits the home button, or gets a call.
*/
return 0;
case SDL_APP_DIDENTERBACKGROUND:
/* This will get called if the user accepted whatever sent your app to the background.
If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
When you get this, you have 5 seconds to save all your state or the app will be terminated.
Your app is NOT active at this point.
*/
return 0;
case SDL_APP_WILLENTERFOREGROUND:
/* This call happens when your app is coming back to the foreground.
Restore all your state here.
*/
return 0;
case SDL_APP_DIDENTERFOREGROUND:
/* Restart your loops here.
Your app is interactive and getting CPU again.
*/
return 0;
default:
/* No special processing, add it to the event queue */
return 1;
}
}
int main(int argc, char *argv[])
{
SDL_SetEventFilter(HandleAppEvents, NULL);
... run your main loop
return 0;
}
Notes -- Accelerometer as Joystick
==============================================================================
SDL for iPhone supports polling the built in accelerometer as a joystick device. For an example on how to do this, see the accelerometer.c in the demos directory.
The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis() reports joystick values as signed integers. Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver. To convert SDL_JoystickGetAxis() reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
Notes -- OpenGL ES
==============================================================================
Your SDL application for iOS uses OpenGL ES for video by default.
OpenGL ES for iOS supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively. By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute().
If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 0.
OpenGL ES on iOS doesn't use the traditional system-framebuffer setup provided in other operating systems. Special care must be taken because of this:
- The drawable Renderbuffer must be bound to the GL_RENDERBUFFER binding point when SDL_GL_SwapWindow() is called.
- The drawable Framebuffer Object must be bound while rendering to the screen and when SDL_GL_SwapWindow() is called.
- If multisample antialiasing (MSAA) is used and glReadPixels is used on the screen, the drawable framebuffer must be resolved to the MSAA resolve framebuffer (via glBlitFramebuffer or glResolveMultisampleFramebufferAPPLE), and the MSAA resolve framebuffer must be bound to the GL_READ_FRAMEBUFFER binding point, before glReadPixels is called.
The above objects can be obtained via SDL_GetWindowWMInfo() (in SDL_syswm.h).
Notes -- Keyboard
==============================================================================
The SDL keyboard API has been extended to support on-screen keyboards:
void SDL_StartTextInput()
-- enables text events and reveals the onscreen keyboard.
void SDL_StopTextInput()
-- disables text events and hides the onscreen keyboard.
SDL_bool SDL_IsTextInputActive()
-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
Notes -- Mouse
==============================================================================
iOS now supports Bluetooth mice on iPad, but by default will provide the mouse input as touch. In order for SDL to see the real mouse events, you should set the key UIApplicationSupportsIndirectInputEvents to true in your Info.plist
Notes -- Reading and Writing files
==============================================================================
Each application installed on iPhone resides in a sandbox which includes its own Application Home directory. Your application may not access files outside this directory.
Once your application is installed its directory tree looks like:
MySDLApp Home/
MySDLApp.app
Documents/
Library/
Preferences/
tmp/
When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored. You cannot write to this directory. Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences".
More information on this subject is available here:
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
Notes -- xcFramework
==============================================================================
The SDL.xcodeproj file now includes a target to build SDL2.xcframework. An xcframework is a new (Xcode 11) uber-framework which can handle any combination of processor type and target OS platform.
In the past, iOS devices were always an ARM variant processor, and the simulator was always i386 or x86_64, and thus libraries could be combined into a single framework for both simulator and device. With the introduction of the Apple Silicon ARM-based machines, regular frameworks would collide as CPU type was no longer sufficient to differentiate the platform. So Apple created the new xcframework library package.
The xcframework target builds into a Products directory alongside the SDL.xcodeproj file, as SDL2.xcframework. This can be brought in to any iOS project and will function properly for both simulator and device, no matter their CPUs. Note that Intel Macs cannot cross-compile for Apple Silicon Macs. If you need AS compatibility, perform this build on an Apple Silicon Mac.
This target requires Xcode 11 or later. The target will simply fail to build if attempted on older Xcodes.
In addition, on Apple platforms, main() cannot be in a dynamically loaded library. This means that iOS apps which used the statically-linked libSDL2.lib and now link with the xcframwork will need to define their own main() to call SDL_UIKitRunApp(), like this:
#ifndef SDL_MAIN_HANDLED
#ifdef main
#undef main
#endif
int
main(int argc, char *argv[])
{
return SDL_UIKitRunApp(argc, argv, SDL_main);
}
#endif /* !SDL_MAIN_HANDLED */
Using an xcFramework is similar to using a regular framework. However, issues have been seen with the build system not seeing the headers in the xcFramework. To remedy this, add the path to the xcFramework in your app's target ==> Build Settings ==> Framework Search Paths and mark it recursive (this is critical). Also critical is to remove "*.framework" from Build Settings ==> Sub-Directories to Exclude in Recursive Searches. Clean the build folder, and on your next build the build system should be able to see any of these in your code, as expected:
#include "SDL_main.h"
#include <SDL.h>
#include <SDL_main.h>
Notes -- iPhone SDL limitations
==============================================================================
Windows:
Full-size, single window applications only. You cannot create multi-window SDL applications for iPhone OS. The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow() the flag SDL_WINDOW_BORDERLESS).
Textures:
The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
Loading Shared Objects:
This is disabled by default since it seems to break the terms of the iOS SDK agreement for iOS versions prior to iOS 8. It can be re-enabled in SDL_config_iphoneos.h.
Notes -- CoreBluetooth.framework
==============================================================================
SDL_JOYSTICK_HIDAPI is disabled by default. It can give you access to a lot
more game controller devices, but it requires permission from the user before
your app will be able to talk to the Bluetooth hardware. "Made For iOS"
branded controllers do not need this as we don't have to speak to them
directly with raw bluetooth, so many apps can live without this.
You'll need to link with CoreBluetooth.framework and add something like this
to your Info.plist:
<key>NSBluetoothPeripheralUsageDescription</key>
<string>MyApp would like to remain connected to nearby bluetooth Game Controllers and Game Pads even when you're not using the app.</string>
Game Center
==============================================================================
Game Center integration might require that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using:
int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run.
e.g.
extern "C"
void ShowFrame(void*)
{
... do event handling, frame logic and rendering ...
}
int main(int argc, char *argv[])
{
... initialize game ...
#ifdef __IPHONEOS__
// Initialize the Game Center for scoring and matchmaking
InitGameCenter();
// Set up the game to run in the window animation callback on iOS
// so that Game Center and so forth works correctly.
SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
#else
while ( running ) {
ShowFrame(0);
DelayFrame();
}
#endif
return 0;
}
Deploying to older versions of iOS
==============================================================================
SDL supports deploying to older versions of iOS than are supported by the latest version of Xcode, all the way back to iOS 8.0
In order to do that you need to download an older version of Xcode:
https://developer.apple.com/download/more/?name=Xcode
Open the package contents of the older Xcode and your newer version of Xcode and copy over the folders in Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Then open the file Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist and add the versions of iOS you want to deploy to the key Root/DefaultProperties/DEPLOYMENT_TARGET_SUGGESTED_VALUES
Open your project and set your deployment target to the desired version of iOS
Finally, remove GameController from the list of frameworks linked by your application and edit the build settings for "Other Linker Flags" and add -weak_framework GameController
iOS
======
Building the Simple DirectMedia Layer for iOS 9.0+
==============================================================================
Requirements: Mac OS X 10.9 or later and the iOS 9.0 or newer SDK.
Instructions:
1. Open SDL.xcodeproj (located in Xcode/SDL) in Xcode.
2. Select your desired target, and hit build.
Using the Simple DirectMedia Layer for iOS
==============================================================================
1. Run Xcode and create a new project using the iOS Game template, selecting the Objective C language and Metal game technology.
2. In the main view, delete all files except for Assets and LaunchScreen
3. Right click the project in the main view, select "Add Files...", and add the SDL project, Xcode/SDL/SDL.xcodeproj
4. Select the project in the main view, go to the "Info" tab and under "Custom iOS Target Properties" remove the line "Main storyboard file base name"
5. Select the project in the main view, go to the "Build Settings" tab, select "All", and edit "Header Search Path" and drag over the SDL "Public Headers" folder from the left
6. Select the project in the main view, go to the "Build Phases" tab, select "Link Binary With Libraries", and add SDL2.framework from "Framework-iOS"
7. Select the project in the main view, go to the "General" tab, scroll down to "Frameworks, Libraries, and Embedded Content", and select "Embed & Sign" for the SDL library.
8. In the main view, expand SDL -> Library Source -> main -> uikit and drag SDL_uikit_main.c into your game files
9. Add the source files that you would normally have for an SDL program, making sure to have #include "SDL.h" at the top of the file containing your main() function.
10. Add any assets that your application needs.
11. Enjoy!
TODO: Add information regarding App Store requirements such as icons, etc.
Notes -- Retina / High-DPI and window sizes
==============================================================================
Window and display mode sizes in SDL are in "screen coordinates" (or "points",
in Apple's terminology) rather than in pixels. On iOS this means that a window
created on an iPhone 6 will have a size in screen coordinates of 375 x 667,
rather than a size in pixels of 750 x 1334. All iOS apps are expected to
size their content based on screen coordinates / points rather than pixels,
as this allows different iOS devices to have different pixel densities
(Retina versus non-Retina screens, etc.) without apps caring too much.
By default SDL will not use the full pixel density of the screen on
Retina/high-dpi capable devices. Use the SDL_WINDOW_ALLOW_HIGHDPI flag when
creating your window to enable high-dpi support.
When high-dpi support is enabled, SDL_GetWindowSize() and display mode sizes
will still be in "screen coordinates" rather than pixels, but the window will
have a much greater pixel density when the device supports it, and the
SDL_GL_GetDrawableSize() or SDL_GetRendererOutputSize() functions (depending on
whether raw OpenGL or the SDL_Render API is used) can be queried to determine
the size in pixels of the drawable screen framebuffer.
Some OpenGL ES functions such as glViewport expect sizes in pixels rather than
sizes in screen coordinates. When doing 2D rendering with OpenGL ES, an
orthographic projection matrix using the size in screen coordinates
(SDL_GetWindowSize()) can be used in order to display content at the same scale
no matter whether a Retina device is used or not.
Notes -- Application events
==============================================================================
On iOS the application goes through a fixed life cycle and you will get
notifications of state changes via application events. When these events
are delivered you must handle them in an event callback because the OS may
not give you any processing time after the events are delivered.
e.g.
int HandleAppEvents(void *userdata, SDL_Event *event)
{
switch (event->type)
{
case SDL_APP_TERMINATING:
/* Terminate the app.
Shut everything down before returning from this function.
*/
return 0;
case SDL_APP_LOWMEMORY:
/* You will get this when your app is paused and iOS wants more memory.
Release as much memory as possible.
*/
return 0;
case SDL_APP_WILLENTERBACKGROUND:
/* Prepare your app to go into the background. Stop loops, etc.
This gets called when the user hits the home button, or gets a call.
*/
return 0;
case SDL_APP_DIDENTERBACKGROUND:
/* This will get called if the user accepted whatever sent your app to the background.
If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops.
When you get this, you have 5 seconds to save all your state or the app will be terminated.
Your app is NOT active at this point.
*/
return 0;
case SDL_APP_WILLENTERFOREGROUND:
/* This call happens when your app is coming back to the foreground.
Restore all your state here.
*/
return 0;
case SDL_APP_DIDENTERFOREGROUND:
/* Restart your loops here.
Your app is interactive and getting CPU again.
*/
return 0;
default:
/* No special processing, add it to the event queue */
return 1;
}
}
int main(int argc, char *argv[])
{
SDL_SetEventFilter(HandleAppEvents, NULL);
... run your main loop
return 0;
}
Notes -- Accelerometer as Joystick
==============================================================================
SDL for iPhone supports polling the built in accelerometer as a joystick device. For an example on how to do this, see the accelerometer.c in the demos directory.
The main thing to note when using the accelerometer with SDL is that while the iPhone natively reports accelerometer as floating point values in units of g-force, SDL_JoystickGetAxis() reports joystick values as signed integers. Hence, in order to convert between the two, some clamping and scaling is necessary on the part of the iPhone SDL joystick driver. To convert SDL_JoystickGetAxis() reported values BACK to units of g-force, simply multiply the values by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
Notes -- OpenGL ES
==============================================================================
Your SDL application for iOS uses OpenGL ES for video by default.
OpenGL ES for iOS supports several display pixel formats, such as RGBA8 and RGB565, which provide a 32 bit and 16 bit color buffer respectively. By default, the implementation uses RGB565, but you may use RGBA8 by setting each color component to 8 bits in SDL_GL_SetAttribute().
If your application doesn't use OpenGL's depth buffer, you may find significant performance improvement by setting SDL_GL_DEPTH_SIZE to 0.
Finally, if your application completely redraws the screen each frame, you may find significant performance improvement by setting the attribute SDL_GL_RETAINED_BACKING to 0.
OpenGL ES on iOS doesn't use the traditional system-framebuffer setup provided in other operating systems. Special care must be taken because of this:
- The drawable Renderbuffer must be bound to the GL_RENDERBUFFER binding point when SDL_GL_SwapWindow() is called.
- The drawable Framebuffer Object must be bound while rendering to the screen and when SDL_GL_SwapWindow() is called.
- If multisample antialiasing (MSAA) is used and glReadPixels is used on the screen, the drawable framebuffer must be resolved to the MSAA resolve framebuffer (via glBlitFramebuffer or glResolveMultisampleFramebufferAPPLE), and the MSAA resolve framebuffer must be bound to the GL_READ_FRAMEBUFFER binding point, before glReadPixels is called.
The above objects can be obtained via SDL_GetWindowWMInfo() (in SDL_syswm.h).
Notes -- Keyboard
==============================================================================
The SDL keyboard API has been extended to support on-screen keyboards:
void SDL_StartTextInput()
-- enables text events and reveals the onscreen keyboard.
void SDL_StopTextInput()
-- disables text events and hides the onscreen keyboard.
SDL_bool SDL_IsTextInputActive()
-- returns whether or not text events are enabled (and the onscreen keyboard is visible)
Notes -- Mouse
==============================================================================
iOS now supports Bluetooth mice on iPad, but by default will provide the mouse input as touch. In order for SDL to see the real mouse events, you should set the key UIApplicationSupportsIndirectInputEvents to true in your Info.plist
Notes -- Reading and Writing files
==============================================================================
Each application installed on iPhone resides in a sandbox which includes its own Application Home directory. Your application may not access files outside this directory.
Once your application is installed its directory tree looks like:
MySDLApp Home/
MySDLApp.app
Documents/
Library/
Preferences/
tmp/
When your SDL based iPhone application starts up, it sets the working directory to the main bundle (MySDLApp Home/MySDLApp.app), where your application resources are stored. You cannot write to this directory. Instead, I advise you to write document files to "../Documents/" and preferences to "../Library/Preferences".
More information on this subject is available here:
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html
Notes -- xcFramework
==============================================================================
The SDL.xcodeproj file now includes a target to build SDL2.xcframework. An xcframework is a new (Xcode 11) uber-framework which can handle any combination of processor type and target OS platform.
In the past, iOS devices were always an ARM variant processor, and the simulator was always i386 or x86_64, and thus libraries could be combined into a single framework for both simulator and device. With the introduction of the Apple Silicon ARM-based machines, regular frameworks would collide as CPU type was no longer sufficient to differentiate the platform. So Apple created the new xcframework library package.
The xcframework target builds into a Products directory alongside the SDL.xcodeproj file, as SDL2.xcframework. This can be brought in to any iOS project and will function properly for both simulator and device, no matter their CPUs. Note that Intel Macs cannot cross-compile for Apple Silicon Macs. If you need AS compatibility, perform this build on an Apple Silicon Mac.
This target requires Xcode 11 or later. The target will simply fail to build if attempted on older Xcodes.
In addition, on Apple platforms, main() cannot be in a dynamically loaded library. This means that iOS apps which used the statically-linked libSDL2.lib and now link with the xcframwork will need to define their own main() to call SDL_UIKitRunApp(), like this:
#ifndef SDL_MAIN_HANDLED
#ifdef main
#undef main
#endif
int
main(int argc, char *argv[])
{
return SDL_UIKitRunApp(argc, argv, SDL_main);
}
#endif /* !SDL_MAIN_HANDLED */
Using an xcFramework is similar to using a regular framework. However, issues have been seen with the build system not seeing the headers in the xcFramework. To remedy this, add the path to the xcFramework in your app's target ==> Build Settings ==> Framework Search Paths and mark it recursive (this is critical). Also critical is to remove "*.framework" from Build Settings ==> Sub-Directories to Exclude in Recursive Searches. Clean the build folder, and on your next build the build system should be able to see any of these in your code, as expected:
#include "SDL_main.h"
#include <SDL.h>
#include <SDL_main.h>
Notes -- iPhone SDL limitations
==============================================================================
Windows:
Full-size, single window applications only. You cannot create multi-window SDL applications for iPhone OS. The application window will fill the display, though you have the option of turning on or off the menu-bar (pass SDL_CreateWindow() the flag SDL_WINDOW_BORDERLESS).
Textures:
The optimal texture formats on iOS are SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_BGR888, and SDL_PIXELFORMAT_RGB24 pixel formats.
Loading Shared Objects:
This is disabled by default since it seems to break the terms of the iOS SDK agreement for iOS versions prior to iOS 8. It can be re-enabled in SDL_config_iphoneos.h.
Notes -- CoreBluetooth.framework
==============================================================================
SDL_JOYSTICK_HIDAPI is disabled by default. It can give you access to a lot
more game controller devices, but it requires permission from the user before
your app will be able to talk to the Bluetooth hardware. "Made For iOS"
branded controllers do not need this as we don't have to speak to them
directly with raw bluetooth, so many apps can live without this.
You'll need to link with CoreBluetooth.framework and add something like this
to your Info.plist:
<key>NSBluetoothPeripheralUsageDescription</key>
<string>MyApp would like to remain connected to nearby bluetooth Game Controllers and Game Pads even when you're not using the app.</string>
Game Center
==============================================================================
Game Center integration might require that you break up your main loop in order to yield control back to the system. In other words, instead of running an endless main loop, you run each frame in a callback function, using:
int SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
This will set up the given function to be called back on the animation callback, and then you have to return from main() to let the Cocoa event loop run.
e.g.
extern "C"
void ShowFrame(void*)
{
... do event handling, frame logic and rendering ...
}
int main(int argc, char *argv[])
{
... initialize game ...
#if __IPHONEOS__
// Initialize the Game Center for scoring and matchmaking
InitGameCenter();
// Set up the game to run in the window animation callback on iOS
// so that Game Center and so forth works correctly.
SDL_iPhoneSetAnimationCallback(window, 1, ShowFrame, NULL);
#else
while ( running ) {
ShowFrame(0);
DelayFrame();
}
#endif
return 0;
}
Deploying to older versions of iOS
==============================================================================
SDL supports deploying to older versions of iOS than are supported by the latest version of Xcode, all the way back to iOS 8.0
In order to do that you need to download an older version of Xcode:
https://developer.apple.com/download/more/?name=Xcode
Open the package contents of the older Xcode and your newer version of Xcode and copy over the folders in Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Then open the file Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/SDKSettings.plist and add the versions of iOS you want to deploy to the key Root/DefaultProperties/DEPLOYMENT_TARGET_SUGGESTED_VALUES
Open your project and set your deployment target to the desired version of iOS
Finally, remove GameController from the list of frameworks linked by your application and edit the build settings for "Other Linker Flags" and add -weak_framework GameController
+27 -27
View File
@@ -1,27 +1,27 @@
KMSDRM on *BSD
==================================================
KMSDRM is supported on FreeBSD and OpenBSD. DragonFlyBSD works but requires being a root user. NetBSD isn't supported yet because the application will crash when creating the KMSDRM screen.
WSCONS support has been brought back, but only as an input backend. It will not be brought back as a video backend to ease maintenance.
OpenBSD note: Note that the video backend assumes that the user has read/write permissions to the /dev/drm* devices.
SDL2 WSCONS input backend features
===================================================
1. It is keymap-aware; it will work properly with different keymaps.
2. It has mouse support.
3. Accent input is supported.
4. Compose keys are supported.
5. AltGr and Meta Shift keys work as intended.
Partially working or no input on OpenBSD/NetBSD.
==================================================
The WSCONS input backend needs read/write access to the /dev/wskbd* devices, without which it will not work properly. /dev/wsmouse must also be read/write accessible, otherwise mouse input will not work.
Partially working or no input on FreeBSD.
==================================================
The evdev devices are only accessible to the root user by default. Edit devfs rules to allow access to such devices. The /dev/kbd* devices are also only accessible to the root user by default. Edit devfs rules to allow access to such devices.
KMSDRM on *BSD
==================================================
KMSDRM is supported on FreeBSD and OpenBSD. DragonFlyBSD works but requires being a root user. NetBSD isn't supported yet because the application will crash when creating the KMSDRM screen.
WSCONS support has been brought back, but only as an input backend. It will not be brought back as a video backend to ease maintenance.
OpenBSD note: Note that the video backend assumes that the user has read/write permissions to the /dev/drm* devices.
SDL2 WSCONS input backend features
===================================================
1. It is keymap-aware; it will work properly with different keymaps.
2. It has mouse support.
3. Accent input is supported.
4. Compose keys are supported.
5. AltGr and Meta Shift keys work as intended.
Partially working or no input on OpenBSD/NetBSD.
==================================================
The WSCONS input backend needs read/write access to the /dev/wskbd* devices, without which it will not work properly. /dev/wsmouse must also be read/write accessible, otherwise mouse input will not work.
Partially working or no input on FreeBSD.
==================================================
The evdev devices are only accessible to the root user by default. Edit devfs rules to allow access to such devices. The /dev/kbd* devices are also only accessible to the root user by default. Edit devfs rules to allow access to such devices.
+96 -96
View File
@@ -1,96 +1,96 @@
Linux
================================================================================
By default SDL will only link against glibc, the rest of the features will be
enabled dynamically at runtime depending on the available features on the target
system. So, for example if you built SDL with XRandR support and the target
system does not have the XRandR libraries installed, it will be disabled
at runtime, and you won't get a missing library error, at least with the
default configuration parameters.
Build Dependencies
--------------------------------------------------------------------------------
Ubuntu 18.04, all available features enabled:
sudo apt-get install build-essential git make autoconf automake libtool \
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
Ubuntu 22.04+ can also add `libpipewire-0.3-dev libdecor-0-dev` to that command line.
Fedora 35, all available features enabled:
sudo yum install gcc git-core make cmake autoconf automake libtool \
alsa-lib-devel pulseaudio-libs-devel nas-devel pipewire-devel \
libX11-devel libXext-devel libXrandr-devel libXcursor-devel libXfixes-devel \
libXi-devel libXScrnSaver-devel dbus-devel ibus-devel fcitx-devel \
systemd-devel mesa-libGL-devel libxkbcommon-devel mesa-libGLES-devel \
mesa-libEGL-devel vulkan-devel wayland-devel wayland-protocols-devel \
libdrm-devel mesa-libgbm-devel libusb-devel libdecor-devel \
libsamplerate-devel pipewire-jack-audio-connection-kit-devel \
NOTES:
- This includes all the audio targets except arts and esd, because Ubuntu
(and/or Debian) pulled their packages, but in theory SDL still supports them.
The sndio audio target is also unavailable on Fedora.
- libsamplerate0-dev lets SDL optionally link to libresamplerate at runtime
for higher-quality audio resampling. SDL will work without it if the library
is missing, so it's safe to build in support even if the end user doesn't
have this library installed.
- DirectFB isn't included because the configure script (currently) fails to find
it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the
configure script to include DirectFB support. Send patches. :)
Joystick does not work
--------------------------------------------------------------------------------
If you compiled or are using a version of SDL with udev support (and you should!)
there's a few issues that may cause SDL to fail to detect your joystick. To
debug this, start by installing the evtest utility. On Ubuntu/Debian:
sudo apt-get install evtest
Then run:
sudo evtest
You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
Now run:
cat /dev/input/event/XX
If you get a permission error, you need to set a udev rule to change the mode of
your device (see below)
Also, try:
sudo udevadm info --query=all --name=input/eventXX
If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
you need to set up an udev rule to force this variable.
A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks
like:
SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
You can set up similar rules for your device by changing the values listed in
idProduct and idVendor. To obtain these values, try:
sudo udevadm info -a --name=input/eventXX | grep idVendor
sudo udevadm info -a --name=input/eventXX | grep idProduct
If multiple values come up for each of these, the one you want is the first one of each.
On other systems which ship with an older udev (such as CentOS), you may need
to set up a rule such as:
SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
Linux
================================================================================
By default SDL will only link against glibc, the rest of the features will be
enabled dynamically at runtime depending on the available features on the target
system. So, for example if you built SDL with XRandR support and the target
system does not have the XRandR libraries installed, it will be disabled
at runtime, and you won't get a missing library error, at least with the
default configuration parameters.
Build Dependencies
--------------------------------------------------------------------------------
Ubuntu 18.04, all available features enabled:
sudo apt-get install build-essential git make autoconf automake libtool \
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
libaudio-dev libjack-dev libsndio-dev libsamplerate0-dev libx11-dev libxext-dev \
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libwayland-dev \
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
Ubuntu 22.04+ can also add `libpipewire-0.3-dev libdecor-0-dev` to that command line.
Fedora 35, all available features enabled:
sudo yum install gcc git-core make cmake autoconf automake libtool \
alsa-lib-devel pulseaudio-libs-devel nas-devel pipewire-devel \
libX11-devel libXext-devel libXrandr-devel libXcursor-devel libXfixes-devel \
libXi-devel libXScrnSaver-devel dbus-devel ibus-devel fcitx-devel \
systemd-devel mesa-libGL-devel libxkbcommon-devel mesa-libGLES-devel \
mesa-libEGL-devel vulkan-devel wayland-devel wayland-protocols-devel \
libdrm-devel mesa-libgbm-devel libusb-devel libdecor-devel \
libsamplerate-devel pipewire-jack-audio-connection-kit-devel \
NOTES:
- This includes all the audio targets except arts and esd, because Ubuntu
(and/or Debian) pulled their packages, but in theory SDL still supports them.
The sndio audio target is also unavailable on Fedora.
- libsamplerate0-dev lets SDL optionally link to libresamplerate at runtime
for higher-quality audio resampling. SDL will work without it if the library
is missing, so it's safe to build in support even if the end user doesn't
have this library installed.
- DirectFB isn't included because the configure script (currently) fails to find
it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the
configure script to include DirectFB support. Send patches. :)
Joystick does not work
--------------------------------------------------------------------------------
If you compiled or are using a version of SDL with udev support (and you should!)
there's a few issues that may cause SDL to fail to detect your joystick. To
debug this, start by installing the evtest utility. On Ubuntu/Debian:
sudo apt-get install evtest
Then run:
sudo evtest
You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX"
Now run:
cat /dev/input/event/XX
If you get a permission error, you need to set a udev rule to change the mode of
your device (see below)
Also, try:
sudo udevadm info --query=all --name=input/eventXX
If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it,
you need to set up an udev rule to force this variable.
A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks
like:
SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
You can set up similar rules for your device by changing the values listed in
idProduct and idVendor. To obtain these values, try:
sudo udevadm info -a --name=input/eventXX | grep idVendor
sudo udevadm info -a --name=input/eventXX | grep idProduct
If multiple values come up for each of these, the one you want is the first one of each.
On other systems which ship with an older udev (such as CentOS), you may need
to set up a rule such as:
SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1"
+285 -285
View File
@@ -1,285 +1,285 @@
# Mac OS X (aka macOS).
These instructions are for people using Apple's Mac OS X (pronounced
"ten"), which in newer versions is just referred to as "macOS".
From the developer's point of view, macOS is a sort of hybrid Mac and
Unix system, and you have the option of using either traditional
command line tools or Apple's IDE Xcode.
# Command Line Build
To build SDL using the command line, use the standard configure and make
process:
```bash
mkdir build
cd build
../configure
make
sudo make install
```
CMake is also known to work, although it continues to be a work in progress:
```bash
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install
```
You can also build SDL as a Universal library (a single binary for both
64-bit Intel and ARM architectures), by using the build-scripts/clang-fat.sh
script.
```bash
mkdir build
cd build
CC=$PWD/../build-scripts/clang-fat.sh ../configure
make
sudo make install
```
This script builds SDL with 10.9 ABI compatibility on 64-bit Intel and 11.0
ABI compatibility on ARM64 architectures. For best compatibility you
should compile your application the same way.
Please note that building SDL requires at least Xcode 6 and the 10.9 SDK.
PowerPC support for macOS has been officially dropped as of SDL 2.0.2.
32-bit Intel and macOS 10.8 runtime support has been officially dropped as
of SDL 2.24.0.
To use the library once it's built, you essential have two possibilities:
use the traditional autoconf/automake/make method, or use Xcode.
# Caveats for using SDL with Mac OS X
If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
SDL will not register its own. This means that SDL will not terminate using
SDL_Quit if it receives a termination request, it will terminate like a
normal app, and it will not send a SDL_DROPFILE when you request to open a
file with the app. To solve these issues, put the following code in your
NSApplicationDelegate implementation:
```objc
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
SDL_Event event;
event.type = SDL_QUIT;
SDL_PushEvent(&event);
}
return NSTerminateCancel;
}
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
SDL_Event event;
event.type = SDL_DROPFILE;
event.drop.file = SDL_strdup([filename UTF8String]);
return (SDL_PushEvent(&event) > 0);
}
return NO;
}
```
# Using the Simple DirectMedia Layer with a traditional Makefile
An existing autoconf/automake build system for your SDL app has good chances
to work almost unchanged on macOS. However, to produce a "real" Mac binary
that you can distribute to users, you need to put the generated binary into a
so called "bundle", which is basically a fancy folder with a name like
"MyCoolGame.app".
To get this build automatically, add something like the following rule to
your Makefile.am:
```make
bundle_contents = APP_NAME.app/Contents
APP_NAME_bundle: EXE_NAME
mkdir -p $(bundle_contents)/MacOS
mkdir -p $(bundle_contents)/Resources
echo "APPL????" > $(bundle_contents)/PkgInfo
$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
```
You should replace `EXE_NAME` with the name of the executable. `APP_NAME` is
what will be visible to the user in the Finder. Usually it will be the same
as `EXE_NAME` but capitalized. E.g. if `EXE_NAME` is "testgame" then `APP_NAME`
usually is "TestGame". You might also want to use `@PACKAGE@` to use the
package name as specified in your configure.ac file.
If your project builds more than one application, you will have to do a bit
more. For each of your target applications, you need a separate rule.
If you want the created bundles to be installed, you may want to add this
rule to your Makefile.am:
```make
install-exec-hook: APP_NAME_bundle
rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
mkdir -p $(DESTDIR)$(prefix)/Applications/
cp -r $< /$(DESTDIR)$(prefix)Applications/
```
This rule takes the Bundle created by the rule from step 3 and installs them
into "$(DESTDIR)$(prefix)/Applications/".
Again, if you want to install multiple applications, you will have to augment
the make rule accordingly.
But beware! That is only part of the story! With the above, you end up with
a barebones .app bundle, which is double-clickable from the Finder. But
there are some more things you should do before shipping your product...
1. The bundle right now probably is dynamically linked against SDL. That
means that when you copy it to another computer, *it will not run*,
unless you also install SDL on that other computer. A good solution
for this dilemma is to static link against SDL. On OS X, you can
achieve that by linking against the libraries listed by
```bash
sdl-config --static-libs
```
instead of those listed by
```bash
sdl-config --libs
```
Depending on how exactly SDL is integrated into your build systems, the
way to achieve that varies, so I won't describe it here in detail
2. Add an 'Info.plist' to your application. That is a special XML file which
contains some meta-information about your application (like some copyright
information, the version of your app, the name of an optional icon file,
and other things). Part of that information is displayed by the Finder
when you click on the .app, or if you look at the "Get Info" window.
More information about Info.plist files can be found on Apple's homepage.
As a final remark, let me add that I use some of the techniques (and some
variations of them) in [Exult](https://github.com/exult/exult) and
[ScummVM](https://github.com/scummvm/scummvm); both are available in source on
the net, so feel free to take a peek at them for inspiration!
# Using the Simple DirectMedia Layer with Xcode
These instructions are for using Apple's Xcode IDE to build SDL applications.
## First steps
The first thing to do is to unpack the Xcode.tar.gz archive in the
top level SDL directory (where the Xcode.tar.gz archive resides).
Because Stuffit Expander will unpack the archive into a subdirectory,
you should unpack the archive manually from the command line:
```bash
cd [path_to_SDL_source]
tar zxf Xcode.tar.gz
```
This will create a new folder called Xcode, which you can browse
normally from the Finder.
## Building the Framework
The SDL Library is packaged as a framework bundle, an organized
relocatable folder hierarchy of executable code, interface headers,
and additional resources. For practical purposes, you can think of a
framework as a more user and system-friendly shared library, whose library
file behaves more or less like a standard UNIX shared library.
To build the framework, simply open the framework project and build it.
By default, the framework bundle "SDL.framework" is installed in
/Library/Frameworks. Therefore, the testers and project stationary expect
it to be located there. However, it will function the same in any of the
following locations:
* ~/Library/Frameworks
* /Local/Library/Frameworks
* /System/Library/Frameworks
## Build Options
There are two "Build Styles" (See the "Targets" tab) for SDL.
"Deployment" should be used if you aren't tweaking the SDL library.
"Development" should be used to debug SDL apps or the library itself.
## Building the Testers
Open the SDLTest project and build away!
## Using the Project Stationary
Copy the stationary to the indicated folders to access it from
the "New Project" and "Add target" menus. What could be easier?
## Setting up a new project by hand
Some of you won't want to use the Stationary so I'll give some tips:
(this is accurate as of Xcode 12.5.)
* Click "File" -> "New" -> "Project...
* Choose "macOS" and then "App" from the "Application" section.
* Fill out the options in the next window. User interface is "XIB" and
Language is "Objective-C".
* Remove "main.m" from your project
* Remove "MainMenu.xib" from your project
* Remove "AppDelegates.*" from your project
* Add "\$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
* Add "\$(HOME)/Library/Frameworks" to the frameworks search path
* Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
* Add your files
* Clean and build
## Building from command line
Use `xcode-build` in the same directory as your .pbxproj file
## Running your app
You can send command line args to your app by either invoking it from
the command line (in *.app/Contents/MacOS) or by entering them in the
Executables" panel of the target settings.
# Implementation Notes
Some things that may be of interest about how it all works...
## Working directory
In SDL 1.2, the working directory of your SDL app is by default set to its
parent, but this is no longer the case in SDL 2.0. SDL2 does change the
working directory, which means it'll be whatever the command line prompt
that launched the program was using, or if launched by double-clicking in
the finger, it will be "/", the _root of the filesystem_. Plan accordingly!
You can use SDL_GetBasePath() to find where the program is running from and
chdir() there directly.
## You have a Cocoa App!
Your SDL app is essentially a Cocoa application. When your app
starts up and the libraries finish loading, a Cocoa procedure is called,
which sets up the working directory and calls your main() method.
You are free to modify your Cocoa app with generally no consequence
to SDL. You cannot, however, easily change the SDL window itself.
Functionality may be added in the future to help this.
# Bug reports
Bugs are tracked at [the GitHub issue tracker](https://github.com/libsdl-org/SDL/issues/).
Please feel free to report bugs there!
# Mac OS X (aka macOS).
These instructions are for people using Apple's Mac OS X (pronounced
"ten"), which in newer versions is just referred to as "macOS".
From the developer's point of view, macOS is a sort of hybrid Mac and
Unix system, and you have the option of using either traditional
command line tools or Apple's IDE Xcode.
# Command Line Build
To build SDL using the command line, use the standard configure and make
process:
```bash
mkdir build
cd build
../configure
make
sudo make install
```
CMake is also known to work, although it continues to be a work in progress:
```bash
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install
```
You can also build SDL as a Universal library (a single binary for both
64-bit Intel and ARM architectures), by using the build-scripts/clang-fat.sh
script.
```bash
mkdir build
cd build
CC=$PWD/../build-scripts/clang-fat.sh ../configure
make
sudo make install
```
This script builds SDL with 10.9 ABI compatibility on 64-bit Intel and 11.0
ABI compatibility on ARM64 architectures. For best compatibility you
should compile your application the same way.
Please note that building SDL requires at least Xcode 6 and the 10.9 SDK.
PowerPC support for macOS has been officially dropped as of SDL 2.0.2.
32-bit Intel and macOS 10.8 runtime support has been officially dropped as
of SDL 2.24.0.
To use the library once it's built, you essential have two possibilities:
use the traditional autoconf/automake/make method, or use Xcode.
# Caveats for using SDL with Mac OS X
If you register your own NSApplicationDelegate (using [NSApp setDelegate:]),
SDL will not register its own. This means that SDL will not terminate using
SDL_Quit if it receives a termination request, it will terminate like a
normal app, and it will not send a SDL_DROPFILE when you request to open a
file with the app. To solve these issues, put the following code in your
NSApplicationDelegate implementation:
```objc
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
if (SDL_GetEventState(SDL_QUIT) == SDL_ENABLE) {
SDL_Event event;
event.type = SDL_QUIT;
SDL_PushEvent(&event);
}
return NSTerminateCancel;
}
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
if (SDL_GetEventState(SDL_DROPFILE) == SDL_ENABLE) {
SDL_Event event;
event.type = SDL_DROPFILE;
event.drop.file = SDL_strdup([filename UTF8String]);
return (SDL_PushEvent(&event) > 0);
}
return NO;
}
```
# Using the Simple DirectMedia Layer with a traditional Makefile
An existing autoconf/automake build system for your SDL app has good chances
to work almost unchanged on macOS. However, to produce a "real" Mac binary
that you can distribute to users, you need to put the generated binary into a
so called "bundle", which is basically a fancy folder with a name like
"MyCoolGame.app".
To get this build automatically, add something like the following rule to
your Makefile.am:
```make
bundle_contents = APP_NAME.app/Contents
APP_NAME_bundle: EXE_NAME
mkdir -p $(bundle_contents)/MacOS
mkdir -p $(bundle_contents)/Resources
echo "APPL????" > $(bundle_contents)/PkgInfo
$(INSTALL_PROGRAM) $< $(bundle_contents)/MacOS/
```
You should replace `EXE_NAME` with the name of the executable. `APP_NAME` is
what will be visible to the user in the Finder. Usually it will be the same
as `EXE_NAME` but capitalized. E.g. if `EXE_NAME` is "testgame" then `APP_NAME`
usually is "TestGame". You might also want to use `@PACKAGE@` to use the
package name as specified in your configure.ac file.
If your project builds more than one application, you will have to do a bit
more. For each of your target applications, you need a separate rule.
If you want the created bundles to be installed, you may want to add this
rule to your Makefile.am:
```make
install-exec-hook: APP_NAME_bundle
rm -rf $(DESTDIR)$(prefix)/Applications/APP_NAME.app
mkdir -p $(DESTDIR)$(prefix)/Applications/
cp -r $< /$(DESTDIR)$(prefix)Applications/
```
This rule takes the Bundle created by the rule from step 3 and installs them
into "$(DESTDIR)$(prefix)/Applications/".
Again, if you want to install multiple applications, you will have to augment
the make rule accordingly.
But beware! That is only part of the story! With the above, you end up with
a barebones .app bundle, which is double-clickable from the Finder. But
there are some more things you should do before shipping your product...
1. The bundle right now probably is dynamically linked against SDL. That
means that when you copy it to another computer, *it will not run*,
unless you also install SDL on that other computer. A good solution
for this dilemma is to static link against SDL. On OS X, you can
achieve that by linking against the libraries listed by
```bash
sdl-config --static-libs
```
instead of those listed by
```bash
sdl-config --libs
```
Depending on how exactly SDL is integrated into your build systems, the
way to achieve that varies, so I won't describe it here in detail
2. Add an 'Info.plist' to your application. That is a special XML file which
contains some meta-information about your application (like some copyright
information, the version of your app, the name of an optional icon file,
and other things). Part of that information is displayed by the Finder
when you click on the .app, or if you look at the "Get Info" window.
More information about Info.plist files can be found on Apple's homepage.
As a final remark, let me add that I use some of the techniques (and some
variations of them) in [Exult](https://github.com/exult/exult) and
[ScummVM](https://github.com/scummvm/scummvm); both are available in source on
the net, so feel free to take a peek at them for inspiration!
# Using the Simple DirectMedia Layer with Xcode
These instructions are for using Apple's Xcode IDE to build SDL applications.
## First steps
The first thing to do is to unpack the Xcode.tar.gz archive in the
top level SDL directory (where the Xcode.tar.gz archive resides).
Because Stuffit Expander will unpack the archive into a subdirectory,
you should unpack the archive manually from the command line:
```bash
cd [path_to_SDL_source]
tar zxf Xcode.tar.gz
```
This will create a new folder called Xcode, which you can browse
normally from the Finder.
## Building the Framework
The SDL Library is packaged as a framework bundle, an organized
relocatable folder hierarchy of executable code, interface headers,
and additional resources. For practical purposes, you can think of a
framework as a more user and system-friendly shared library, whose library
file behaves more or less like a standard UNIX shared library.
To build the framework, simply open the framework project and build it.
By default, the framework bundle "SDL.framework" is installed in
/Library/Frameworks. Therefore, the testers and project stationary expect
it to be located there. However, it will function the same in any of the
following locations:
* ~/Library/Frameworks
* /Local/Library/Frameworks
* /System/Library/Frameworks
## Build Options
There are two "Build Styles" (See the "Targets" tab) for SDL.
"Deployment" should be used if you aren't tweaking the SDL library.
"Development" should be used to debug SDL apps or the library itself.
## Building the Testers
Open the SDLTest project and build away!
## Using the Project Stationary
Copy the stationary to the indicated folders to access it from
the "New Project" and "Add target" menus. What could be easier?
## Setting up a new project by hand
Some of you won't want to use the Stationary so I'll give some tips:
(this is accurate as of Xcode 12.5.)
* Click "File" -> "New" -> "Project...
* Choose "macOS" and then "App" from the "Application" section.
* Fill out the options in the next window. User interface is "XIB" and
Language is "Objective-C".
* Remove "main.m" from your project
* Remove "MainMenu.xib" from your project
* Remove "AppDelegates.*" from your project
* Add "\$(HOME)/Library/Frameworks/SDL.framework/Headers" to include path
* Add "\$(HOME)/Library/Frameworks" to the frameworks search path
* Add "-framework SDL -framework Foundation -framework AppKit" to "OTHER_LDFLAGS"
* Add your files
* Clean and build
## Building from command line
Use `xcode-build` in the same directory as your .pbxproj file
## Running your app
You can send command line args to your app by either invoking it from
the command line (in *.app/Contents/MacOS) or by entering them in the
Executables" panel of the target settings.
# Implementation Notes
Some things that may be of interest about how it all works...
## Working directory
In SDL 1.2, the working directory of your SDL app is by default set to its
parent, but this is no longer the case in SDL 2.0. SDL2 does change the
working directory, which means it'll be whatever the command line prompt
that launched the program was using, or if launched by double-clicking in
the finger, it will be "/", the _root of the filesystem_. Plan accordingly!
You can use SDL_GetBasePath() to find where the program is running from and
chdir() there directly.
## You have a Cocoa App!
Your SDL app is essentially a Cocoa application. When your app
starts up and the libraries finish loading, a Cocoa procedure is called,
which sets up the working directory and calls your main() method.
You are free to modify your Cocoa app with generally no consequence
to SDL. You cannot, however, easily change the SDL window itself.
Functionality may be added in the future to help this.
# Bug reports
Bugs are tracked at [the GitHub issue tracker](https://github.com/libsdl-org/SDL/issues/).
Please feel free to report bugs there!
+28 -28
View File
@@ -1,28 +1,28 @@
# Nintendo 3DS
SDL port for the Nintendo 3DS [Homebrew toolchain](https://devkitpro.org/) contributed by:
- [Pierre Wendling](https://github.com/FtZPetruska)
Credits to:
- The awesome people who ported SDL to other homebrew platforms.
- The Devkitpro team for making all the tools necessary to achieve this.
## Building
To build for the Nintendo 3DS, make sure you have devkitARM and cmake installed and run:
```bash
cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE="$DEVKITPRO/cmake/3DS.cmake" -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
```
## Notes
- Currently only software rendering is supported.
- SDL2main should be used to ensure ROMFS is enabled.
- By default, the extra L2 cache and higher clock speeds of the New 2/3DS lineup are enabled. If you wish to turn it off, use `osSetSpeedupEnable(false)` in your main function.
- `SDL_GetBasePath` returns the romfs root instead of the executable's directory.
- The Nintendo 3DS uses a cooperative threading model on a single core, meaning a thread will never yield unless done manually through the `SDL_Delay` functions, or blocking waits (`SDL_LockMutex`, `SDL_SemWait`, `SDL_CondWait`, `SDL_WaitThread`). To avoid starving other threads, `SDL_SemTryWait` and `SDL_SemWaitTimeout` will yield if they fail to acquire the semaphore, see https://github.com/libsdl-org/SDL/pull/6776 for more information.
# Nintendo 3DS
SDL port for the Nintendo 3DS [Homebrew toolchain](https://devkitpro.org/) contributed by:
- [Pierre Wendling](https://github.com/FtZPetruska)
Credits to:
- The awesome people who ported SDL to other homebrew platforms.
- The Devkitpro team for making all the tools necessary to achieve this.
## Building
To build for the Nintendo 3DS, make sure you have devkitARM and cmake installed and run:
```bash
cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE="$DEVKITPRO/cmake/3DS.cmake" -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
```
## Notes
- Currently only software rendering is supported.
- SDL2main should be used to ensure ROMFS is enabled.
- By default, the extra L2 cache and higher clock speeds of the New 2/3DS lineup are enabled. If you wish to turn it off, use `osSetSpeedupEnable(false)` in your main function.
- `SDL_GetBasePath` returns the romfs root instead of the executable's directory.
- The Nintendo 3DS uses a cooperative threading model on a single core, meaning a thread will never yield unless done manually through the `SDL_Delay` functions, or blocking waits (`SDL_LockMutex`, `SDL_SemWait`, `SDL_CondWait`, `SDL_WaitThread`). To avoid starving other threads, `SDL_SemTryWait` and `SDL_SemWaitTimeout` will yield if they fail to acquire the semaphore, see https://github.com/libsdl-org/SDL/pull/6776 for more information.
+103 -103
View File
@@ -1,103 +1,103 @@
Native Client
================================================================================
Requirements:
* Native Client SDK (https://developer.chrome.com/native-client),
(tested with Pepper version 33 or higher).
The SDL backend for Chrome's Native Client has been tested only with the PNaCl
toolchain, which generates binaries designed to run on ARM and x86_32/64
platforms. This does not mean it won't work with the other toolchains!
================================================================================
Building SDL for NaCl
================================================================================
Set up the right environment variables (see naclbuild.sh), then configure SDL with:
configure --host=pnacl --prefix some/install/destination
Then "make".
As an example of how to create a deployable app a Makefile project is provided
in test/nacl/Makefile, which includes some monkey patching of the common.mk file
provided by NaCl, without which linking properly to SDL won't work (the search
path can't be modified externally, so the linker won't find SDL's binaries unless
you dump them into the SDK path, which is inconvenient).
Also provided in test/nacl is the required support file, such as index.html,
manifest.json, etc.
SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
hiding the asynchronous nature of the browser behind the scenes...which is not the
same as making it disappear!
================================================================================
Running tests
================================================================================
Due to the nature of NaCl programs, building and running SDL tests is not as
straightforward as one would hope. The script naclbuild.sh in build-scripts
automates the process and should serve as a guide for users of SDL trying to build
their own applications.
Basic usage:
./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
This will build testgles2.c by default.
If you want to build a different test, for example testrendercopyex.c:
SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
Once the build finishes, you have to serve the contents with a web server (the
script will give you instructions on how to do that with Python).
================================================================================
RWops and nacl_io
================================================================================
SDL_RWops work transparently with nacl_io. Two functions control the mount points:
int mount(const char* source, const char* target,
const char* filesystemtype,
unsigned long mountflags, const void *data);
int umount(const char *target);
For convenience, SDL will by default mount an httpfs tree at / before calling
the app's main function. Such setting can be overridden by calling:
umount("/");
And then mounting a different filesystem at /
It's important to consider that the asynchronous nature of file operations on a
browser is hidden from the application, effectively providing the developer with
a set of blocking file operations just like you get in a regular desktop
environment, which eases the job of porting to Native Client, but also introduces
a set of challenges of its own, in particular when big file sizes and slow
connections are involved.
For more information on how nacl_io and mount points work, see:
https://developer.chrome.com/native-client/devguide/coding/nacl_io
https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
To be able to save into the directory "/save/" (like backup of game) :
mount("", "/save", "html5fs", 0, "type=PERSISTENT");
And add to manifest.json :
"permissions": [
"unlimitedStorage"
]
================================================================================
TODO - Known Issues
================================================================================
* Testing of all systems with a real application (something other than SDL's tests)
* Key events don't seem to work properly
Native Client
================================================================================
Requirements:
* Native Client SDK (https://developer.chrome.com/native-client),
(tested with Pepper version 33 or higher).
The SDL backend for Chrome's Native Client has been tested only with the PNaCl
toolchain, which generates binaries designed to run on ARM and x86_32/64
platforms. This does not mean it won't work with the other toolchains!
================================================================================
Building SDL for NaCl
================================================================================
Set up the right environment variables (see naclbuild.sh), then configure SDL with:
configure --host=pnacl --prefix some/install/destination
Then "make".
As an example of how to create a deployable app a Makefile project is provided
in test/nacl/Makefile, which includes some monkey patching of the common.mk file
provided by NaCl, without which linking properly to SDL won't work (the search
path can't be modified externally, so the linker won't find SDL's binaries unless
you dump them into the SDK path, which is inconvenient).
Also provided in test/nacl is the required support file, such as index.html,
manifest.json, etc.
SDL apps for NaCl run on a worker thread using the ppapi_simple infrastructure.
This allows for blocking calls on all the relevant systems (OpenGL ES, filesystem),
hiding the asynchronous nature of the browser behind the scenes...which is not the
same as making it disappear!
================================================================================
Running tests
================================================================================
Due to the nature of NaCl programs, building and running SDL tests is not as
straightforward as one would hope. The script naclbuild.sh in build-scripts
automates the process and should serve as a guide for users of SDL trying to build
their own applications.
Basic usage:
./naclbuild.sh path/to/pepper/toolchain (i.e. ~/naclsdk/pepper_35)
This will build testgles2.c by default.
If you want to build a different test, for example testrendercopyex.c:
SOURCES=~/sdl/SDL/test/testrendercopyex.c ./naclbuild.sh ~/naclsdk/pepper_35
Once the build finishes, you have to serve the contents with a web server (the
script will give you instructions on how to do that with Python).
================================================================================
RWops and nacl_io
================================================================================
SDL_RWops work transparently with nacl_io. Two functions control the mount points:
int mount(const char* source, const char* target,
const char* filesystemtype,
unsigned long mountflags, const void *data);
int umount(const char *target);
For convenience, SDL will by default mount an httpfs tree at / before calling
the app's main function. Such setting can be overridden by calling:
umount("/");
And then mounting a different filesystem at /
It's important to consider that the asynchronous nature of file operations on a
browser is hidden from the application, effectively providing the developer with
a set of blocking file operations just like you get in a regular desktop
environment, which eases the job of porting to Native Client, but also introduces
a set of challenges of its own, in particular when big file sizes and slow
connections are involved.
For more information on how nacl_io and mount points work, see:
https://developer.chrome.com/native-client/devguide/coding/nacl_io
https://src.chromium.org/chrome/trunk/src/native_client_sdk/src/libraries/nacl_io/nacl_io.h
To be able to save into the directory "/save/" (like backup of game) :
mount("", "/save", "html5fs", 0, "type=PERSISTENT");
And add to manifest.json :
"permissions": [
"unlimitedStorage"
]
================================================================================
TODO - Known Issues
================================================================================
* Testing of all systems with a real application (something other than SDL's tests)
* Key events don't seem to work properly
+44 -44
View File
@@ -1,44 +1,44 @@
Nokia N-Gage
============
SDL2 port for Symbian S60v1 and v2 with a main focus on the Nokia N-Gage
(Classic and QD) by [Michael Fitzmayer](https://github.com/mupfdev).
Compiling
---------
SDL is part of the [N-Gage SDK.](https://github.com/ngagesdk) project.
The library is included in the
[toolchain](https://github.com/ngagesdk/ngage-toolchain) as a
sub-module.
A complete example project based on SDL2 can be found in the GitHub
account of the SDK: [Wordle](https://github.com/ngagesdk/wordle).
Current level of implementation
-------------------------------
The video driver currently provides full screen video support with
keyboard input.
At the moment only the software renderer works.
Audio is not yet implemented.
Acknowledgements
----------------
Thanks to Hannu Viitala, Kimmo Kinnunen and Markus Mertama for the
valuable insight into Symbian programming. Without the SDL 1.2 port
which was specially developed for CDoom (Doom for the Nokia 9210), this
adaptation would not have been possible.
I would like to thank my friends
[Razvan](https://twitter.com/bewarerazvan) and [Dan
Whelan](https://danwhelan.ie/), for their continuous support. Without
you and the [N-Gage community](https://discord.gg/dbUzqJ26vs), I would
have lost my patience long ago.
Last but not least, I would like to thank the development team of
[EKA2L1](https://12z1.com/) (an experimental Symbian OS emulator). Your
patience and support in troubleshooting helped me a lot.
Nokia N-Gage
============
SDL2 port for Symbian S60v1 and v2 with a main focus on the Nokia N-Gage
(Classic and QD) by [Michael Fitzmayer](https://github.com/mupfdev).
Compiling
---------
SDL is part of the [N-Gage SDK.](https://github.com/ngagesdk) project.
The library is included in the
[toolchain](https://github.com/ngagesdk/ngage-toolchain) as a
sub-module.
A complete example project based on SDL2 can be found in the GitHub
account of the SDK: [Wordle](https://github.com/ngagesdk/wordle).
Current level of implementation
-------------------------------
The video driver currently provides full screen video support with
keyboard input.
At the moment only the software renderer works.
Audio is not yet implemented.
Acknowledgements
----------------
Thanks to Hannu Viitala, Kimmo Kinnunen and Markus Mertama for the
valuable insight into Symbian programming. Without the SDL 1.2 port
which was specially developed for CDoom (Doom for the Nokia 9210), this
adaptation would not have been possible.
I would like to thank my friends
[Razvan](https://twitter.com/bewarerazvan) and [Dan
Whelan](https://danwhelan.ie/), for their continuous support. Without
you and the [N-Gage community](https://discord.gg/dbUzqJ26vs), I would
have lost my patience long ago.
Last but not least, I would like to thank the development team of
[EKA2L1](https://12z1.com/) (an experimental Symbian OS emulator). Your
patience and support in troubleshooting helped me a lot.
+92 -92
View File
@@ -1,92 +1,92 @@
Simple DirectMedia Layer 2 for OS/2 & eComStation
================================================================================
SDL port for OS/2, authored by Andrey Vasilkin <digi@os2.snc.ru>, 2016
OpenGL not supported by this port.
Additional optional environment variables:
SDL_AUDIO_SHARE
Values: 0 or 1, default is 0
Initializes the device as shareable or exclusively acquired.
SDL_VIDEODRIVER
Values: DIVE or VMAN, default is DIVE
Use video subsystem: Direct interface video extensions (DIVE) or
Video Manager (VMAN).
You may significantly increase video output speed with OS4 kernel and patched
files vman.dll and dive.dll or with latest versions of ACPI support and video
driver Panorama.
Latest versions of OS/4 kernel:
http://gus.biysk.ru/os4/
(Info: https://www.os2world.com/wiki/index.php/Phoenix_OS/4)
Patched files vman.dll and dive.dll:
http://gus.biysk.ru/os4/test/pached_dll/PATCHED_DLL.RAR
Compiling:
----------
Open Watcom 1.9 or newer is tested. For the new Open Watcom V2 fork, see:
https://github.com/open-watcom/ and https://open-watcom.github.io
WATCOM environment variable must to be set to the Open Watcom install
directory. To compile, run: wmake -f Makefile.os2
Installing:
-----------
- eComStation:
If you have previously installed SDL2, make a Backup copy of SDL2.dll
located in D:\ecs\dll (where D: is disk on which installed eComStation).
Stop all programs running with SDL2. Copy SDL2.dll to D:\ecs\dll
- OS/2:
Copy SDL2.dll to any directory on your LIBPATH. If you have a previous
version installed, close all SDL2 applications before replacing the old
copy. Also make sure that any other older versions of DLLs are removed
from your system.
Joysticks in SDL2:
------------------
The joystick code in SDL2 is a direct forward-port from the SDL-1.2 version.
Here is the original documentation from SDL-1.2:
The Joystick detection only works for standard joysticks (2 buttons, 2 axes
and the like). Therefore, if you use a non-standard joystick, you should
specify its features in the SDL_OS2_JOYSTICK environment variable in a batch
file or CONFIG.SYS, so SDL applications can provide full capability to your
device. The syntax is:
SET SDL_OS2_JOYSTICK=[JOYSTICK_NAME] [AXES] [BUTTONS] [HATS] [BALLS]
So, it you have a Gravis GamePad with 4 axes, 2 buttons, 2 hats and 0 balls,
the line should be:
SET SDL_OS2_JOYSTICK=Gravis_GamePad 4 2 2 0
If you want to add spaces in your joystick name, just surround it with
quotes or double-quotes:
SET SDL_OS2_JOYSTICK='Gravis GamePad' 4 2 2 0
or
SET SDL_OS2_JOYSTICK="Gravis GamePad" 4 2 2 0
Note however that Balls and Hats are not supported under OS/2, and the
value will be ignored... but it is wise to define these correctly because
in the future those can be supported.
Also the number of buttons is limited to 2 when using two joysticks,
4 when using one joystick with 4 axes, 6 when using a joystick with 3 axes
and 8 when using a joystick with 2 axes. Notice however these are limitations
of the Joystick Port hardware, not OS/2.
Simple DirectMedia Layer 2 for OS/2 & eComStation
================================================================================
SDL port for OS/2, authored by Andrey Vasilkin <digi@os2.snc.ru>, 2016
OpenGL not supported by this port.
Additional optional environment variables:
SDL_AUDIO_SHARE
Values: 0 or 1, default is 0
Initializes the device as shareable or exclusively acquired.
SDL_VIDEODRIVER
Values: DIVE or VMAN, default is DIVE
Use video subsystem: Direct interface video extensions (DIVE) or
Video Manager (VMAN).
You may significantly increase video output speed with OS4 kernel and patched
files vman.dll and dive.dll or with latest versions of ACPI support and video
driver Panorama.
Latest versions of OS/4 kernel:
http://gus.biysk.ru/os4/
(Info: https://www.os2world.com/wiki/index.php/Phoenix_OS/4)
Patched files vman.dll and dive.dll:
http://gus.biysk.ru/os4/test/pached_dll/PATCHED_DLL.RAR
Compiling:
----------
Open Watcom 1.9 or newer is tested. For the new Open Watcom V2 fork, see:
https://github.com/open-watcom/ and https://open-watcom.github.io
WATCOM environment variable must to be set to the Open Watcom install
directory. To compile, run: wmake -f Makefile.os2
Installing:
-----------
- eComStation:
If you have previously installed SDL2, make a Backup copy of SDL2.dll
located in D:\ecs\dll (where D: is disk on which installed eComStation).
Stop all programs running with SDL2. Copy SDL2.dll to D:\ecs\dll
- OS/2:
Copy SDL2.dll to any directory on your LIBPATH. If you have a previous
version installed, close all SDL2 applications before replacing the old
copy. Also make sure that any other older versions of DLLs are removed
from your system.
Joysticks in SDL2:
------------------
The joystick code in SDL2 is a direct forward-port from the SDL-1.2 version.
Here is the original documentation from SDL-1.2:
The Joystick detection only works for standard joysticks (2 buttons, 2 axes
and the like). Therefore, if you use a non-standard joystick, you should
specify its features in the SDL_OS2_JOYSTICK environment variable in a batch
file or CONFIG.SYS, so SDL applications can provide full capability to your
device. The syntax is:
SET SDL_OS2_JOYSTICK=[JOYSTICK_NAME] [AXES] [BUTTONS] [HATS] [BALLS]
So, it you have a Gravis GamePad with 4 axes, 2 buttons, 2 hats and 0 balls,
the line should be:
SET SDL_OS2_JOYSTICK=Gravis_GamePad 4 2 2 0
If you want to add spaces in your joystick name, just surround it with
quotes or double-quotes:
SET SDL_OS2_JOYSTICK='Gravis GamePad' 4 2 2 0
or
SET SDL_OS2_JOYSTICK="Gravis GamePad" 4 2 2 0
Note however that Balls and Hats are not supported under OS/2, and the
value will be ignored... but it is wise to define these correctly because
in the future those can be supported.
Also the number of buttons is limited to 2 when using two joysticks,
4 when using one joystick with 4 axes, 6 when using a joystick with 3 axes
and 8 when using a joystick with 2 axes. Notice however these are limitations
of the Joystick Port hardware, not OS/2.
+17 -17
View File
@@ -1,17 +1,17 @@
Pandora
=====================================================================
( http://openpandora.org/ )
- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
support to work on the pandora under the framebuffer. This driver do not have
input support for now, so if you use it you will have to add your own control code.
The video driver name is "pandora" so if you have problem running it from
the framebuffer, try to set the following variable before starting your application :
"export SDL_VIDEODRIVER=pandora"
- OpenGL ES support was added to the x11 driver, so it's working like the normal
x11 driver one with OpenGLX support, with SDL input event's etc..
David Carré (Cpasjuste)
cpasjuste@gmail.com
Pandora
=====================================================================
( http://openpandora.org/ )
- A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES
support to work on the pandora under the framebuffer. This driver do not have
input support for now, so if you use it you will have to add your own control code.
The video driver name is "pandora" so if you have problem running it from
the framebuffer, try to set the following variable before starting your application :
"export SDL_VIDEODRIVER=pandora"
- OpenGL ES support was added to the x11 driver, so it's working like the normal
x11 driver one with OpenGLX support, with SDL input event's etc..
David Carré (Cpasjuste)
cpasjuste@gmail.com
+8 -8
View File
@@ -1,8 +1,8 @@
Platforms
=========
We maintain the list of supported platforms on our wiki now, and how to
build and install SDL for those platforms:
https://wiki.libsdl.org/Installation
Platforms
=========
We maintain the list of supported platforms on our wiki now, and how to
build and install SDL for those platforms:
https://wiki.libsdl.org/Installation
+68 -68
View File
@@ -1,68 +1,68 @@
Porting
=======
* Porting To A New Platform
The first thing you have to do when porting to a new platform, is look at
include/SDL_platform.h and create an entry there for your operating system.
The standard format is "__PLATFORM__", where PLATFORM is the name of the OS.
Ideally SDL_platform.h will be able to auto-detect the system it's building
on based on C preprocessor symbols.
There are two basic ways of building SDL at the moment:
1. The "UNIX" way: ./configure; make; make install
If you have a GNUish system, then you might try this. Edit configure.ac,
take a look at the large section labelled:
"Set up the configuration based on the host platform!"
Add a section for your platform, and then re-run autogen.sh and build!
2. Using an IDE:
If you're using an IDE or other non-configure build system, you'll probably
want to create a custom SDL_config.h for your platform. Edit SDL_config.h,
add a section for your platform, and create a custom SDL_config_{platform}.h,
based on SDL_config_minimal.h and SDL_config.h.in
Add the top level include directory to the header search path, and then add
the following sources to the project:
src/*.c
src/atomic/*.c
src/audio/*.c
src/cpuinfo/*.c
src/events/*.c
src/file/*.c
src/haptic/*.c
src/joystick/*.c
src/power/*.c
src/render/*.c
src/render/software/*.c
src/stdlib/*.c
src/thread/*.c
src/timer/*.c
src/video/*.c
src/audio/disk/*.c
src/audio/dummy/*.c
src/filesystem/dummy/*.c
src/video/dummy/*.c
src/haptic/dummy/*.c
src/joystick/dummy/*.c
src/main/dummy/*.c
src/thread/generic/*.c
src/timer/dummy/*.c
src/loadso/dummy/*.c
Once you have a working library without any drivers, you can go back to each
of the major subsystems and start implementing drivers for your platform.
If you have any questions, don't hesitate to ask on the SDL mailing list:
http://www.libsdl.org/mailing-list.php
Enjoy!
Sam Lantinga (slouken@libsdl.org)
Porting
=======
* Porting To A New Platform
The first thing you have to do when porting to a new platform, is look at
include/SDL_platform.h and create an entry there for your operating system.
The standard format is "__PLATFORM__", where PLATFORM is the name of the OS.
Ideally SDL_platform.h will be able to auto-detect the system it's building
on based on C preprocessor symbols.
There are two basic ways of building SDL at the moment:
1. The "UNIX" way: ./configure; make; make install
If you have a GNUish system, then you might try this. Edit configure.ac,
take a look at the large section labelled:
"Set up the configuration based on the host platform!"
Add a section for your platform, and then re-run autogen.sh and build!
2. Using an IDE:
If you're using an IDE or other non-configure build system, you'll probably
want to create a custom SDL_config.h for your platform. Edit SDL_config.h,
add a section for your platform, and create a custom SDL_config_{platform}.h,
based on SDL_config_minimal.h and SDL_config.h.in
Add the top level include directory to the header search path, and then add
the following sources to the project:
src/*.c
src/atomic/*.c
src/audio/*.c
src/cpuinfo/*.c
src/events/*.c
src/file/*.c
src/haptic/*.c
src/joystick/*.c
src/power/*.c
src/render/*.c
src/render/software/*.c
src/stdlib/*.c
src/thread/*.c
src/timer/*.c
src/video/*.c
src/audio/disk/*.c
src/audio/dummy/*.c
src/filesystem/dummy/*.c
src/video/dummy/*.c
src/haptic/dummy/*.c
src/joystick/dummy/*.c
src/main/dummy/*.c
src/thread/generic/*.c
src/timer/dummy/*.c
src/loadso/dummy/*.c
Once you have a working library without any drivers, you can go back to each
of the major subsystems and start implementing drivers for your platform.
If you have any questions, don't hesitate to ask on the SDL mailing list:
http://www.libsdl.org/mailing-list.php
Enjoy!
Sam Lantinga (slouken@libsdl.org)
+51 -51
View File
@@ -1,51 +1,51 @@
PS2
======
SDL2 port for the Sony Playstation 2 contributed by:
- Francisco Javier Trujillo Mata
Credit to
- The guys that ported SDL to PSP & Vita because I'm taking them as reference.
- David G. F. for helping me with several issues and tests.
## Building
To build SDL2 library for the PS2, make sure you have the latest PS2Dev status and run:
```bash
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PS2DEV/ps2sdk/ps2dev.cmake
cmake --build build
cmake --install build
```
## Hints
The PS2 port has a special Hint for having a dynamic VSYNC. The Hint is `SDL_HINT_PS2_DYNAMIC_VSYNC`.
If you enabled the dynamic vsync having as well `SDL_RENDERER_PRESENTVSYNC` enabled, then if the app is not able to run at 60 FPS, automatically the `vsync` will be disabled having a better performance, instead of droping FPS to 30.
## Notes
If you trying to debug a SDL app through [ps2client](https://github.com/ps2dev/ps2client) you need to avoid the IOP reset, otherwise you will lose the conection with your computer.
So to avoid the reset of the IOP CPU, you need to call to the macro `SDL_PS2_SKIP_IOP_RESET();`.
It could be something similar as:
```c
.....
SDL_PS2_SKIP_IOP_RESET();
int main(int argc, char *argv[])
{
.....
```
For a release binary is recommendable to reset the IOP always.
Remember to do a clean compilation everytime you enable or disable the `SDL_PS2_SKIP_IOP_RESET` otherwise the change won't be reflected.
## Getting PS2 Dev
[Installing PS2 Dev](https://github.com/ps2dev/ps2dev)
## Running on PCSX2 Emulator
[PCSX2](https://github.com/PCSX2/pcsx2)
[More PCSX2 information](https://pcsx2.net/)
## To Do
- PS2 Screen Keyboard
- Dialogs
- Others
PS2
======
SDL2 port for the Sony Playstation 2 contributed by:
- Francisco Javier Trujillo Mata
Credit to
- The guys that ported SDL to PSP & Vita because I'm taking them as reference.
- David G. F. for helping me with several issues and tests.
## Building
To build SDL2 library for the PS2, make sure you have the latest PS2Dev status and run:
```bash
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PS2DEV/ps2sdk/ps2dev.cmake
cmake --build build
cmake --install build
```
## Hints
The PS2 port has a special Hint for having a dynamic VSYNC. The Hint is `SDL_HINT_PS2_DYNAMIC_VSYNC`.
If you enabled the dynamic vsync having as well `SDL_RENDERER_PRESENTVSYNC` enabled, then if the app is not able to run at 60 FPS, automatically the `vsync` will be disabled having a better performance, instead of droping FPS to 30.
## Notes
If you trying to debug a SDL app through [ps2client](https://github.com/ps2dev/ps2client) you need to avoid the IOP reset, otherwise you will lose the conection with your computer.
So to avoid the reset of the IOP CPU, you need to call to the macro `SDL_PS2_SKIP_IOP_RESET();`.
It could be something similar as:
```c
.....
SDL_PS2_SKIP_IOP_RESET();
int main(int argc, char *argv[])
{
.....
```
For a release binary is recommendable to reset the IOP always.
Remember to do a clean compilation everytime you enable or disable the `SDL_PS2_SKIP_IOP_RESET` otherwise the change won't be reflected.
## Getting PS2 Dev
[Installing PS2 Dev](https://github.com/ps2dev/ps2dev)
## Running on PCSX2 Emulator
[PCSX2](https://github.com/PCSX2/pcsx2)
[More PCSX2 information](https://pcsx2.net/)
## To Do
- PS2 Screen Keyboard
- Dialogs
- Others
+36 -36
View File
@@ -1,36 +1,36 @@
PSP
======
SDL2 port for the Sony PSP contributed by:
- Captian Lex
- Francisco Javier Trujillo Mata
- Wouter Wijsman
Credit to
Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
Geecko for his PSP GU lib "Glib2d"
## Building
To build SDL2 library for the PSP, make sure you have the latest PSPDev status and run:
```bash
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PSPDEV/psp/share/pspdev.cmake
cmake --build build
cmake --install build
```
## Getting PSP Dev
[Installing PSP Dev](https://github.com/pspdev/pspdev)
## Running on PPSSPP Emulator
[PPSSPP](https://github.com/hrydgard/ppsspp)
[Build Instructions](https://github.com/hrydgard/ppsspp/wiki/Build-instructions)
## Compiling a HelloWorld
[PSP Hello World](https://psp-dev.org/doku.php?id=tutorial:hello_world)
## To Do
- PSP Screen Keyboard
- Dialogs
PSP
======
SDL2 port for the Sony PSP contributed by:
- Captian Lex
- Francisco Javier Trujillo Mata
- Wouter Wijsman
Credit to
Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP
Geecko for his PSP GU lib "Glib2d"
## Building
To build SDL2 library for the PSP, make sure you have the latest PSPDev status and run:
```bash
cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PSPDEV/psp/share/pspdev.cmake
cmake --build build
cmake --install build
```
## Getting PSP Dev
[Installing PSP Dev](https://github.com/pspdev/pspdev)
## Running on PPSSPP Emulator
[PPSSPP](https://github.com/hrydgard/ppsspp)
[Build Instructions](https://github.com/hrydgard/ppsspp/wiki/Build-instructions)
## Compiling a HelloWorld
[PSP Hello World](https://psp-dev.org/doku.php?id=tutorial:hello_world)
## To Do
- PSP Screen Keyboard
- Dialogs
+180 -180
View File
@@ -1,180 +1,180 @@
Raspberry Pi
============
Requirements:
Raspbian (other Linux distros may work as well).
Features
--------
* Works without X11
* Hardware accelerated OpenGL ES 2.x
* Sound via ALSA
* Input (mouse/keyboard/joystick) via EVDEV
* Hotplugging of input devices via UDEV
Raspbian Build Dependencies
---------------------------
sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
You also need the VideoCore binary stuff that ships in /opt/vc for EGL and
OpenGL ES 2.x, it usually comes pre-installed, but in any case:
sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
NEON
----
If your Pi has NEON support, make sure you add -mfpu=neon to your CFLAGS so
that SDL will select some otherwise-disabled highly-optimized code. The
original Pi units don't have NEON, the Pi2 probably does, and the Pi3
definitely does.
Cross compiling from x86 Linux
------------------------------
To cross compile SDL for Raspbian from your desktop machine, you'll need a
Raspbian system root and the cross compilation tools. We'll assume these tools
will be placed in /opt/rpi-tools
sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
You'll also need a Raspbian binary image.
Get it from: http://downloads.raspberrypi.org/raspbian_latest
After unzipping, you'll get file with a name like: "<date>-wheezy-raspbian.img"
Let's assume the sysroot will be built in /opt/rpi-sysroot.
export SYSROOT=/opt/rpi-sysroot
sudo kpartx -a -v <path_to_raspbian_image>.img
sudo mount -o loop /dev/mapper/loop0p2 /mnt
sudo cp -r /mnt $SYSROOT
sudo apt-get install qemu binfmt-support qemu-user-static
sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
sudo mount --bind /dev $SYSROOT/dev
sudo mount --bind /proc $SYSROOT/proc
sudo mount --bind /sys $SYSROOT/sys
Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
sudo chroot $SYSROOT
apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev
exit
sudo umount $SYSROOT/dev
sudo umount $SYSROOT/proc
sudo umount $SYSROOT/sys
sudo umount /mnt
There's one more fix required, as the libdl.so symlink uses an absolute path
which doesn't quite work in our setup.
sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
The final step is compiling SDL itself.
export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux"
cd <SDL SOURCE>
mkdir -p build;cd build
LDFLAGS="-L$SYSROOT/opt/vc/lib" ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
make
make install
To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
Apps don't work or poor video/audio performance
-----------------------------------------------
If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to
update the RPi's firmware. Note that doing so will fix these problems, but it
will also render the CMA - Dynamic Memory Split functionality useless.
Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
low in general, specially if a 1080p TV is hooked up.
See here how to configure this setting: http://elinux.org/RPiconfig
Using a fixed gpu_mem=128 is the best option (specially if you updated the
firmware, using CMA probably won't work, at least it's the current case).
No input
--------
Make sure you belong to the "input" group.
sudo usermod -aG input `whoami`
No HDMI Audio
-------------
If you notice that ALSA works but there's no audio over HDMI, try adding:
hdmi_drive=2
to your config.txt file and reboot.
Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
Text Input API support
----------------------
The Text Input API is supported, with translation of scan codes done via the
kernel symbol tables. For this to work, SDL needs access to a valid console.
If you notice there's no SDL_TEXTINPUT message being emitted, double check that
your app has read access to one of the following:
* /proc/self/fd/0
* /dev/tty
* /dev/tty[0...6]
* /dev/vc/0
* /dev/console
This is usually not a problem if you run from the physical terminal (as opposed
to running from a pseudo terminal, such as via SSH). If running from a PTS, a
quick workaround is to run your app as root or add yourself to the tty group,
then re-login to the system.
sudo usermod -aG tty `whoami`
The keyboard layout used by SDL is the same as the one the kernel uses.
To configure the layout on Raspbian:
sudo dpkg-reconfigure keyboard-configuration
To configure the locale, which controls which keys are interpreted as letters,
this determining the CAPS LOCK behavior:
sudo dpkg-reconfigure locales
OpenGL problems
---------------
If you have desktop OpenGL headers installed at build time in your RPi or cross
compilation environment, support for it will be built in. However, the chipset
does not actually have support for it, which causes issues in certain SDL apps
since the presence of OpenGL support supersedes the ES/ES2 variants.
The workaround is to disable OpenGL at configuration time:
./configure --disable-video-opengl
Or if the application uses the Render functions, you can use the SDL_RENDER_DRIVER
environment variable:
export SDL_RENDER_DRIVER=opengles2
Notes
-----
* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
leaking into the console only if it has root privileges. Launching apps locally
does not suffer from this issue.
Raspberry Pi
============
Requirements:
Raspbian (other Linux distros may work as well).
Features
--------
* Works without X11
* Hardware accelerated OpenGL ES 2.x
* Sound via ALSA
* Input (mouse/keyboard/joystick) via EVDEV
* Hotplugging of input devices via UDEV
Raspbian Build Dependencies
---------------------------
sudo apt-get install libudev-dev libasound2-dev libdbus-1-dev
You also need the VideoCore binary stuff that ships in /opt/vc for EGL and
OpenGL ES 2.x, it usually comes pre-installed, but in any case:
sudo apt-get install libraspberrypi0 libraspberrypi-bin libraspberrypi-dev
NEON
----
If your Pi has NEON support, make sure you add -mfpu=neon to your CFLAGS so
that SDL will select some otherwise-disabled highly-optimized code. The
original Pi units don't have NEON, the Pi2 probably does, and the Pi3
definitely does.
Cross compiling from x86 Linux
------------------------------
To cross compile SDL for Raspbian from your desktop machine, you'll need a
Raspbian system root and the cross compilation tools. We'll assume these tools
will be placed in /opt/rpi-tools
sudo git clone --depth 1 https://github.com/raspberrypi/tools /opt/rpi-tools
You'll also need a Raspbian binary image.
Get it from: http://downloads.raspberrypi.org/raspbian_latest
After unzipping, you'll get file with a name like: "<date>-wheezy-raspbian.img"
Let's assume the sysroot will be built in /opt/rpi-sysroot.
export SYSROOT=/opt/rpi-sysroot
sudo kpartx -a -v <path_to_raspbian_image>.img
sudo mount -o loop /dev/mapper/loop0p2 /mnt
sudo cp -r /mnt $SYSROOT
sudo apt-get install qemu binfmt-support qemu-user-static
sudo cp /usr/bin/qemu-arm-static $SYSROOT/usr/bin
sudo mount --bind /dev $SYSROOT/dev
sudo mount --bind /proc $SYSROOT/proc
sudo mount --bind /sys $SYSROOT/sys
Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
sudo chroot $SYSROOT
apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev
exit
sudo umount $SYSROOT/dev
sudo umount $SYSROOT/proc
sudo umount $SYSROOT/sys
sudo umount /mnt
There's one more fix required, as the libdl.so symlink uses an absolute path
which doesn't quite work in our setup.
sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so
The final step is compiling SDL itself.
export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux"
cd <SDL SOURCE>
mkdir -p build;cd build
LDFLAGS="-L$SYSROOT/opt/vc/lib" ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd
make
make install
To be able to deploy this to /usr/local in the Raspbian system you need to fix up a few paths:
perl -w -pi -e "s#$PWD/rpi-sdl2-installed#/usr/local#g;" ./rpi-sdl2-installed/lib/libSDL2.la ./rpi-sdl2-installed/lib/pkgconfig/sdl2.pc ./rpi-sdl2-installed/bin/sdl2-config
Apps don't work or poor video/audio performance
-----------------------------------------------
If you get sound problems, buffer underruns, etc, run "sudo rpi-update" to
update the RPi's firmware. Note that doing so will fix these problems, but it
will also render the CMA - Dynamic Memory Split functionality useless.
Also, by default the Raspbian distro configures the GPU RAM at 64MB, this is too
low in general, specially if a 1080p TV is hooked up.
See here how to configure this setting: http://elinux.org/RPiconfig
Using a fixed gpu_mem=128 is the best option (specially if you updated the
firmware, using CMA probably won't work, at least it's the current case).
No input
--------
Make sure you belong to the "input" group.
sudo usermod -aG input `whoami`
No HDMI Audio
-------------
If you notice that ALSA works but there's no audio over HDMI, try adding:
hdmi_drive=2
to your config.txt file and reboot.
Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062
Text Input API support
----------------------
The Text Input API is supported, with translation of scan codes done via the
kernel symbol tables. For this to work, SDL needs access to a valid console.
If you notice there's no SDL_TEXTINPUT message being emitted, double check that
your app has read access to one of the following:
* /proc/self/fd/0
* /dev/tty
* /dev/tty[0...6]
* /dev/vc/0
* /dev/console
This is usually not a problem if you run from the physical terminal (as opposed
to running from a pseudo terminal, such as via SSH). If running from a PTS, a
quick workaround is to run your app as root or add yourself to the tty group,
then re-login to the system.
sudo usermod -aG tty `whoami`
The keyboard layout used by SDL is the same as the one the kernel uses.
To configure the layout on Raspbian:
sudo dpkg-reconfigure keyboard-configuration
To configure the locale, which controls which keys are interpreted as letters,
this determining the CAPS LOCK behavior:
sudo dpkg-reconfigure locales
OpenGL problems
---------------
If you have desktop OpenGL headers installed at build time in your RPi or cross
compilation environment, support for it will be built in. However, the chipset
does not actually have support for it, which causes issues in certain SDL apps
since the presence of OpenGL support supersedes the ES/ES2 variants.
The workaround is to disable OpenGL at configuration time:
./configure --disable-video-opengl
Or if the application uses the Render functions, you can use the SDL_RENDER_DRIVER
environment variable:
export SDL_RENDER_DRIVER=opengles2
Notes
-----
* When launching apps remotely (via SSH), SDL can prevent local keystrokes from
leaking into the console only if it has root privileges. Launching apps locally
does not suffer from this issue.
+41 -41
View File
@@ -1,41 +1,41 @@
RISC OS
=======
Requirements:
* RISC OS 3.5 or later.
* [SharedUnixLibrary](http://www.riscos.info/packages/LibraryDetails.html#SharedUnixLibraryarm).
* [DigitalRenderer](http://www.riscos.info/packages/LibraryDetails.html#DRendererarm), for audio support.
* [Iconv](http://www.netsurf-browser.org/projects/iconv/), for `SDL_iconv` and related functions.
Compiling:
----------
Currently, SDL2 for RISC OS only supports compiling with GCCSDK under Linux. Both the autoconf and CMake build systems are supported.
The following commands can be used to build SDL2 for RISC OS using autoconf:
./configure --host=arm-unknown-riscos --prefix=$GCCSDK_INSTALL_ENV --disable-gcc-atomics
make
make install
The following commands can be used to build SDL2 for RISC OS using CMake:
cmake -Bbuild-riscos -DCMAKE_TOOLCHAIN_FILE=$GCCSDK_INSTALL_ENV/toolchain-riscos.cmake -DRISCOS=ON -DCMAKE_INSTALL_PREFIX=$GCCSDK_INSTALL_ENV -DCMAKE_BUILD_TYPE=Release -DSDL_GCC_ATOMICS=OFF
cmake --build build-riscos
cmake --build build-riscos --target install
Current level of implementation
-------------------------------
The video driver currently provides full screen video support with keyboard and mouse input. Windowed mode is not yet supported, but is planned in the future. Only software rendering is supported.
The filesystem APIs return either Unix-style paths or RISC OS-style paths based on the value of the `__riscosify_control` symbol, as is standard for UnixLib functions.
The audio, loadso, thread and timer APIs are currently provided by UnixLib.
GCC atomics are currently broken on some platforms, meaning it's currently necessary to compile with `--disable-gcc-atomics` using autotools or `-DSDL_GCC_ATOMICS=OFF` using CMake.
The joystick, locale and power APIs are not yet implemented.
RISC OS
=======
Requirements:
* RISC OS 3.5 or later.
* [SharedUnixLibrary](http://www.riscos.info/packages/LibraryDetails.html#SharedUnixLibraryarm).
* [DigitalRenderer](http://www.riscos.info/packages/LibraryDetails.html#DRendererarm), for audio support.
* [Iconv](http://www.netsurf-browser.org/projects/iconv/), for `SDL_iconv` and related functions.
Compiling:
----------
Currently, SDL2 for RISC OS only supports compiling with GCCSDK under Linux. Both the autoconf and CMake build systems are supported.
The following commands can be used to build SDL2 for RISC OS using autoconf:
./configure --host=arm-unknown-riscos --prefix=$GCCSDK_INSTALL_ENV --disable-gcc-atomics
make
make install
The following commands can be used to build SDL2 for RISC OS using CMake:
cmake -Bbuild-riscos -DCMAKE_TOOLCHAIN_FILE=$GCCSDK_INSTALL_ENV/toolchain-riscos.cmake -DRISCOS=ON -DCMAKE_INSTALL_PREFIX=$GCCSDK_INSTALL_ENV -DCMAKE_BUILD_TYPE=Release -DSDL_GCC_ATOMICS=OFF
cmake --build build-riscos
cmake --build build-riscos --target install
Current level of implementation
-------------------------------
The video driver currently provides full screen video support with keyboard and mouse input. Windowed mode is not yet supported, but is planned in the future. Only software rendering is supported.
The filesystem APIs return either Unix-style paths or RISC OS-style paths based on the value of the `__riscosify_control` symbol, as is standard for UnixLib functions.
The audio, loadso, thread and timer APIs are currently provided by UnixLib.
GCC atomics are currently broken on some platforms, meaning it's currently necessary to compile with `--disable-gcc-atomics` using autotools or `-DSDL_GCC_ATOMICS=OFF` using CMake.
The joystick, locale and power APIs are not yet implemented.
+86 -86
View File
@@ -1,86 +1,86 @@
Touch
===========================================================================
System Specific Notes
===========================================================================
Linux:
The linux touch system is currently based off event streams, and proc/bus/devices. The active user must be given permissions to read /dev/input/TOUCHDEVICE, where TOUCHDEVICE is the event stream for your device. Currently only Wacom tablets are supported. If you have an unsupported tablet contact me at jim.tla+sdl_touch@gmail.com and I will help you get support for it.
Mac:
The Mac and iPhone APIs are pretty. If your touch device supports them then you'll be fine. If it doesn't, then there isn't much we can do.
iPhone:
Works out of box.
Windows:
Unfortunately there is no windows support as of yet. Support for Windows 7 is planned, but we currently have no way to test. If you have a Windows 7 WM_TOUCH supported device, and are willing to help test please contact me at jim.tla+sdl_touch@gmail.com
===========================================================================
Events
===========================================================================
SDL_FINGERDOWN:
Sent when a finger (or stylus) is placed on a touch device.
Fields:
* event.tfinger.touchId - the Id of the touch device.
* event.tfinger.fingerId - the Id of the finger which just went down.
* event.tfinger.x - the x coordinate of the touch (0..1)
* event.tfinger.y - the y coordinate of the touch (0..1)
* event.tfinger.pressure - the pressure of the touch (0..1)
SDL_FINGERMOTION:
Sent when a finger (or stylus) is moved on the touch device.
Fields:
Same as SDL_FINGERDOWN but with additional:
* event.tfinger.dx - change in x coordinate during this motion event.
* event.tfinger.dy - change in y coordinate during this motion event.
SDL_FINGERUP:
Sent when a finger (or stylus) is lifted from the touch device.
Fields:
Same as SDL_FINGERDOWN.
===========================================================================
Functions
===========================================================================
SDL provides the ability to access the underlying SDL_Finger structures.
These structures should _never_ be modified.
The following functions are included from SDL_touch.h
To get a SDL_TouchID call SDL_GetTouchDevice(int index).
This returns a SDL_TouchID.
IMPORTANT: If the touch has been removed, or there is no touch with the given index, SDL_GetTouchDevice() will return 0. Be sure to check for this!
The number of touch devices can be queried with SDL_GetNumTouchDevices().
A SDL_TouchID may be used to get pointers to SDL_Finger.
SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
The most common reason to access SDL_Finger is to query the fingers outside the event. In most cases accessing the fingers is using the event. This would be accomplished by code like the following:
float x = event.tfinger.x;
float y = event.tfinger.y;
To get a SDL_Finger, call SDL_GetTouchFinger(SDL_TouchID touchID, int index), where touchID is a SDL_TouchID, and index is the requested finger.
This returns a SDL_Finger *, or NULL if the finger does not exist, or has been removed.
A SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus _before_ the SDL_FINGERUP event is polled.
As a result, be very careful to check for NULL return values.
A SDL_Finger has the following fields:
* x, y:
The current coordinates of the touch.
* pressure:
The pressure of the touch.
===========================================================================
Notes
===========================================================================
For a complete example see test/testgesture.c
Please direct questions/comments to:
jim.tla+sdl_touch@gmail.com
(original author, API was changed since)
Touch
===========================================================================
System Specific Notes
===========================================================================
Linux:
The linux touch system is currently based off event streams, and proc/bus/devices. The active user must be given permissions to read /dev/input/TOUCHDEVICE, where TOUCHDEVICE is the event stream for your device. Currently only Wacom tablets are supported. If you have an unsupported tablet contact me at jim.tla+sdl_touch@gmail.com and I will help you get support for it.
Mac:
The Mac and iPhone APIs are pretty. If your touch device supports them then you'll be fine. If it doesn't, then there isn't much we can do.
iPhone:
Works out of box.
Windows:
Unfortunately there is no windows support as of yet. Support for Windows 7 is planned, but we currently have no way to test. If you have a Windows 7 WM_TOUCH supported device, and are willing to help test please contact me at jim.tla+sdl_touch@gmail.com
===========================================================================
Events
===========================================================================
SDL_FINGERDOWN:
Sent when a finger (or stylus) is placed on a touch device.
Fields:
* event.tfinger.touchId - the Id of the touch device.
* event.tfinger.fingerId - the Id of the finger which just went down.
* event.tfinger.x - the x coordinate of the touch (0..1)
* event.tfinger.y - the y coordinate of the touch (0..1)
* event.tfinger.pressure - the pressure of the touch (0..1)
SDL_FINGERMOTION:
Sent when a finger (or stylus) is moved on the touch device.
Fields:
Same as SDL_FINGERDOWN but with additional:
* event.tfinger.dx - change in x coordinate during this motion event.
* event.tfinger.dy - change in y coordinate during this motion event.
SDL_FINGERUP:
Sent when a finger (or stylus) is lifted from the touch device.
Fields:
Same as SDL_FINGERDOWN.
===========================================================================
Functions
===========================================================================
SDL provides the ability to access the underlying SDL_Finger structures.
These structures should _never_ be modified.
The following functions are included from SDL_touch.h
To get a SDL_TouchID call SDL_GetTouchDevice(int index).
This returns a SDL_TouchID.
IMPORTANT: If the touch has been removed, or there is no touch with the given index, SDL_GetTouchDevice() will return 0. Be sure to check for this!
The number of touch devices can be queried with SDL_GetNumTouchDevices().
A SDL_TouchID may be used to get pointers to SDL_Finger.
SDL_GetNumTouchFingers(touchID) may be used to get the number of fingers currently down on the device.
The most common reason to access SDL_Finger is to query the fingers outside the event. In most cases accessing the fingers is using the event. This would be accomplished by code like the following:
float x = event.tfinger.x;
float y = event.tfinger.y;
To get a SDL_Finger, call SDL_GetTouchFinger(SDL_TouchID touchID, int index), where touchID is a SDL_TouchID, and index is the requested finger.
This returns a SDL_Finger *, or NULL if the finger does not exist, or has been removed.
A SDL_Finger is guaranteed to be persistent for the duration of a touch, but it will be de-allocated as soon as the finger is removed. This occurs when the SDL_FINGERUP event is _added_ to the event queue, and thus _before_ the SDL_FINGERUP event is polled.
As a result, be very careful to check for NULL return values.
A SDL_Finger has the following fields:
* x, y:
The current coordinates of the touch.
* pressure:
The pressure of the touch.
===========================================================================
Notes
===========================================================================
For a complete example see test/testgesture.c
Please direct questions/comments to:
jim.tla+sdl_touch@gmail.com
(original author, API was changed since)
+60 -60
View File
@@ -1,60 +1,60 @@
# Versioning
## Since 2.23.0
SDL follows an "odd/even" versioning policy, similar to GLib, GTK, Flatpak
and older versions of the Linux kernel:
* The major version (first part) increases when backwards compatibility
is broken, which will happen infrequently.
* If the minor version (second part) is divisible by 2
(for example 2.24.x, 2.26.x), this indicates a version of SDL that
is believed to be stable and suitable for production use.
* In stable releases, the patchlevel or micro version (third part)
indicates bugfix releases. Bugfix releases should not add or
remove ABI, so the ".0" release (for example 2.24.0) should be
forwards-compatible with all the bugfix releases from the
same cycle (for example 2.24.1).
* The minor version increases when new API or ABI is added, or when
other significant changes are made. Newer minor versions are
backwards-compatible, but not fully forwards-compatible.
For example, programs built against SDL 2.24.x should work fine
with SDL 2.26.x, but programs built against SDL 2.26.x will not
necessarily work with 2.24.x.
* If the minor version (second part) is not divisible by 2
(for example 2.23.x, 2.25.x), this indicates a development prerelease
of SDL that is not suitable for stable software distributions.
Use with caution.
* The patchlevel or micro version (third part) increases with
each prerelease.
* Each prerelease might add new API and/or ABI.
* Prereleases are backwards-compatible with older stable branches.
For example, 2.25.x will be backwards-compatible with 2.24.x.
* Prereleases are not guaranteed to be backwards-compatible with
each other. For example, new API or ABI added in 2.25.1
might be removed or changed in 2.25.2.
If this would be a problem for you, please do not use prereleases.
* Only upgrade to a prerelease if you can guarantee that you will
promptly upgrade to the stable release that follows it.
For example, do not upgrade to 2.23.x unless you will be able to
upgrade to 2.24.0 when it becomes available.
* Software distributions that have a freeze policy (in particular Linux
distributions with a release cycle, such as Debian and Fedora)
should usually only package stable releases, and not prereleases.
## Before 2.23.0
Older versions of SDL followed a similar policy, but instead of the
odd/even rule applying to the minor version, it applied to the patchlevel
(micro version, third part). For example, 2.0.22 was a stable release
and 2.0.21 was a prerelease.
# Versioning
## Since 2.23.0
SDL follows an "odd/even" versioning policy, similar to GLib, GTK, Flatpak
and older versions of the Linux kernel:
* The major version (first part) increases when backwards compatibility
is broken, which will happen infrequently.
* If the minor version (second part) is divisible by 2
(for example 2.24.x, 2.26.x), this indicates a version of SDL that
is believed to be stable and suitable for production use.
* In stable releases, the patchlevel or micro version (third part)
indicates bugfix releases. Bugfix releases should not add or
remove ABI, so the ".0" release (for example 2.24.0) should be
forwards-compatible with all the bugfix releases from the
same cycle (for example 2.24.1).
* The minor version increases when new API or ABI is added, or when
other significant changes are made. Newer minor versions are
backwards-compatible, but not fully forwards-compatible.
For example, programs built against SDL 2.24.x should work fine
with SDL 2.26.x, but programs built against SDL 2.26.x will not
necessarily work with 2.24.x.
* If the minor version (second part) is not divisible by 2
(for example 2.23.x, 2.25.x), this indicates a development prerelease
of SDL that is not suitable for stable software distributions.
Use with caution.
* The patchlevel or micro version (third part) increases with
each prerelease.
* Each prerelease might add new API and/or ABI.
* Prereleases are backwards-compatible with older stable branches.
For example, 2.25.x will be backwards-compatible with 2.24.x.
* Prereleases are not guaranteed to be backwards-compatible with
each other. For example, new API or ABI added in 2.25.1
might be removed or changed in 2.25.2.
If this would be a problem for you, please do not use prereleases.
* Only upgrade to a prerelease if you can guarantee that you will
promptly upgrade to the stable release that follows it.
For example, do not upgrade to 2.23.x unless you will be able to
upgrade to 2.24.0 when it becomes available.
* Software distributions that have a freeze policy (in particular Linux
distributions with a release cycle, such as Debian and Fedora)
should usually only package stable releases, and not prereleases.
## Before 2.23.0
Older versions of SDL followed a similar policy, but instead of the
odd/even rule applying to the minor version, it applied to the patchlevel
(micro version, third part). For example, 2.0.22 was a stable release
and 2.0.21 was a prerelease.
+114 -114
View File
@@ -1,114 +1,114 @@
Using SDL with Microsoft Visual C++
===================================
### by Lion Kimbro with additions by James Turk
You can either use the precompiled libraries from the [SDL](https://www.libsdl.org/download.php) web site, or you can build SDL
yourself.
### Building SDL
0. To build SDL, your machine must, at a minimum, have the DirectX9.0c SDK installed. It may or may not be retrievable from
the [Microsoft](https://www.microsoft.com) website, so you might need to locate it [online](https://duckduckgo.com/?q=directx9.0c+sdk+download&t=h_&ia=web).
_Editor's note: I've been able to successfully build SDL using Visual Studio 2019 **without** the DX9.0c SDK_
1. Open the Visual Studio solution file at `./VisualC/SDL.sln`.
2. Your IDE will likely prompt you to upgrade this solution file to whatever later version of the IDE you're using. In the `Retarget Projects` dialog,
all of the affected project files should be checked allowing you to use the latest `Windows SDK Version` you have installed, along with
the `Platform Toolset`.
If you choose *NOT* to upgrade to use the latest `Windows SDK Version` or `Platform Toolset`, then you'll need the `Visual Studio 2010 Platform Toolset`.
3. Build the `.dll` and `.lib` files by right clicking on each project in turn (Projects are listed in the _Workspace_
panel in the _FileView_ tab), and selecting `Build`.
You may get a few warnings, but you should not get any errors.
Later, we will refer to the following `.lib` and `.dll` files that have just been generated:
- `./VisualC/Win32/Debug/SDL2.dll` or `./VisualC/Win32/Release/SDL2.dll`
- `./VisualC/Win32/Debug/SDL2.lib` or `./VisualC/Win32/Release/SDL2.lib`
- `./VisualC/Win32/Debug/SDL2main.lib` or `./VisualC/Win32/Release/SDL2main.lib`
_Note for the `x64` versions, just replace `Win32` in the path with `x64`_
### Creating a Project with SDL
- Create a project as a `Win32 Application`.
- Create a C++ file for your project.
- Set the C runtime to `Multi-threaded DLL` in the menu:
`Project|Settings|C/C++ tab|Code Generation|Runtime Library `.
- Add the SDL `include` directory to your list of includes in the menu:
`Project|Settings|C/C++ tab|Preprocessor|Additional include directories `
*VC7 Specific: Instead of doing this, I find it easier to add the
include and library directories to the list that VC7 keeps. Do this by
selecting Tools|Options|Projects|VC++ Directories and under the "Show
Directories For:" dropbox select "Include Files", and click the "New
Directory Icon" and add the [SDLROOT]\\include directory (e.g. If you
installed to c:\\SDL\\ add c:\\SDL\\include). Proceed to change the
dropbox selection to "Library Files" and add [SDLROOT]\\lib.*
The "include directory" I am referring to is the `./include` folder.
Now we're going to use the files that we had created earlier in the *Build SDL* step.
Copy the following file into your Project directory:
- `SDL2.dll`
Add the following files to your project (It is not necessary to copy them to your project directory):
- `SDL2.lib`
- `SDL2main.lib`
To add them to your project, right click on your project, and select
`Add files to project`.
**Instead of adding the files to your project, it is more desirable to add them to the linker options: Project|Properties|Linker|Command Line
and type the names of the libraries to link with in the "Additional Options:" box. Note: This must be done for each build configuration
(e.g. Release,Debug).**
### Hello SDL2
Here's a sample SDL snippet to verify everything is setup in your IDE:
```
#include "SDL.h"
int main( int argc, char* argv[] )
{
const int WIDTH = 640;
const int HEIGHT = 480;
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL2 Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
```
### That's it!
I hope that this document has helped you get through the most difficult part of using the SDL: installing it.
Suggestions for improvements should be posted to the [Github Issues](https://github.com/libsdl-org/SDL/issues).
### Credits
Thanks to [Paulus Esterhazy](mailto:pesterhazy@gmx.net), for the work on VC++ port.
This document was originally called "VisualC.txt", and was written by [Sam Lantinga](mailto:slouken@libsdl.org).
Later, it was converted to HTML and expanded into the document that you see today by [Lion Kimbro](mailto:snowlion@sprynet.com).
Minor Fixes and Visual C++ 7 Information (In Green) was added by [James Turk](mailto:james@conceptofzero.net)
Using SDL with Microsoft Visual C++
===================================
### by Lion Kimbro with additions by James Turk
You can either use the precompiled libraries from the [SDL](https://www.libsdl.org/download.php) web site, or you can build SDL
yourself.
### Building SDL
0. To build SDL, your machine must, at a minimum, have the DirectX9.0c SDK installed. It may or may not be retrievable from
the [Microsoft](https://www.microsoft.com) website, so you might need to locate it [online](https://duckduckgo.com/?q=directx9.0c+sdk+download&t=h_&ia=web).
_Editor's note: I've been able to successfully build SDL using Visual Studio 2019 **without** the DX9.0c SDK_
1. Open the Visual Studio solution file at `./VisualC/SDL.sln`.
2. Your IDE will likely prompt you to upgrade this solution file to whatever later version of the IDE you're using. In the `Retarget Projects` dialog,
all of the affected project files should be checked allowing you to use the latest `Windows SDK Version` you have installed, along with
the `Platform Toolset`.
If you choose *NOT* to upgrade to use the latest `Windows SDK Version` or `Platform Toolset`, then you'll need the `Visual Studio 2010 Platform Toolset`.
3. Build the `.dll` and `.lib` files by right clicking on each project in turn (Projects are listed in the _Workspace_
panel in the _FileView_ tab), and selecting `Build`.
You may get a few warnings, but you should not get any errors.
Later, we will refer to the following `.lib` and `.dll` files that have just been generated:
- `./VisualC/Win32/Debug/SDL2.dll` or `./VisualC/Win32/Release/SDL2.dll`
- `./VisualC/Win32/Debug/SDL2.lib` or `./VisualC/Win32/Release/SDL2.lib`
- `./VisualC/Win32/Debug/SDL2main.lib` or `./VisualC/Win32/Release/SDL2main.lib`
_Note for the `x64` versions, just replace `Win32` in the path with `x64`_
### Creating a Project with SDL
- Create a project as a `Win32 Application`.
- Create a C++ file for your project.
- Set the C runtime to `Multi-threaded DLL` in the menu:
`Project|Settings|C/C++ tab|Code Generation|Runtime Library `.
- Add the SDL `include` directory to your list of includes in the menu:
`Project|Settings|C/C++ tab|Preprocessor|Additional include directories `
*VC7 Specific: Instead of doing this, I find it easier to add the
include and library directories to the list that VC7 keeps. Do this by
selecting Tools|Options|Projects|VC++ Directories and under the "Show
Directories For:" dropbox select "Include Files", and click the "New
Directory Icon" and add the [SDLROOT]\\include directory (e.g. If you
installed to c:\\SDL\\ add c:\\SDL\\include). Proceed to change the
dropbox selection to "Library Files" and add [SDLROOT]\\lib.*
The "include directory" I am referring to is the `./include` folder.
Now we're going to use the files that we had created earlier in the *Build SDL* step.
Copy the following file into your Project directory:
- `SDL2.dll`
Add the following files to your project (It is not necessary to copy them to your project directory):
- `SDL2.lib`
- `SDL2main.lib`
To add them to your project, right click on your project, and select
`Add files to project`.
**Instead of adding the files to your project, it is more desirable to add them to the linker options: Project|Properties|Linker|Command Line
and type the names of the libraries to link with in the "Additional Options:" box. Note: This must be done for each build configuration
(e.g. Release,Debug).**
### Hello SDL2
Here's a sample SDL snippet to verify everything is setup in your IDE:
```
#include "SDL.h"
int main( int argc, char* argv[] )
{
const int WIDTH = 640;
const int HEIGHT = 480;
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL2 Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
```
### That's it!
I hope that this document has helped you get through the most difficult part of using the SDL: installing it.
Suggestions for improvements should be posted to the [Github Issues](https://github.com/libsdl-org/SDL/issues).
### Credits
Thanks to [Paulus Esterhazy](mailto:pesterhazy@gmx.net), for the work on VC++ port.
This document was originally called "VisualC.txt", and was written by [Sam Lantinga](mailto:slouken@libsdl.org).
Later, it was converted to HTML and expanded into the document that you see today by [Lion Kimbro](mailto:snowlion@sprynet.com).
Minor Fixes and Visual C++ 7 Information (In Green) was added by [James Turk](mailto:james@conceptofzero.net)
+33 -33
View File
@@ -1,33 +1,33 @@
PS Vita
=======
SDL port for the Sony Playstation Vita and Sony Playstation TV
Credit to
* xerpi, cpasjuste and rsn8887 for initial (vita2d) port
* vitasdk/dolcesdk devs
* CBPS discord (Namely Graphene and SonicMastr)
Building
--------
To build for the PSVita, make sure you have vitasdk and cmake installed and run:
```
cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
```
Notes
-----
* gles1/gles2 support and renderers are disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PVR=ON`
These renderers support 720p and 1080i resolutions. These can be specified with:
`SDL_setenv("VITA_RESOLUTION", "720", 1);` and `SDL_setenv("VITA_RESOLUTION", "1080", 1);`
* Desktop GL 1.X and 2.X support and renderers are also disabled by default and also can be enabled with `-DVIDEO_VITA_PVR=ON` as long as gl4es4vita is present in your SDK.
They support the same resolutions as the gles1/gles2 backends and require specifying `SDL_setenv("VITA_PVR_OGL", "1", 1);`
anytime before video subsystem initialization.
* gles2 support via PIB is disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PIB=ON`
* By default SDL emits mouse events for touch events on every touchscreen.
Vita has two touchscreens, so it's recommended to use `SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0");` and handle touch events instead.
Individual touchscreens can be disabled with:
`SDL_setenv("VITA_DISABLE_TOUCH_FRONT", "1", 1);` and `SDL_setenv("VITA_DISABLE_TOUCH_BACK", "1", 1);`
* Support for L2/R2/R3/R3 buttons, haptic feedback and gamepad led only available on PSTV, or when using external ds4 gamepad on vita.
PS Vita
=======
SDL port for the Sony Playstation Vita and Sony Playstation TV
Credit to
* xerpi, cpasjuste and rsn8887 for initial (vita2d) port
* vitasdk/dolcesdk devs
* CBPS discord (Namely Graphene and SonicMastr)
Building
--------
To build for the PSVita, make sure you have vitasdk and cmake installed and run:
```
cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
```
Notes
-----
* gles1/gles2 support and renderers are disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PVR=ON`
These renderers support 720p and 1080i resolutions. These can be specified with:
`SDL_setenv("VITA_RESOLUTION", "720", 1);` and `SDL_setenv("VITA_RESOLUTION", "1080", 1);`
* Desktop GL 1.X and 2.X support and renderers are also disabled by default and also can be enabled with `-DVIDEO_VITA_PVR=ON` as long as gl4es4vita is present in your SDK.
They support the same resolutions as the gles1/gles2 backends and require specifying `SDL_setenv("VITA_PVR_OGL", "1", 1);`
anytime before video subsystem initialization.
* gles2 support via PIB is disabled by default and can be enabled by configuring with `-DVIDEO_VITA_PIB=ON`
* By default SDL emits mouse events for touch events on every touchscreen.
Vita has two touchscreens, so it's recommended to use `SDL_SetHint(SDL_HINT_TOUCH_MOUSE_EVENTS, "0");` and handle touch events instead.
Individual touchscreens can be disabled with:
`SDL_setenv("VITA_DISABLE_TOUCH_FRONT", "1", 1);` and `SDL_setenv("VITA_DISABLE_TOUCH_BACK", "1", 1);`
* Support for L2/R2/R3/R3 buttons, haptic feedback and gamepad led only available on PSTV, or when using external ds4 gamepad on vita.
+10 -10
View File
@@ -1,10 +1,10 @@
WinCE
=====
Windows CE is no longer supported by SDL.
We have left the CE support in SDL 1.2 for those that must have it, and we
have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
--ryan.
WinCE
=====
Windows CE is no longer supported by SDL.
We have left the CE support in SDL 1.2 for those that must have it, and we
have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3.
--ryan.
+58 -58
View File
@@ -1,58 +1,58 @@
# Windows
## LLVM and Intel C++ compiler support
SDL will build with the Visual Studio project files with LLVM-based compilers, such as the Intel oneAPI C++
compiler, but you'll have to manually add the "-msse3" command line option
to at least the SDL_audiocvt.c source file, and possibly others. This may
not be necessary if you build SDL with CMake instead of the included Visual
Studio solution.
Details are here: https://github.com/libsdl-org/SDL/issues/5186
## OpenGL ES 2.x support
SDL has support for OpenGL ES 2.x under Windows via two alternative
implementations.
The most straightforward method consists in running your app in a system with
a graphic card paired with a relatively recent (as of November of 2013) driver
which supports the WGL_EXT_create_context_es2_profile extension. Vendors known
to ship said extension on Windows currently include nVidia and Intel.
The other method involves using the
[ANGLE library](https://code.google.com/p/angleproject/). If an OpenGL ES 2.x
context is requested and no WGL_EXT_create_context_es2_profile extension is
found, SDL will try to load the libEGL.dll library provided by ANGLE.
To obtain the ANGLE binaries, you can either compile from source from
https://chromium.googlesource.com/angle/angle or copy the relevant binaries
from a recent Chrome/Chromium install for Windows. The files you need are:
- libEGL.dll
- libGLESv2.dll
- d3dcompiler_46.dll (supports Windows Vista or later, better shader
compiler) *or* d3dcompiler_43.dll (supports Windows XP or later)
If you compile ANGLE from source, you can configure it so it does not need the
d3dcompiler_* DLL at all (for details on this, see their documentation).
However, by default SDL will try to preload the d3dcompiler_46.dll to
comply with ANGLE's requirements. If you wish SDL to preload
d3dcompiler_43.dll (to support Windows XP) or to skip this step at all, you
can use the SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more
details).
Known Bugs:
- SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
that there's a bug in the library which prevents the window contents from
refreshing if this is set to anything other than the default value.
## Vulkan Surface Support
Support for creating Vulkan surfaces is configured on by default. To disable
it change the value of `SDL_VIDEO_VULKAN` to 0 in `SDL_config_windows.h`. You
must install the [Vulkan SDK](https://www.lunarg.com/vulkan-sdk/) in order to
use Vulkan graphics in your application.
# Windows
## LLVM and Intel C++ compiler support
SDL will build with the Visual Studio project files with LLVM-based compilers, such as the Intel oneAPI C++
compiler, but you'll have to manually add the "-msse3" command line option
to at least the SDL_audiocvt.c source file, and possibly others. This may
not be necessary if you build SDL with CMake instead of the included Visual
Studio solution.
Details are here: https://github.com/libsdl-org/SDL/issues/5186
## OpenGL ES 2.x support
SDL has support for OpenGL ES 2.x under Windows via two alternative
implementations.
The most straightforward method consists in running your app in a system with
a graphic card paired with a relatively recent (as of November of 2013) driver
which supports the WGL_EXT_create_context_es2_profile extension. Vendors known
to ship said extension on Windows currently include nVidia and Intel.
The other method involves using the
[ANGLE library](https://code.google.com/p/angleproject/). If an OpenGL ES 2.x
context is requested and no WGL_EXT_create_context_es2_profile extension is
found, SDL will try to load the libEGL.dll library provided by ANGLE.
To obtain the ANGLE binaries, you can either compile from source from
https://chromium.googlesource.com/angle/angle or copy the relevant binaries
from a recent Chrome/Chromium install for Windows. The files you need are:
- libEGL.dll
- libGLESv2.dll
- d3dcompiler_46.dll (supports Windows Vista or later, better shader
compiler) *or* d3dcompiler_43.dll (supports Windows XP or later)
If you compile ANGLE from source, you can configure it so it does not need the
d3dcompiler_* DLL at all (for details on this, see their documentation).
However, by default SDL will try to preload the d3dcompiler_46.dll to
comply with ANGLE's requirements. If you wish SDL to preload
d3dcompiler_43.dll (to support Windows XP) or to skip this step at all, you
can use the SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more
details).
Known Bugs:
- SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears
that there's a bug in the library which prevents the window contents from
refreshing if this is set to anything other than the default value.
## Vulkan Surface Support
Support for creating Vulkan surfaces is configured on by default. To disable
it change the value of `SDL_VIDEO_VULKAN` to 0 in `SDL_config_windows.h`. You
must install the [Vulkan SDK](https://www.lunarg.com/vulkan-sdk/) in order to
use Vulkan graphics in your application.
File diff suppressed because it is too large. Load diff
+63 -63
View File
@@ -1,63 +1,63 @@
# Simple DirectMedia Layer
https://www.libsdl.org/
Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.
SDL officially supports Windows, macOS, Linux, iOS, and Android.
Support for other platforms may be found in the source code.
SDL is written in C, works natively with C++, and there are bindings
available for several other languages, including C# and Python.
This library is distributed under the zlib license, which can be found
in the file "LICENSE.txt".
The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
- [Android](README-android.md)
- [CMake](README-cmake.md)
- [DirectFB](README-directfb.md)
- [DynAPI](README-dynapi.md)
- [Emscripten](README-emscripten.md)
- [GDK](README-gdk.md)
- [Gesture](README-gesture.md)
- [Git](README-git.md)
- [iOS](README-ios.md)
- [Linux](README-linux.md)
- [macOS](README-macos.md)
- [OS/2](README-os2.md)
- [Native Client](README-nacl.md)
- [Pandora](README-pandora.md)
- [Supported Platforms](README-platforms.md)
- [Porting information](README-porting.md)
- [PSP](README-psp.md)
- [PS2](README-ps2.md)
- [Raspberry Pi](README-raspberrypi.md)
- [Touch](README-touch.md)
- [Versions](README-versions.md)
- [WinCE](README-wince.md)
- [Windows](README-windows.md)
- [WinRT](README-winrt.md)
- [PSVita](README-vita.md)
- [Nokia N-Gage](README-ngage.md)
If you need help with the library, or just want to discuss SDL related
issues, you can join the [SDL Discourse](https://discourse.libsdl.org/),
which can be used as a web forum or a mailing list, at your preference.
If you want to report bugs or contribute patches, please submit them to
[our bug tracker](https://github.com/libsdl-org/SDL/issues)
Enjoy!
Sam Lantinga <mailto:slouken@libsdl.org>
# Simple DirectMedia Layer
https://www.libsdl.org/
Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.
SDL officially supports Windows, macOS, Linux, iOS, and Android.
Support for other platforms may be found in the source code.
SDL is written in C, works natively with C++, and there are bindings
available for several other languages, including C# and Python.
This library is distributed under the zlib license, which can be found
in the file "LICENSE.txt".
The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation and FAQs are available online at [the wiki](http://wiki.libsdl.org/)
- [Android](README-android.md)
- [CMake](README-cmake.md)
- [DirectFB](README-directfb.md)
- [DynAPI](README-dynapi.md)
- [Emscripten](README-emscripten.md)
- [GDK](README-gdk.md)
- [Gesture](README-gesture.md)
- [Git](README-git.md)
- [iOS](README-ios.md)
- [Linux](README-linux.md)
- [macOS](README-macos.md)
- [OS/2](README-os2.md)
- [Native Client](README-nacl.md)
- [Pandora](README-pandora.md)
- [Supported Platforms](README-platforms.md)
- [Porting information](README-porting.md)
- [PSP](README-psp.md)
- [PS2](README-ps2.md)
- [Raspberry Pi](README-raspberrypi.md)
- [Touch](README-touch.md)
- [Versions](README-versions.md)
- [WinCE](README-wince.md)
- [Windows](README-windows.md)
- [WinRT](README-winrt.md)
- [PSVita](README-vita.md)
- [Nokia N-Gage](README-ngage.md)
If you need help with the library, or just want to discuss SDL related
issues, you can join the [SDL Discourse](https://discourse.libsdl.org/),
which can be used as a web forum or a mailing list, at your preference.
If you want to report bugs or contribute patches, please submit them to
[our bug tracker](https://github.com/libsdl-org/SDL/issues)
Enjoy!
Sam Lantinga <mailto:slouken@libsdl.org>
+1561 -1561
View File
File diff suppressed because it is too large. Load diff
+49 -49
View File
@@ -1,49 +1,49 @@
# Release checklist
When changing the version, run `build-scripts/update-version.sh X Y Z`,
where `X Y Z` are the major version, minor version, and patch level. So
`2 28 1` means "change the version to 2.28.1". This script does much of the
mechanical work.
## New feature release
* Update `WhatsNew.txt`
* Bump version number to 2.EVEN.0:
* `./build-scripts/update-version.sh 2 EVEN 0`
* Do the release
* Update the website file include/header.inc.php to reflect the new version
## New bugfix release
* Check that no new API/ABI was added
* If it was, do a new feature release (see above) instead
* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is even)
* `./build-scripts/update-version.sh 2 Y Z+1`
* Do the release
* Update the website file include/header.inc.php to reflect the new version
## After a feature release
* Create a branch like `release-2.24.x`
* Bump version number to 2.ODD.0 for next development branch
* `./build-scripts/update-version.sh 2 ODD 0`
## New development prerelease
* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is odd)
* `./build-scripts/update-version.sh 2 Y Z+1`
* Do the release
# Release checklist
When changing the version, run `build-scripts/update-version.sh X Y Z`,
where `X Y Z` are the major version, minor version, and patch level. So
`2 28 1` means "change the version to 2.28.1". This script does much of the
mechanical work.
## New feature release
* Update `WhatsNew.txt`
* Bump version number to 2.EVEN.0:
* `./build-scripts/update-version.sh 2 EVEN 0`
* Do the release
* Update the website file include/header.inc.php to reflect the new version
## New bugfix release
* Check that no new API/ABI was added
* If it was, do a new feature release (see above) instead
* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is even)
* `./build-scripts/update-version.sh 2 Y Z+1`
* Do the release
* Update the website file include/header.inc.php to reflect the new version
## After a feature release
* Create a branch like `release-2.24.x`
* Bump version number to 2.ODD.0 for next development branch
* `./build-scripts/update-version.sh 2 ODD 0`
## New development prerelease
* Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is odd)
* `./build-scripts/update-version.sh 2 Y Z+1`
* Do the release
Binary file not shown.
@@ -0,0 +1,65 @@
#!/bin/sh
# Get the canonical path of the folder containing this script
bindir=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
# Calculate the canonical path of the prefix, relative to the folder of this script
prefix=$(cd -P -- "$bindir/.." && printf '%s\n' "$(pwd -P)")
exec_prefix=${prefix}
exec_prefix_set=no
libdir=${exec_prefix}/lib
#usage="\
#Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
usage="\
Usage: $0 [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"
if test $# -eq 0; then
echo "${usage}" 1>&2
exit 1
fi
while test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
case $1 in
--prefix=*)
prefix=$optarg
if test $exec_prefix_set = no ; then
exec_prefix=$optarg
fi
;;
--prefix)
echo $prefix
;;
--exec-prefix=*)
exec_prefix=$optarg
exec_prefix_set=yes
;;
--exec-prefix)
echo $exec_prefix
;;
--version)
echo 2.28.5
;;
--cflags)
echo -I${prefix}/include/SDL2 -Dmain=SDL_main
;;
--libs)
echo -L${exec_prefix}/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
;;
--static-libs)
# --libs|--static-libs)
sdl_static_libs=$(echo "-lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid" | sed -E "s#-lSDL2[ $]#$libdir/libSDL2.a #g")
echo -L${exec_prefix}/lib $sdl_static_libs
;;
*)
echo "${usage}" 1>&2
exit 1
;;
esac
shift
done
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -209,7 +209,7 @@ typedef void (*SDL_KernelMemoryBarrierFunc)();
#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)
#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory")
#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory")
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)
#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__)
#ifdef __thumb__
/* The mcr instruction isn't available in thumb mode, use real functions */
#define SDL_MEMORY_BARRIER_USES_FUNCTION
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -65,8 +65,8 @@ typedef enum
typedef enum
{
SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */
SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */
SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */
} SDL_BlendOperation;
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -131,8 +131,6 @@ typedef enum
SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */
SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */
SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */
SDL_CONTROLLERUPDATECOMPLETE_RESERVED_FOR_SDL3,
SDL_CONTROLLERSTEAMHANDLEUPDATED, /**< Game controller Steam handle has changed */
/* Touch events */
SDL_FINGERDOWN = 0x700,
@@ -448,7 +446,7 @@ typedef struct SDL_ControllerButtonEvent
*/
typedef struct SDL_ControllerDeviceEvent
{
Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, ::SDL_CONTROLLERDEVICEREMAPPED, or ::SDL_CONTROLLERSTEAMHANDLEUPDATED */
Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */
} SDL_ControllerDeviceEvent;
@@ -582,6 +580,15 @@ typedef struct SDL_QuitEvent
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
} SDL_QuitEvent;
/**
* \brief OS Specific event
*/
typedef struct SDL_OSEvent
{
Uint32 type; /**< ::SDL_QUIT */
Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */
} SDL_OSEvent;
/**
* \brief A user-defined event type (event.user.*)
*/
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -64,7 +64,7 @@ extern "C" {
* directory of the application as it is uncommon to store resources outside
* the executable. As such it is not a writable directory.
*
* The returned path is guaranteed to end with a path separator ('\\' on
* The returned path is guaranteed to end with a path separator ('\' on
* Windows, '/' on most other platforms).
*
* The pointer returned is owned by the caller. Please call SDL_free() on the
@@ -120,7 +120,7 @@ extern DECLSPEC char *SDLCALL SDL_GetBasePath(void);
* - ...only use letters, numbers, and spaces. Avoid punctuation like "Game
* Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient.
*
* The returned path is guaranteed to end with a path separator ('\\' on
* The returned path is guaranteed to end with a path separator ('\' on
* Windows, '/' on most other platforms).
*
* The pointer returned is owned by the caller. Please call SDL_free() on the
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -73,8 +73,7 @@ typedef enum
SDL_CONTROLLER_TYPE_NVIDIA_SHIELD,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,
SDL_CONTROLLER_TYPE_MAX
SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR
} SDL_GameControllerType;
typedef enum
@@ -524,20 +523,6 @@ extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameCont
*/
extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);
/**
* Get the Steam Input handle of an opened controller, if available.
*
* Returns an InputHandle_t for the controller that can be used with Steam Input API:
* https://partner.steamgames.com/doc/api/ISteamInput
*
* \param gamecontroller the game controller object to query.
* \returns the gamepad handle, or 0 if unavailable.
*
* \since This function is available since SDL 2.30.0.
*/
extern DECLSPEC Uint64 SDLCALL SDL_GameControllerGetSteamHandle(SDL_GameController *gamecontroller);
/**
* Check if a controller has been opened and is currently connected.
*
@@ -613,9 +598,7 @@ extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);
* and are centered within ~8000 of zero, though advanced UI will allow users to set
* or autodetect the dead zone, which varies between controllers.
*
* Trigger axis values range from 0 (released) to SDL_JOYSTICK_AXIS_MAX
* (fully pressed) when reported by SDL_GameControllerGetAxis(). Note that this is not the
* same range that will be reported by the lower-level SDL_GetJoystickAxis().
* Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX.
*/
typedef enum
{
@@ -704,13 +687,8 @@ SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameController
*
* The axis indices start at index 0.
*
* For thumbsticks, the state is a value ranging from -32768 (up/left)
* to 32767 (down/right).
*
* Triggers range from 0 when released to 32767 when fully pressed, and
* never return a negative value. Note that this differs from the value
* reported by the lower-level SDL_GetJoystickAxis(), which normally uses
* the full range.
* The state is a value ranging from -32768 to 32767. Triggers, however, range
* from 0 to 32767 (they never return a negative value).
*
* \param gamecontroller a game controller
* \param axis an axis index (one of the SDL_GameControllerAxis values)
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -631,110 +631,6 @@ extern "C" {
*/
#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
/**
* A variable containing a list of arcade stick style controllers.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES "SDL_JOYSTICK_ARCADESTICK_DEVICES"
/**
* A variable containing a list of devices that are not arcade stick style controllers. This will override SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED"
/**
* A variable containing a list of devices that should not be considerd joysticks.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES "SDL_JOYSTICK_BLACKLIST_DEVICES"
/**
* A variable containing a list of devices that should be considered joysticks. This will override SDL_HINT_JOYSTICK_BLACKLIST_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED "SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED"
/**
* A variable containing a list of flightstick style controllers.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES "SDL_JOYSTICK_FLIGHTSTICK_DEVICES"
/**
* A variable containing a list of devices that are not flightstick style controllers. This will override SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED "SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED"
/**
* A variable containing a list of devices known to have a GameCube form factor.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES "SDL_JOYSTICK_GAMECUBE_DEVICES"
/**
* A variable containing a list of devices known not to have a GameCube form factor. This will override SDL_HINT_JOYSTICK_GAMECUBE_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED "SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED"
/**
* \brief A variable controlling whether the HIDAPI joystick drivers should be used.
*
@@ -943,17 +839,6 @@ extern "C" {
*/
#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
/**
* \brief A variable controlling whether the HIDAPI driver for the Steam Deck builtin controller should be used.
*
* This variable can be set to the following values:
* "0" - HIDAPI driver is not used
* "1" - HIDAPI driver is used
*
* The default is the value of SDL_HINT_JOYSTICK_HIDAPI
*/
#define SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK "SDL_JOYSTICK_HIDAPI_STEAMDECK"
/**
* \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
*
@@ -1080,24 +965,6 @@ extern "C" {
*/
#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED"
/**
* A variable controlling whether IOKit should be used for controller handling.
*
* This variable can be set to the following values:
* "0" - IOKit is not used
* "1" - IOKit is used (the default)
*/
#define SDL_HINT_JOYSTICK_IOKIT "SDL_JOYSTICK_IOKIT"
/**
* A variable controlling whether GCController should be used for controller handling.
*
* This variable can be set to the following values:
* "0" - GCController is not used
* "1" - GCController is used (the default)
*/
#define SDL_HINT_JOYSTICK_MFI "SDL_JOYSTICK_MFI"
/**
* \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
*
@@ -1140,32 +1007,6 @@ extern "C" {
*/
#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
/**
* A variable containing a list of throttle style controllers.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES "SDL_JOYSTICK_THROTTLE_DEVICES"
/**
* A variable containing a list of devices that are not throttle style controllers. This will override SDL_HINT_JOYSTICK_THROTTLE_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED "SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED"
/**
* \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling.
*
@@ -1175,45 +1016,6 @@ extern "C" {
*/
#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI"
/**
* A variable containing a list of wheel style controllers.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_WHEEL_DEVICES "SDL_JOYSTICK_WHEEL_DEVICES"
/**
* A variable containing a list of devices that are not wheel style controllers. This will override SDL_HINT_JOYSTICK_WHEEL_DEVICES and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED "SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED"
/**
* A variable containing a list of devices known to have all axes centered at zero.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES "SDL_JOYSTICK_ZERO_CENTERED_DEVICES"
/**
* \brief Determines whether SDL enforces that DRM master is required in order
* to initialize the KMSDRM video backend.
@@ -1282,22 +1084,6 @@ extern "C" {
*/
#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
/**
* \brief A variable controlling the default SDL log levels.
*
* This variable is a comma separated set of category=level tokens that define the default logging levels for SDL applications.
*
* The category can be a numeric category, one of "app", "error", "assert", "system", "audio", "video", "render", "input", "test", or `*` for any unspecified category.
*
* The level can be a numeric level, one of "verbose", "debug", "info", "warn", "error", "critical", or "quiet" to disable that category.
*
* You can omit the category if you want to set the logging level for all categories.
*
* If this hint isn't set, the default log levels are equivalent to:
* "app=info,assert=warn,test=verbose,*=error"
*/
#define SDL_HINT_LOGGING "SDL_LOGGING"
/**
* \brief When set don't force the SDL app to become a foreground process
*
@@ -1699,32 +1485,6 @@ extern "C" {
*/
#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE"
/**
* A variable containing a list of ROG gamepad capable mice.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_ROG_GAMEPAD_MICE "SDL_ROG_GAMEPAD_MICE"
/**
* A variable containing a list of devices that are not ROG gamepad capable mice. This will override SDL_HINT_ROG_GAMEPAD_MICE and the built in device list.
*
* The format of the string is a comma separated list of USB VID/PID pairs
* in hexadecimal form, e.g.
*
* 0xAAAA/0xBBBB,0xCCCC/0xDDDD
*
* The variable can also take the form of @file, in which case the named
* file will be loaded and interpreted as the value of the variable.
*/
#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED"
/**
* \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS
*
@@ -2682,22 +2442,6 @@ extern "C" {
*/
#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY"
/**
* Cause SDL to call dbus_shutdown() on quit.
*
* This is useful as a debug tool to validate memory leaks, but shouldn't ever
* be set in production applications, as other libraries used by the application
* might use dbus under the hood and this cause cause crashes if they continue
* after SDL_Quit().
*
* This variable can be set to the following values:
* "0" - SDL will not call dbus_shutdown() on quit (default)
* "1" - SDL will call dbus_shutdown() on quit
*
* This hint is available since SDL 2.30.0.
*/
#define SDL_HINT_SHUTDOWN_DBUS_ON_QUIT "SDL_SHUTDOWN_DBUS_ON_QUIT"
/**
* \brief An enumeration of hint priorities
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -298,10 +298,8 @@ extern DECLSPEC void SDLCALL SDL_ClearComposition(void);
extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
/**
* Set the rectangle used to type Unicode text inputs. Native input methods
* will place a window with word suggestions near it, without covering the
* text being inputted.
*
* Set the rectangle used to type Unicode text inputs.
*
* To start text input in a given location, this function is intended to be
* called before SDL_StartTextInput, although some platforms support moving
* the rectangle even while text input (and a composition) is active.
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -59,7 +59,7 @@ extern "C" {
* By default the application category is enabled at the INFO level,
* the assert category is enabled at the WARN level, test is enabled
* at the VERBOSE level and all other categories are enabled at the
* ERROR level.
* CRITICAL level.
*/
typedef enum
{
@@ -352,7 +352,7 @@ extern DECLSPEC void SDLCALL SDL_LogMessage(int category,
*/
extern DECLSPEC void SDLCALL SDL_LogMessageV(int category,
SDL_LogPriority priority,
SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);
const char *fmt, va_list ap);
/**
* The prototype for the log output callback function.
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,6 +1,6 @@
/*
Simple DirectMedia Layer
Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2023 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
Loaded 100 of 705 files, more files were not shown because too many files have changed in this diff. Show more