Commit graph

234 commits

Author SHA1 Message Date
Denis Pauk
4e46f83b32 8.42RR12: Version bump 2025-02-12 23:00:28 +02:00
Denis Pauk
3f74954db6 Merge remote-tracking branch 'yquake2/master' 2025-02-10 00:34:31 +02:00
Jaime Moreira
9e07dc2485 Cvar to set gamepad's confirm & cancel buttons
Autodetect again needs SDL 2.0.12.
Status bar has correct button prompts in gamepad binding menus.
2025-02-02 16:58:22 -03:00
Jaime Moreira
1d6d17beb3 Button labels by type of Gamepad
Visible only in "customize button" menus.
Cvar set to 'autodetect' by default, which requires SDL 2.0.12
2025-02-02 15:49:37 -03:00
Jaime Moreira
b23bfb6ee2 Gamepad buttons are now SDL3 style
Uses button position instead of label.
SDL2 has to be forced to do this by disabling a hint.
Deleted redundant JOY_BACK definition, it's just the Escape key.
Renamed 'in_sdlbackbutton' to 'joy_escbutton'.
2025-02-02 11:38:43 -03:00
Denis Pauk
a4511bd7f0 Merge remote-tracking branch 'yquake2/master' 2024-12-23 00:25:43 +02:00
SiemensSchuckert
49b4e97f5d
disable certificate validation for HTTPS (#1174)
disable certificate check for HTTPS

disable SSL certificate check - to allow download from servers with self-signed cert, or when some certs are missing from system certificate store that CURL uses

add new cvar `cl_http_verifypeer`
2024-12-22 19:12:48 +01:00
Denis Pauk
dfd2cb3700 Merge remote-tracking branch 'yquake2/master' 2024-12-21 12:19:57 +02:00
Jaime Moreira
d3a98cf66b Text simplified for sound backend menu option
"Quality vs performance" might not correspond to reality; text deleted.
Documentation updated to reflect current state of both OpenAL and SDL
sound systems.
Authored by @Yamagi.
2024-12-20 16:36:53 -03:00
Denis Pauk
7a3ebc7e99 game: Add support 'g_start_item'
Based on:
 * https://github.com/id-Software/quake2-rerelease-dll.git
2024-12-18 15:24:24 +02:00
Denis Pauk
fdeabf515c client: mesh mask in model preview 2024-12-17 21:41:10 +02:00
Jaime Moreira
5d201fce9a GL1 water warp effect
A basic "squeeze/stretch" effect to fov when diving underwater.
Intensity is controlled by gl1_waterwarp, 0 disables the effect.
Original from Fitzquake.
2024-12-11 21:05:27 -03:00
Denis Pauk
58363c6696 game: Add BoB effect for items support
Based on:
 * https://github.com/Paril/q2pro.git
2024-11-26 23:37:04 +02:00
Denis Pauk
03cb2be1e6 game: add 'g_language' localization cvar 2024-11-10 21:47:56 +02:00
Denis Pauk
af51dfbed4 Add mention about Q2Game.kpf for localization
Fixes: #32
2024-11-05 00:08:36 +02:00
Denis Pauk
15a5f65fdf game: rename Quake Fish to rotfish 2024-10-09 23:59:45 +03:00
Denis Pauk
8c233f78c3 Merge remote-tracking branch 'yquake2/master' 2024-10-06 22:35:23 +03:00
Jaime Moreira
f2ea0b51b5 gl1_discardfb functionality expanded
Now also available in GL1. Includes a call to glClear at the beginning
of each frame, pointing to the same buffers that are discarded at the
end. When value is 1, operates over color, depth and stencil buffers.
When it's 2, only does depth and stencil, ignoring color. These
changes provide a performance improvement on mobile/embedded.
2024-09-24 16:33:39 -03:00
Jaime Moreira
676e05ad1f Fixed GL1 stencil shadow when gl1_stereo = 3 to 5
Disabling stencil for shadowing in these stereo modes,
otherwise entities appear behind solid walls.
2024-09-20 16:56:58 -03:00
Denis Pauk
081050ad18 Merge remote-tracking branch 'yquake2/master' 2024-09-17 23:12:54 +03:00
Andrew Malchuk
b1f1e847ab
Fixed broken links in the documentation 2024-09-15 18:55:59 +04:00
Denis Pauk
f040b01e00 Merge remote-tracking branch 'yquake2/master' 2024-09-09 00:33:38 +03:00
Yamagi
5acb267630 Add a new playback mode ogg_shuffle == 4, truly random playback.
912b65ff74 changed mode `3` from random
playback to truly random playback, allowing the same track being played
several times in a row. Since some users might prefer the old behavior
move truly random playback to a new mode `4`. Add it to the menu and
finally document the `ogg_shuffle` cvar.

In addition to #1143
2024-09-08 17:00:34 +02:00
Denis Pauk
e188358e2b Merge remote-tracking branch 'yquake2/master' 2024-09-08 12:58:00 +03:00
Yamagi
a969526d87 Switch the SDL2 sound backend to transparent audio format conversion.
Since the SDL 1.2 day the SDL sound backend relied on the sound driver
supporting the requested audio format. That workes fine for drivers
support transparent conversions into formats supported by the hardware.
But it failes with drivers which are unable to do such conversions. As
long as we hardcoded the sound driver this wasn't a problem, because all
our chouces supported transparent conversions. When we removed the
hardcoded choices and started to rely on SDLs choices especially the
wsaapi driver - which is SDLs default choice under windows - failed.
wsaapi only guarantees support for AUDIO_F32LSB (other formats may be
supported, depending on the hardware), Quake II needs AUDIO_S16SYS or
AUDIO_U8.

Solve this by switching to transparent conversions through SDL. This way
Quake II can send whatever it wants to SDL and SDL will make sure that
it is in the right format before sending it to the driver.

This isn't necessary for SDL3, SDL3 doesn't support explicit formats and
always relies on transparent conversions.

Remove hardcoded wsaapi on Windows, it's no longer necessary.

Part of #1135.
2024-09-08 10:29:36 +02:00
Jaime Moreira
15f9d35d39 Default button for 'Esc' in gamepad is now Start 2024-08-27 13:10:25 -04:00
Denis Pauk
247acb32fd Merge remote-tracking branch 'yquake2/master' 2024-08-12 18:46:04 +03:00
Yamagi
53b738f77b
Merge pull request #1128 from protocultor/ref_gles1
OpenGL ES 1.0 renderer
2024-08-12 09:02:40 +02:00
Denis Pauk
7d3545abd7 Merge remote-tracking branch 'yquake2/master' 2024-08-09 01:35:40 +03:00
Yamagi
8cc3361730 Hardcode the SDL audio driver (again) to directsound under Windows.
Windows defaults to `wassapi`, which is a sensible choice. But WASAPI
only guarantees 32 bit float samples, anything else only works if the
driver or something supports it and YQ2 requires 16 bit samples. That
can be worked around by having SDL recode the audio, but I don't want
such a invasive change right before a release.

Another part of #1132.
2024-08-08 18:43:03 +02:00
Yamagi
b3c47df0c8 Don't overwrite SDLs audio driver selection.
Hardcoding default driver for some of the supported platform is a
remnant of SDL 1.2 and hasn't been necessary since SDL 2.0 a long
time ago. In fact it has a high properbility to break things, SDL
could easily end up with a non working driver.

When `s_sdldriver` is set to the newly introduced value `auto` the
driver is selected by SDL. In all other cases the string is the
driver name which SDL will be forced to.

This doesn't fix existing configs. Since the OpenAL sound backend has
been the default for nearly 15 years and we haven't received bug reports
for some other problem with the SDL sound backend in the past, I'm half
sure that there are next to users out there. These can reset the cvar
by hand if necessary.

Closes #1132.
2024-08-07 12:04:54 +02:00
Jaime Moreira
26f578212a Deleted unused variable in R_RegenAllLightmaps()
Static arrays there have their dimensions swapped, they make more sense now.
Added important detail in gl1_lightmapcopies doc.
Also added doc for gl_polyblend, just because of its "popularity".
2024-07-28 12:14:17 -04:00
Jaime Moreira
b72c465214 GLES1 renderer: lightmap copies
Available in both GL1 and GLES1. Keep multiple copies of "the same"
lightmap on video memory; they are actually different, because they're
used in different frames. This is a workaround for the usage of
glTexSubImage2D() for dynamic lighting, since modifying textures used
recently causes slowdown in embedded/mobile devices.
Controlled by gl1_lightmapcopies cvar; default in GL1 is `0`, while
in GLES1 is `1`.
2024-07-27 23:22:41 -04:00
Jaime Moreira
0596d23e4c GLES1 renderer: discard framebuffer
Available only on GLES1, allows to use a "performance hint" to the
GPU to discard the contents of depth and stencil buffers after each
frame. Some hardware might want to reuse them, but Quake 2 doesn't
work that way.
Controlled by gl1_discardfb cvar, default `1`.
2024-07-27 23:18:06 -04:00
Jaime Moreira
03227f1ed6 OpenGL ES 1.0 refresher (GLES1 for friends)
Variant of GL1, meant for embedded/mobile devices only.
Build it with "make with_gles1".
For Windows, you'll need MSYS2 and a decent ANGLE implementation
(probably not worth the trouble).
Building with CMake only works in Linux, so it has been commented out.
2024-07-27 23:15:12 -04:00
Denis Pauk
6c16fe1e8e Merge remote-tracking branch 'yquake2/master' 2024-07-21 18:07:00 +03:00
Yamagi
eef7db91d8
Merge pull request #1124 from protocultor/gl1_buffer
Grouped draw calls for improved performance with GL1
2024-07-20 09:24:23 +02:00
Denis Pauk
1e0aa094cb Merge remote-tracking branch 'yquake2/master' 2024-07-15 23:37:05 +03:00
Yamagi
4b9b8e14a4 Switch g_quick_weap to 1 by default.
It's a nice to have convenience feature that most players will never
notice. Die hard traditionalists can switch it off.
2024-07-15 21:42:15 +02:00
Jaime Moreira
15a1ebdd74 Deleted gl1_biglightmaps
glTexSubImage2D() calls are very slow, and are even slower when
the texture is big. Dynamic lighting changes are small compared
to the huge 512x512 size of the lightmap this option provided,
so it was detrimental to performance.
Original logic remains underneath if there's a need of a comeback.
2024-07-15 12:45:15 -04:00
Denis Pauk
96b8707825 Merge remote-tracking branch 'yquake2/master' 2024-06-30 23:06:16 +03:00
Yamagi
1a1b32961b Refactor the download filter.
The first try didn't take into account that an evil server could
override the filter list by sending a stuff command. Fix this by
hardcoding the filters for .dll, .dylib and .so. Make sure that the
filters are always applied, either when the download is requested
through the `download` command or because game data is missing.

This is just a poor mans fix, trying to rule out an obvious way to
inject code into the client.
2024-06-24 11:56:11 +02:00
Denis Pauk
d15bb81e58 Merge remote-tracking branch 'yquake2/master' 2024-06-22 23:57:29 +03:00
Yamagi
5e6a73dc3f Include downloads into the security considerations. 2024-06-22 16:57:30 +02:00
Yamagi
468f90ad48 Implement a simple download filter.
`cl_nodownload_list` is a whitespace seperated list of strings, files
containing one of these strings in their name are never downloaded. Set
to `.dll .dylib .so` by default to prevent downloading libraries which
can be injected into client.

Closes #1114.
2024-06-22 16:56:42 +02:00
Yamagi
d5c7845271 Fix formating of the cvarlist. 2024-06-22 16:50:54 +02:00
Denis Pauk
330b1352fb Add macos test build on release tag 2024-06-22 17:35:25 +03:00
Denis Pauk
1775874418 Merge remote-tracking branch 'yquake2/master' 2024-06-08 22:47:14 +03:00
Jaime Moreira
c4271848df gl1_multitexture doc update 2024-06-04 16:21:10 -04:00
Jaime Moreira
24b03b61f8 Gyro tightening
A practical way to avoid a noisy gyro signal, or shaky hands.
Unlike a deadzone, inputs below the threshold are "squeezed towards
zero", so they are not completely ignored. Source:
http://gyrowiki.jibbsmart.com/blog:good-gyro-controls-part-1:the-gyro-is-a-mouse#toc9
2024-06-04 15:48:42 -04:00