Commit graph

2019 commits

Author SHA1 Message Date
Yamagi Burmeister
b9e5306c84 Fix memory allocation on Windows.
* Take the cache line roundings into account when allocating a hunk.
* Use size_t were apropriate.
* remove some unnecessary and likely broken calls.

Another case of: "How could this ever work"?
2018-10-25 18:44:24 +02:00
Yamagi Burmeister
60c12228c9 Correct average render / packet time calculations.
We need to reset the avgrenderframetime and avgpacketframetime variables
when we recalculate the average times spend rendering frame and / or
processing package frames. Otherwise the result will be much too high,
leading to lost frames down below. I wonder why nobody complained about
this until now.

While at it lower the security margin from 2% to just 1%. On the one
hand we need a small security margin, because Quake II is not that
precise and out average times spend may be too low. On the other hand
the margin must not be too large, because the bigger the margin is the
bigger is the risk of missing frames... Both 2% and 1% is very small,
in fact often they don't even make a difference because of float ->
int conversations. For example 16 * 0,02 = 0,32 -> cut to 0. But there
are some extrem cases were it matters and my empirical testing showed
that 1% is slighty better then 2%. At least on my system. An it's
better to f*ck up the timing for a small number of frames than missing
a frame. A broken timing is hard to recognize, a missed frame is much
more annoying.
2018-10-23 18:37:25 +02:00
Yamagi Burmeister
861cf25ddf Fix ogg_shuffle display in menu.
In issue #296 it was pointed out that the menu shows ogg_shuffle
always as disabled, even if it's set to 1. This was an oversight,
the menu code was still checking the ogg_squence cvar removed in
the big OGG/Vorbis refactoring. Update it to match reality.
2018-10-22 20:25:16 +02:00
Yamagi Burmeister
80ef326927 Fix map loading on OS X.
@DanielGibson pointed out that _SC_PAGESIZE itself is too big,
_SC_PAGESIZE - 1 is correct. Also apply a small performance
optimization by querying _SC_PAGESIZE only once.
2018-10-09 19:11:47 +02:00
Yamagi Burmeister
b876579d4d Hunk allocation for FreeBSD 2018-10-08 22:29:45 +03:00
Denis Pauk
64babe9422 Allocate hunk equal to filesize 2018-10-08 22:29:45 +03:00
Denis Pauk
659d8e15c5 Add support for 32k+ marksurfaces in map 2018-10-08 22:29:45 +03:00
Denis Pauk
316918c29b cleanup code in sw_surf 2018-10-08 22:29:45 +03:00
Denis Pauk
26e9c6e5c4 cleanup code in sw_polyse 2018-10-08 22:29:45 +03:00
Denis Pauk
c30cffd1ed Use local currentmodel 2018-10-08 22:29:45 +03:00
Denis Pauk
0ff5dc804d Use local currententity 2018-10-08 22:29:45 +03:00
Yamagi Burmeister
9e4bde0803 Reset debristhisframe at level end.
This shoouldn't be necessary but won't hurt either.
2018-10-07 12:19:33 +02:00
Yamagi Burmeister
bf6f2bd1e1 Give gibs and debris 250 health points.
This prevents gibs and debris being easily destroyed with the rocket
launcher but leaves enough room for the entities being destroyed by
elevators, doors and the like if necessary.
2018-10-07 11:47:06 +02:00
Yamagi Burmeister
ef55042cef Split the gibs per frame limit between gibs and debris.
The gibs and debris per frame must be limited to prevent server mem
map overflows. Until now debris and gibs were handled the same, the
debris spawned by rockets and grenates could prevent the actual gibs
of the killed monster from spawning.

Before this change 20 entities were spawned at max. Now up tp 40
enties can be spawned. This needs some testings.

Fixes issue 323.
2018-10-07 11:47:06 +02:00
Yamagi Burmeister
9525dc35a8 Some small cleanups to entity file support.
- Fix some compiler warning about wrong format strings.
- Comply to code style.
- Remove unnecessary comments.
2018-10-07 09:51:19 +02:00
NeonKnightOA
d036868600 Add support for external entity files (.ent files).
This was ported from KMQ2.
2018-10-07 09:50:54 +02:00
Yamagi Burmeister
08037e7328 Don't accelerate upper entities, let them be pushed by the lower ent.
A long time ago in 2b4f223 I introduced a small logic change to the
handling of stacked entities. If two entities were standing on each
other the original code set the movement speed of the upper entity
to 0. It would be pushed or dragged by the lower entity. I changed
that in way that the upper entity got the same speed as the lower
entity. With that change it wasn't pushed or dragged but moving on
it's own. I hoped to fix some of the 'elevator hurts player or monster'
bugs.

That hope was wrong, at a later time we quirked all elevators that hurt
the player. Additionally the change lead to physics bugs if entities are
standing on high speed elevators (more than 200 units per seconds). So
revert it.

The actual fix was already committed as part of 69b6e5a. This is just a
little cleanup commit, mainly for documentation purposes.

This closes #320.
2018-10-07 09:31:31 +02:00
Daniel Gibson
f2a73b3919 Switch to Enforcers bloody skin when he's killed, fixes #331
When killing the enforcer with one shot (instead of damaging him first
without killing, which will switch to the bloody skin), the skin wasn't
changed. Now it is.
2018-10-03 17:44:32 +02:00
Yamagi
881d9afda6
Merge pull request #322 from Smilo-platform/master
Fix IPV6 networking
2018-10-01 17:33:04 +02:00
Yamagi Burmeister
2909710b8c Don't stop processing dlights if one of them had a radius of 0.
I don't know if this has any visible effects. This was reported in
issue #333.
2018-09-30 19:59:07 +02:00
Yamagi Burmeister
69b6e5ad48 Redo 95bbb99 in a more correct manner.
1) Do not increment the frame rate returned by SDL by 1. Incrementing
   is unnessecary, more or less up to date versions on Nvidias, AMDs
   and Intels GPU driver on relevant platform return an value that's
   either correct or rounded up to next integer. And SDL itself also
   rounds up to the next integer. At least in current versions. In fact,
   incrementing the value by one is harmfull, it messes our internal
   timing up and leads to subtile miss predictions. Working around that
   in frame.c would add another bunch of fragile magic... So just do
   it correctly. If someone still has broken GPU drivers or SDL versions
   that are rounding down the could set vid_displayrefreshrate.
2) The calculation of the 5% security margin to pfps in frame.c was
   wrong. It didn't take into account that rfps can be slightly wrong
   in the first place, e.g. 60 on an 59.95hz display. Correct it by
   comparing against rfps including the margin and not the plain value.
2018-09-30 19:47:48 +02:00
Yamagi Burmeister
012ab85b31 On Windows we need to pass wchar strings to remove().
Until now the server just called remove() to delete the servers state
from the HDD. That was fine on Linux were UTF-8 is used but failed
silently on Windows in case that the working dir path had some Unicode
characters. Replace remove() by Sys_Remove(), on Linux it's just a
wrapper around remove() on Windows it does a UTF8->UTF-16 conversion
and calls _wremove(). This fixes issue 318.
2018-09-30 18:57:06 +02:00
Yamagi Burmeister
70ee5bcc4a Revert "Rework GLimp_GetRefreshRate(), fix a stupid bug."
After some pondering I realised that the changes was stupid. It
introduces some new subtile bugs, for example in some cases SDL
still rounds 59.95hz down to 59hz...
2018-09-30 18:42:21 +02:00
Unknown
79bcd35a3d Changed ipv6 address 2018-09-12 08:55:13 +02:00
Unknown
220f0a940a Fixed ipv6 address to use 0.0.0.0 instead of 127.0.0.1 2018-09-11 15:35:21 +02:00
Unknown
b5b491710c Fixed incorrect ipv6 local address 2018-09-11 15:07:37 +02:00
Yamagi Burmeister
95bbb9900b Rework GLimp_GetRefreshRate(), fix a stupid bug.
In the old world GLimp_GetRefreshRate() was called once at renderer
startup. Now in the new world with SDL 2.0 only it's called every frame
and thus the target framerate git increased by one every frame... That
lead to subtile timin problem in case that the vsync is enabled.

While here remove the hack added for some Windows GPU drivers by AMD.
Older versions returned 59 on 59.95hz displays, leading to small timing
problems. This is fixed in newer version so we don't need to work around
it. Removing the hack gives us somewhat more overall timing precision.

If someone really needs the hack vid_displayrefresh can be set to 60 to
get the old behaviour.
2018-09-08 19:05:10 +02:00
Yamagi Burmeister
3c349d6078 Bump version number to 7.31pre. 2018-09-05 17:17:47 +02:00
Yamagi Burmeister
a6b85eaac8 Bump version number to 7.30. 2018-09-05 17:17:28 +02:00
Yamagi Burmeister
a896e17efa Fix a compiler warning, do not assign a variable to itself. 2018-09-05 17:07:42 +02:00
Yamagi
7b0bcec11e
Merge pull request #317 from 0lvin/render_speedup_review
Cleanup code in soft render
2018-09-05 14:39:24 +02:00
Denis Pauk
c45e1e7f8c correct check for zstep 2018-09-04 22:51:20 +03:00
Yamagi Burmeister
0caefdecf2 Always print the full help for the 'ogg' command. 2018-09-04 14:17:49 +02:00
Denis Pauk
6adc4cc81c Revert "rename gl_anisotropic to r_anisotropic"
This reverts commit 49af62477a.
2018-09-03 21:22:01 +03:00
Denis Pauk
e265252170 Remove unused function parameter 2018-09-03 21:16:36 +03:00
Denis Pauk
a52db8bc85 support for lower version of SDL 2018-09-03 21:16:05 +03:00
Denis Pauk
1a0c6fe05c add check for overwrite triangle_spans 2018-09-03 21:15:58 +03:00
Denis Pauk
3b4c6c41c1 get rid separate surface usage 2018-09-03 21:15:51 +03:00
Denis Pauk
136d6890ff small cleanups 2018-09-03 21:15:40 +03:00
Denis Pauk
aa3a688495 remove all aliases for vid.width 2018-09-03 21:15:33 +03:00
Daniel Gibson
67bb061741 Add missing newline in message printed by --help cmdline arg 2018-09-03 04:31:14 +02:00
Yamagi Burmeister
f15d4181eb Do not throw last 12 seconds of a Vorbis file away when looping.
Until now we just called OGG_Stop() as soon as we read the last samples
from a Vorbis files. OGG_Stop() flushed all unplayed samples (about 12
seconds of playback) from the OpenAL playback queue... Instead just set
our internal state of STOPPED, open the next file and be done.
2018-09-02 09:39:57 +02:00
Denis Pauk
01ca7db6f4 remove unused functions 2018-08-28 23:22:40 +03:00
Denis Pauk
2812ef30dd Reuse GLimp_InitGraphics for create window 2018-08-28 23:22:40 +03:00
Denis Pauk
8fc5bafb64 move render prepere staff to separate function 2018-08-28 23:22:40 +03:00
Denis Pauk
f1bf4d2b44 Directly use of currentpalette
* remove conversion currentpalette to SDL pixel format
* create textures with RGBA format with same struct as currentpalette
2018-08-28 23:22:40 +03:00
Yamagi Burmeister
25a1f08656 Merge branch 'buildcleanup' 2018-08-15 17:48:30 +02:00
Yamagi
135b243b74
Merge pull request #314 from 0lvin/render_speedup_review
Render speedup
2018-08-15 17:41:23 +02:00
Yamagi Burmeister
93aa8270ad No need to print that the renderer as retexturing support.
Retexturing support has been non-optional for years.
2018-08-14 11:53:35 +02:00
Yamagi Burmeister
cf09fb2a99 Remove support for static linked OpenAL.
We haven't used that for years and it just complicates things.
2018-08-14 11:51:55 +02:00
Yamagi Burmeister
daf3dc6f41 Remove ZIP compile time option.
Having ZIP optional only complicates things and is unnecessary now that
the dependency to zlib is gone.
2018-08-14 11:12:38 +02:00
Yamagi Burmeister
0264c6d946 Remove DOGG compile time option.
Having OGG optional only complicates things and is unnecessary now that
the dependencies to libvorbis and libogg are gone.
2018-08-14 10:40:50 +02:00
Denis Pauk
49af62477a rename gl_anisotropic to r_anisotropic 2018-08-10 23:33:46 +03:00
Denis Pauk
ba38bf4f88 Small cleanups
* Use window width as maximum value for spancount
* Reuse GLimp_Shutdown
2018-08-10 23:04:19 +03:00
Denis Pauk
6e8170e187 Check possible span scan step by zindex 2018-08-10 22:59:29 +03:00
Denis Pauk
59133c77aa use zvalue_t for z values 2018-08-10 22:59:29 +03:00
Denis Pauk
48f67501fc Fix pitch compare vid.width 2018-08-10 22:59:29 +03:00
Denis Pauk
6affc10ceb use only one increment in loop 2018-08-10 22:59:29 +03:00
Denis Pauk
0d69454b54 revert nack a little 2018-08-10 22:59:29 +03:00
Denis Pauk
a3406b38a3 use memset for copy pixel to pixel range 2018-08-10 22:59:29 +03:00
Denis Pauk
51e09331e2 get rid extern aliastriangleparms 2018-08-10 22:59:28 +03:00
Denis Pauk
61d7b187c0 make more varibles local 2018-08-10 22:59:28 +03:00
Denis Pauk
3c89fec026 fix comments 2018-08-10 22:59:28 +03:00
Denis Pauk
861e47c26e use short names for D_DrawTurbulentSpan 2018-08-10 22:59:28 +03:00
Denis Pauk
3ed798ae70 use func params instead static variables 2018-08-10 22:59:28 +03:00
Denis Pauk
f1b8571369 Use common step for span scanning 2018-08-10 22:59:28 +03:00
Denis Pauk
8905763c01 show * mark for used models/images in modellist/imagelist 2018-08-10 22:59:28 +03:00
Denis Pauk
1e3e853bc7 Optimize D_DrawSpans16 for horisontal/vertical spans 2018-08-10 22:59:28 +03:00
Denis Pauk
b46a615eb8 use more simple loop for vertical/horisontal spans 2018-08-10 22:59:28 +03:00
Denis Pauk
4093a49f0f use const for ro parameters 2018-08-10 22:59:28 +03:00
Denis Pauk
e748ed1af8 move code for instert new span to list top to separate function 2018-08-10 22:59:28 +03:00
Denis Pauk
d9eb925b33 move Mod_RadiusFromBounds to shared code 2018-08-10 22:59:28 +03:00
Denis Pauk
78383add97 move varibales to scope 2018-08-10 22:59:28 +03:00
Yamagi Burmeister
be9942d516 Fix window handling when switch from gl to soft renderer.
Make sure that the window is destroyed at gl renderer shutdown and
recreated by the soft renderer. Don't deinitialize SDL in the
softrenderer, that's done by vid.c. And make sure that we start the soft
renderer with a clean GL state.
2018-08-10 12:19:15 +02:00
Yamagi Burmeister
e7fa5518a9 Replace zlib dependency by miniz single header library.
I've chosen the minimal invasive way for this:

  * Import miniz and remove -lz linker flags.
  * Create a short header minizconf.h roviding everything we need
    originally defined by zconf.h and not provided by miniz.
  * Replace zlib.h with miniz.h and minizconf.h.
2018-08-10 10:24:25 +02:00
Yamagi Burmeister
b802c4bc2e Some cleanup now that ogg is the only music backend.
* Rename all cd* functions to ogg*.
* Rename the cd_shuffle cvar to ogg_shuffle.
* Remove some unnessecary #ifdef.
2018-08-08 15:17:21 +02:00
Yamagi Burmeister
79e8c1377b Replace libvorbisfile with stb_vorbis single header lib.
This is (or at least should) work exactly the same a before but
saves us the dependencies to libogg, libvorbis and libvorbisfile.
2018-08-08 15:05:23 +02:00
Yamagi Burmeister
10bdaaec06 Move stb_image_write.h into vid. It's used there, only. 2018-08-07 11:45:26 +02:00
Yamagi Burmeister
af703e8cd9 Remove the old SDL 1.2 version of the icon. 2018-08-07 10:35:18 +02:00
Yamagi Burmeister
1fcd0324e0 Move the icon into the vid interface.
It's only used there.
2018-08-07 10:30:11 +02:00
Yamagi Burmeister
d328aa9a9e Move rev.h into the client. 2018-08-07 10:20:02 +02:00
Yamagi Burmeister
5bff7e1568 Move refresh.c into the client and rename to glimp_sdl.c.
The GL backends have been an integral part of the vid interface for
years.
2018-08-07 10:08:20 +02:00
Yamagi Burmeister
b805b4e044 Move vid.c and dependencies into the client.
The vid interface has been exclusive to the client for years, trace
that in the file hierarchy.
2018-08-07 10:00:21 +02:00
Yamagi Burmeister
61400d1ae8 Move input.c and input.h into the client and rename to sdl.c.
The input system backend was once used in the client and the renderers,
but for some years now it has been an integral part of the client only.
Move it there.
2018-08-07 09:43:34 +02:00
Yamagi Burmeister
956902538f Move sound.c into the sound system source and rename to sdl.c.
The OpenAL backend was already part of the sound system source. And
there's no need for the SDL backend to be part of the generic backends.
2018-08-07 09:31:08 +02:00
Yamagi Burmeister
5501c38736 Move qal.c and qal.h to the other sound system sources.
The OpenAL backends used only by the sound system, there no need to
have them in the generic part of the sources.
2018-08-07 09:23:07 +02:00
Yamagi Burmeister
63350c418e Clearify some FIXMEs and bump the renderer API.
The last commits did some bigger changes to the interaction between the
GL renderers and the client. The code is now SDL 2.0 conformant, window
and context creation are strictly distinct operations. SDL is only
initialized when necessary. Since this broke the client <-> renderer
API, bump it's version.

There a lot of things left to do for dark and cold winter evenings:

* The software renderer implements it's own window handling and
  reinitialized SDL whenever vid_restart is called. This is highly
  problematic.
* vid_fullscreen is abused to communicate changes to renderer config
  throughout the code. That's a very ugly, messy and potential very
  problematic hack. But not easy to remove.
* Some funtion calls between the client and the renderer are
  unnecessary.

The changes to the client <-> renderer interaction fixed issue #302.
2018-07-31 18:57:13 +02:00
Yamagi Burmeister
6855f97487 Reset SDLs GL state before reinitializing the renderer.
In the old world we deinitialized and reinitialized SDL each time we
restarted or changed the renderer. That would clear the whole GL state.
In the new world we let SDL running and just recreate the windows. In
some cases parts of the old renderers state would leak into the new
renderer, leading to strange problems.
2018-07-31 14:32:13 +02:00
Yamagi Burmeister
bef21c101e General cleanup of vid.c
* Reformat code and reorder functions.
* Remove unnecessary stuff.
* Move everything possible into headers.
* Implement a clean fallback logic, gl3 -> gl1 -> soft.
2018-07-31 14:32:13 +02:00
Yamagi Burmeister
9a53a681bb Apply the same cleanup to gl1_sdl.c as to gl3_sdl.c
* Sync both files as much as possible.
* Another round of general cleanup.
* Fix stencil tests.
* Simplify gamma handling, hardware gamma is now default.
* Support new client <-> renderer API.
2018-07-31 14:32:13 +02:00
Yamagi Burmeister
b8a062e36b Cleanup and refactor gl3_sdl.c.
* Another round of general cleanup.
* Introduce gl3_libgl cvar to force a libGL.
* Fix stencil buffer tests.
* Further untangle window <-> context stuff.

The window is now fully at client side, the context at renderer side.
This is another break of the renderer API. And at least GL1 needs to
track this, it's broken for now.
2018-07-31 14:32:13 +02:00
Yamagi Burmeister
5db73a795b General cleanup of refresh.c.
* Even more syntax and code style fixes.
* Rename functions to match their actual purpose.
* Fix comments.
* SDL initialization and shutdown is now client side only. With
  SDL 1.2 finally gone there's no need to involve the renderers
  in it.

This breaks the client <-> renderer API. I haven't bumped the API
version with this commit because there're likely more changes when
I'm going through the renderer side of things. The VID backend also
needs a lot of love...

It might be a good idea to move this SDL backend files into the client
and rename them. We'll decide that at a later time.
2018-07-31 14:32:13 +02:00
Yamagi Burmeister
3d9674f3b8 Remove last remnants of SDL 1.2 support troughout the code. 2018-07-31 14:32:13 +02:00
Yamagi Burmeister
ba4706c608 Remove SDL 1.2 from the software renderer. 2018-07-31 14:31:17 +02:00
Yamagi Burmeister
b9c8a8533e Remove SDL 1.2 support from the menu. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
2099626b7b Remove SDL 1.2 support from the client side render backend. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
f03e95901f Remove SDL 1.2 support from the GL3 SDL backend.
Do some minor cleanup, while here.
2018-07-31 14:24:28 +02:00
Yamagi Burmeister
0e512a8f5d Some cleanup to the GL1 SDL backend now that's SDL 1.2 is gone. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
5ec3bcdb49 Let SDL calculate the gamma ramp now that X11GAMMA and SDL 1.2 are gone. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
1b68da9a0f Remove SDL 1.2 from the GL1 SDL backend. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
cc15f0c10c Remove SDL 1.2 support from the SDL sound backend.
While at it do some minor cleanup.
2018-07-31 14:24:28 +02:00
Yamagi Burmeister
3f65f7254b Some general cleanup to the input backup.
* Some globals could be made static.
* Add comments were appropriate.
* And format the file to one coding stile. What is so hard with
  keeping to one style?! MY IDE is even able to interfere the
  style from existing code...
2018-07-31 14:24:28 +02:00
Yamagi Burmeister
4fb271c2df Remove SDL 1.2 from the input backend.
SdL 1.2 had it's time and is becoming a burden. This is the first
in a series of commits that'll remove it from Quake II.
2018-07-31 14:24:28 +02:00
Yamagi Burmeister
15898a2330 Remove CDA support from code. 2018-07-31 14:24:28 +02:00
Yamagi Burmeister
759bc1be18 Remove X11GAMMA support from code.
This just deletes the X11GAMMA code. It doesn't make use of some
refactoring opportunities that're now possible. That will be done
at a later time.
2018-07-31 14:24:28 +02:00
Yamagi
38a499c335
Merge pull request #313 from 0lvin/edges_limits
Scale edge/surfaces/verts on outof....
2018-07-30 18:46:54 +02:00
Denis Pauk
cf4887c4ba fix issue introduced in e5ef665e:Use more short code in *EdgeSearch 2018-07-30 15:47:00 +03:00
Denis Pauk
27cbd0d4e7 reorder copy vid_buffer to texture. 2018-07-29 15:29:00 +03:00
Denis Pauk
ea27c460f2 move trenslate palette based image to full color texture to separate function 2018-07-29 00:04:10 +03:00
Denis Pauk
a4b011c5fd palette check 2018-07-28 13:57:08 +03:00
Denis Pauk
bec4c4accc change code style 2018-07-25 21:33:10 +03:00
Denis Pauk
2b9b039139 make r_drawsurf local 2018-07-25 17:49:00 +03:00
Denis Pauk
aec8f3fc8b make r_dlightframecount and surfrowbytes local 2018-07-25 17:06:23 +03:00
Denis Pauk
fcae2fcbcd change messages 2018-07-25 15:16:32 +03:00
Denis Pauk
125d6db8b6 code clean up 2018-07-24 23:38:31 +03:00
Denis Pauk
e1a9e7e4e2 add auto reallocate 2018-07-24 17:49:14 +03:00
Denis Pauk
25cb7acda8 Restore allocate buffers on render init 2018-07-24 16:56:42 +03:00
Denis Pauk
a37d6cb07a clean up code 2018-07-24 16:54:43 +03:00
Denis Pauk
6136900fac little speedup 2018-07-24 00:16:31 +03:00
Denis Pauk
f9a77d2d66 Share same Mod_DecompressVis 2018-07-23 17:40:06 +03:00
Denis Pauk
ad771fdd99 more warnings 2018-07-23 17:06:39 +03:00
Denis Pauk
789cd0128a use only allocated finalverts 2018-07-23 16:51:16 +03:00
Denis Pauk
1a5a0922c8 Set bigger limits 2018-07-23 00:34:34 +03:00
Denis Pauk
d36f19fda5 use only allocated surfaces 2018-07-22 17:20:33 +03:00
Denis Pauk
a57b1f9be0 use only allocated edges 2018-07-22 16:50:44 +03:00
Simon McVittie
b9aac1ad9b Fix spelling of "information", and re-word a comment with multiple typos 2018-07-21 12:03:23 +01:00
Ricardo Garcia
d425f40eb6 Fix segfault in OGG_PlayTrack when ogg_enable is set to zero 2018-07-15 09:33:58 +02:00
Yamagi Burmeister
53c6c8fbad Bump version number to 7.30pre. 2018-07-14 09:39:31 +02:00
Yamagi Burmeister
75300795bd Bump the version number to 7.21. 2018-07-14 09:38:10 +02:00
Yamagi Burmeister
176f95cc7c Enable backtrace printing on FreeBSD.
FreeBSD has supported printing backtraces for years. The API is the same
as on Linux, the only difference is that libexecinfo must be linked as a
seperate library. Since the last FreeBSD version with backtrace support
(FreeBSD 9.3) went out of support some time ago unconditionally enable
the printing.
2018-07-13 14:32:31 +02:00
Yamagi Burmeister
412dfe50b3 Clarify that -portable forces the binary dir as configuration dir. 2018-07-12 19:26:13 +02:00
Daniel Gibson
a651c23021 commandline argument --help that documents most important arguments
quake2 --help, -h, -help, -? and /? now show the most important
commandline arguments
2018-07-10 21:46:57 +02:00
Daniel Gibson
eb259d0c02 Exit game if loading fallback renderer failed
If loading gl3 fails, the game tries gl1 instead.
If that fails as well, the game should quit. Now it does.
2018-07-10 21:46:53 +02:00
Yamagi Burmeister
d96a46dc1f Fix stupid bug when scaling the chat input.
The vertical offset must be multiplied with the scale. And not the
scale added onto it... This fixes issue #306.
2018-06-25 09:41:57 +02:00
Yamagi Burmeister
091e1834eb Use _wfopen() instead of _wfopen_s to stay compatible with Win XP.
I've used _wfopen_s() because it's newer and the older variants are said
to throw warning when build with MSVC. But apparently Windows XP hasn't
got that symbol... So just use the normal _wfopen(), MSVC is unsupported
anyways. The may or may not enough to restore Win XP compatibility.
2018-06-25 08:16:09 +02:00
Yamagi Burmeister
1f4e90e0d3 Don't restart music if track 0 is requested and ogg_ignoretrack0 set. 2018-06-12 19:28:13 +02:00
Yamagi Burmeister
9cf029182a Fix playback when cd_shuffle is 1
Until now, likely since we first introduced OGG/Vorbis playback 9 years
ago, in about 50% of all cases OGG_PlayTrack() was never called if
cd_shuffle was set 1, resulting in missing background music. Add the
missing call. :)
2018-06-12 18:52:36 +02:00
Yamagi Burmeister
653d2bad80 Fix build.
I wonder why I didn't catch this in sunday. For some reason a "make
clean ; make" cycle was necessary. Maybe a corner case that the header
dependencies didn't catch?
2018-06-12 18:42:21 +02:00
Yamagi Burmeister
a4e8932deb Fix build when -DOGG is not given. 2018-06-12 18:22:35 +02:00
Yamagi Burmeister
4a602227d1 Fix shuffle playback and it's menu integration. 2018-06-12 18:22:35 +02:00
Yamagi Burmeister
2406597356 Mark everythings that's local to ogg.c as static. 2018-06-12 18:22:35 +02:00
Yamagi Burmeister
b586f84a3a Combine the various ogg_* commands into a single "ogg" cmd.
While here remove unecessary ogg_init and ogg_shutdown commands. And
some more cleanup.
2018-06-12 18:22:35 +02:00
Yamagi Burmeister
750b37f288 Some general cleanup to the vorbis backend.
* Remove unneccessary global variables.
* Simplify initialization.
* Reorder functions.
2018-06-12 18:22:35 +02:00
Yamagi Burmeister
c2525a1e53 Remove lying comment. We don't rely on on DOS filenames anymore. 2018-06-12 18:22:35 +02:00
Daniel Gibson
8643c843ef Sys_IsDir() and Sys_IsFile() for Windows
I guess now the refactored Ogg/Vorbis code should work on Windows too.

Someone should test that though..
2018-06-12 18:22:35 +02:00
Daniel Gibson
c3af040f0c More ogg/vorbis refactoring, supports GOG-style tracks now
also removed lots of code.

Windows support still missing, needs Sys_IsDir() and Sys_IsFile().
2018-06-12 18:22:35 +02:00
Daniel Gibson
c37a28428e FS_GetNextRawPath() to iterate fs_rawPath
this allows iterating all paths we look in for game data, but *without*
the game dir ("baseq2/", "xatrix/" ...) itself
2018-06-12 18:22:35 +02:00
Daniel Gibson
781e7c7e12 1. step in OGG refactoring: add OGG_PlayTrack(int track), remove others 2018-06-12 18:22:35 +02:00
Simon McVittie
c61e2983fc sdl/input: Fix spelling and grammar in a log message
The misspelling of "controller" was detected by Debian's Lintian tool.

Signed-off-by: Simon McVittie <smcv@debian.org>
2018-06-12 12:17:35 +01:00
Yamagi Burmeister
8e1f8fc7c6 Deprecate SDL 1.2.
We're going to remove support for SDL 1.2 shortly after the next
release. Give the last remaining users a very clear warning about
it, error out at force them to edit the code.
2018-06-07 07:39:20 +02:00
Yamagi Burmeister
bb146a8384 Remove unused LIBGL define. 2018-06-07 07:19:02 +02:00
Denis Pauk
e5ef665e09 Use more short code in *EdgeSearch 2018-05-20 13:55:04 +03:00
Denis Pauk
466364589d Use constants for x/y/z shifts 2018-05-20 13:55:04 +03:00
Denis Pauk
2412363001 Add some comments from Fabien Sanglard article 2018-05-20 13:55:04 +03:00
Denis Pauk
1ea3fdc1a2 We have enough memory, skip Com_PageInMemory 2018-05-20 13:55:04 +03:00
Denis Pauk
b0b0265e4b Move Surf Search to separate functions 2018-05-20 13:55:04 +03:00
Denis Pauk
4fd37b73ca Define NUM_MIPS=4 instead hardcoded value 2018-05-20 13:55:04 +03:00
fabiensanglard
184ff91453 Added Unreal kernel filtering. 2018-05-20 13:55:04 +03:00
Denis Pauk
96a81f64f9 little speed up 2018-05-20 13:55:04 +03:00
Denis Pauk
56ea94978d [-pedantic] fix compilation waring about static array initialization
warning: string length ‘16384’ is greater than the length ‘4095’
ISO C99 compilers are required to support [-Woverlength-strings]
2018-05-20 13:55:04 +03:00
Denis Pauk
f48e3e5b4d Use real height/width instead warp dimensions 2018-05-20 13:55:04 +03:00
David Carlier
2f0c2f8981 - Fix addrinfo leaks. 2018-05-01 10:17:20 +00:00
Daniel Gibson
1e3135d4fc r_gunfov shouldn't be CVAR_USERINFO, only CVAR_ARCHIVE
this happens when you just copypaste and adapt r_lefthand

also did some minor changes to R_AliasDrawModel in the soft renderer
to make sure alias[xy]scale is reset properly in the early out cases
2018-04-27 23:42:27 +02:00
Daniel Gibson
12a8da7180 r_gunfov for the software renderer 2018-04-21 21:35:13 +02:00
Daniel Gibson
c59c1bfda1 Fix Rogue heatbeam rendering at high FOVs 2018-04-21 20:19:42 +02:00
Daniel Gibson
a5e97682a3 Weapon field of view independent of 'fov': r_gunfov cvar
At high 'fov' values the weapon looked quite distorted.
Now it's rendered with an independent FOV, which looks better.
Note that the 'fov' cvar sets fov_x, while this is based on fov_y
(which is calculated from fov_x), so it's indeed different values:
r_gunfov seems to correspond to fov 90.
We use r_gunfov 80 as default, because it looks better.
2018-04-21 18:23:32 +02:00
Denis Pauk
189a34e707 Add custom particle shape by sw_custom_particles.
0 - use rectangle (default shape)
 1 - use hexagon
2018-04-13 23:29:56 +03:00
Denis Pauk
23d25db601 Little different shape of particle 2018-04-10 23:24:53 +03:00
Denis Pauk
14c934762d use one function for any mip levels 2018-04-10 23:13:38 +03:00
Denis Pauk
cd6c686980 Use multiple for particle sizes 2018-04-10 23:09:36 +03:00
Denis Pauk
758ab07a38 look to height instead width 2018-04-10 23:06:54 +03:00
Denis Pauk
14af679b7e Add size checks for WAL load 2018-04-10 22:59:13 +03:00
Denis Pauk
511b73baf9 Particle fixes from q2dos and kmquake
Authors: maraakate <emoaddict15@gmail.com>
         Knightmare <knightmare66@yahoo.com>
2018-04-10 22:59:13 +03:00
maxice8
2365d4705f fix compilation on musl libc. 2018-03-29 10:29:30 -03:00
Yamagi Burmeister
c11149730c Bump version number to 7.21pre. 2018-03-10 18:26:07 +01:00
Yamagi Burmeister
c0291746b0 Bump version number to 7.20. 2018-03-10 18:24:21 +01:00
Daniel Gibson
3a641c8beb "/currentmap" command that prints the currently loaded map 2018-03-10 16:38:37 +01:00
Yamagi Burmeister
808a208de4 Disconnect when we're connected before starting an new game.
The old code was working only when the client was connected to a local
server. The 'newgame' executed by the menu expands to a 'map', loading
a map ends in SV_InitGame() which calls CL_Drop() on the local client.
That calls CL_Disconnect() and everything is okay.
When the client is already connected to a remote server and no local
server is running the 'map' command spawns a new local server. This
new server thinks "Hey, I'm a new local server and no one is connected
to me. Let's pull the client in!". So it pull the already connected
client onto a new server without disconnecting, smashing it's state.
And everything goes down in flames.

The correct way would be to execute a 'disconnect' right before the
'newgame'. But the 'disconnect' cmd calls CL_Disconnect_f that throws
an ERR_DROP. ERR_DROP is implememted through a longjump(), jumping
around puts the process internal state in ashes... So bite the bullet
and add another hack: Call CL_Disconnect() before executing 'newgame'.
2018-03-07 21:49:58 +01:00
Yamagi Burmeister
ed54fe2364 Fix '/connect $server' while connected to a server. 2018-02-27 19:17:45 +01:00
Yamagi Burmeister
8ff7109b9d Rename forgotten gl_modulate and gl_farsee cvars in the GL3 renderer. 2018-02-25 10:38:04 +01:00
Yamagi Burmeister
2db01319a1 Fix changing the game / mod through the 'game' console command.
The 'game' command was more or less functional after the last commit.
We just need to reset the initialGame (renamed to userGivenGame) so we
don't revert back to the old game at server disconnect.
2018-02-25 10:24:35 +01:00
Daniel Gibson
f0e21e2ab4 Fix writing/loading configs when changing game/mod
When connecting to a multiplayer game that runs a different mod
("game" cvar) than you are, it didn't load the corresponging configs
from the mod, but saved your changes to the config to the mod's config.
Which is doubly useless.
Now when the "game" cvar is changed, the configs are reloaded (from
the right directories for the mod), and when disconnecting the configs
are written, so the changes you did for a mod while playing MP are saved
before game is reset to the game you started with.
2018-02-24 21:00:35 +01:00
Yamagi
c68aade396
Merge pull request #275 from 0lvin/3dhaptic
Use  SDL_HAPTIC_CARTESIAN as effect direction.
2018-02-15 07:35:58 +01:00
Daniel Gibson
3acf5f0cba VID_WriteScreenshot() PNG compression level must be < 10
10 is no valid zlib compression level, so make sure it's not used

Thanks to @maraakate for pointing this out!
2018-02-15 00:39:43 +01:00
Denis Pauk
80616a418e Reuse SWimp_Init from refresh.c 2018-02-14 23:07:20 +02:00
Denis Pauk
b376c7e0d2 correctly exit if have not found console fonts 2018-02-14 23:07:20 +02:00
Denis Pauk
24b7cb3529 Remove unused K_WORLD_* from Q_KEYS 2018-02-14 23:07:20 +02:00
Denis Pauk
c68fd0be5b Add 3d haptic/SDL_HAPTIC_CARTESIAN with distance and orientation 2018-02-14 23:07:20 +02:00
Yamagi Burmeister
ec1733fb97 Rename 'intensity' to 'gl1_intensity', 2018-02-14 09:35:54 +01:00
Yamagi Burmeister
278ff83ad4 Always initialize the busywait cvar. 2018-02-13 21:37:50 +01:00
Yamagi Burmeister
dd43f88450 Take time used to process render and packetframes into account.
Until now we did an easy calculation to determine the frame timing:
1000000 microseconds (== 1 second) / targetframerate == delay between
frames. This works if the CPU and GPU are fast enough since the time
process to process the frame is negligible. But if one of them is too
slow or the GPU driver takes too long (see issue #277 for an example)
we render too few frames.

Work around this by calculating the average time used to process the
last 60 render oder packet frames and take that into account when
determining the delay between the frames. With this change even my
rotten AMD Radeon and it's broken Windows GL driver is able to hold
the displays famerate (enforced by vsync) just fine.

While here add a 5% security margin to our target packet frame rate if
the vsync is enabled. Just to be sure that we never process more render
than packet frames.
2018-02-13 17:36:15 +01:00
Yamagi Burmeister
b80ff7f40c Implement a 'busywait' cvar to force the client and server to busy wait.
Sleeping with Sys_Nanosleep() is fair enough but has the problem that we
may get scheduled away and the hosts power management inteferes with our
interal timings. While this wasn't a big issue on FreeBSD and Linux it
let to serious timing issues in Windows.

There're several reports in the net, apperently everything below 5ms is
very inaccurate on Windows:
* https://stackoverflow.com/questions/7827062/ \
   is-there-a-windows-equivalent-of-nanosleep/7827446#7827446
* https://lists.gnu.org/archive/html/bug-gnulib/2010-04/msg00045.html
2018-02-13 17:36:15 +01:00
Yamagi Burmeister
832f3f6497 Implement vid_displayrefreshrate to override the displays refresh rate.
Modern LCD displays often haven't itegral refresh rates like 60hz but
fractional ones  like 59.95hz. SDL communicates the refresh rate as
integer. On X11 the rate is rounded up or down with round(), but on
Windows it's (at least on my system with an AMD Radeon) truncated...
So on an 59.95hz display it's just 59hz, Quake II renders 0.95 frames
too few and the user sees microstutters.

And return the actual / requested display frame rate increased by one
to work around inaccuracies in Quake IIs internal timing. It should be
a problem if we're running a little bit too fast.

This is belived to fix at least a part of issue #277.

Refreshrate 2
2018-02-13 17:36:15 +01:00
Yamagi
f0240af308
Merge pull request #278 from DanielGibson/remember-addressbook
Don't forget entries of Multiplayer "Address Book"
2018-02-13 17:35:59 +01:00
Daniel Gibson
c2061e8c83 Use const char* instead of char* in NET_StringToAdr() 2018-02-12 13:37:58 +01:00
Daniel Gibson
1c7b02cc85 Make sure Q2 doesn't "forget" contents of server "address book"
The problem was that the cvars were only initialized (with CVar_Get())
if you opened the address book menu.
So if you start (and possibly run) and quit the game /without/ opening
that menu (or at least the "join network server" menu), the game will
not save those cvars to the config when it next writes it.

To prevent this, *always* initialize the cvars in M_Init().
2018-02-12 01:03:06 +01:00
Yamagi Burmeister
a1aac4e56d Fix stupid bug in e30f824. :(
It's VectorCopy(src, dest) and not the other way round. Clion noticed
that, but neither clang nor gcc complained that tmp was used
unitialized.
2018-02-07 19:02:13 +01:00
Yamagi Burmeister
17a5106492 Unicode compatibility for zlib on Windows.
There were two ways to implement this. One was to go with the stuff
already included in minizip and one to implement our own wrapper around
fopen(). This is the second options since @DanielGibson convinced me
that it would be safer.
2018-02-06 18:44:44 +01:00
Yamagi Burmeister
716d72a295 Update minizip to version 1.2.11. 2018-02-06 15:11:36 +01:00
Yamagi Burmeister
495b7c5d6b Save some CPU cycles and apply the cvar replacements only once. 2018-02-05 18:30:45 +01:00
Yamagi Burmeister
582c1062cb Fix an "Unused variable" warning. 2018-02-05 18:29:29 +01:00
Yamagi Burmeister
ba4f91f619 Fix a compiler warning on 32 bit.
Hopefully we'll never allocate more than 2^32 bytes of memory for
surfaces. :)
2018-02-05 18:27:34 +01:00
Yamagi Burmeister
1e6f790d51 Make the stdout and stderr redirects unicode aware. 2018-02-05 18:20:41 +01:00
Yamagi Burmeister
3b810ba51e Convert stb_image_write.h to Q_fopen() to be able to create screenshots. 2018-02-05 18:10:22 +01:00
Yamagi Burmeister
6b13d77c36 Change the current working directory before writing save games.
We can't rely on the game.dll being unicode conformant. Work around
that by changing the current working directory before calling into
the game.dll, pass a non unicode string to it and chang back after
we return.
2018-02-05 18:00:28 +01:00
Yamagi Burmeister
3634ed7013 Implement -datadir, deprecate the basedir cvar.
To be able to pass UTF-8 encoded pathes through cvars both the cvar
subsystem and the command parser would need a fair amount of UTF-8
understanding. And I'm not the poor soul that's going to implement
that. Therefor pass the datadir trough a global variable.
2018-02-05 16:19:02 +01:00
Yamagi Burmeister
efcaf17f69 Make SetExecutablePath() on Windows unicode compatible. 2018-02-05 10:01:21 +01:00
Yamagi Burmeister
a87e34906c Implement Q_fopen() for Windows.
This is done in shared.c so that's available for both the client /
server / renderer and the game. A work around for older game DLL will
be added at a later time.
2018-02-05 09:36:33 +01:00
Yamagi Burmeister
37ea3e1d58 Introduce a wrapper Q_fopen() and replace fopen() with it.
On Unix platforms unicode is implemented through UTF-8 which is
transparent for applications. But on Windows a UTF-16 dialect is
used which needs alteration at application side. This wrapper is
another step to unicode support on Windows, now we can replace
fopen() by a function that converts our internal UTF-8 pathes to
Windows UTF-16 dialect.

This is a noop for Unix platforms. The Windows build is broken,
the compiler errors out in shared.h. This will be fixed in a
later commit.

Caveats:
* fopen() calls in 3rd party code (std_* and unzip) are not replaced.
  This may become a problem. We need to check that.
* In the Unix specific code fopen() isn't replaced since it's not
  necessayry.
2018-02-05 07:43:26 +01:00
Yamagi Burmeister
bcb7364507 Convert library loading to widechars. 2018-02-04 17:06:49 +01:00
Yamagi Burmeister
a1ba33e6d9 Declare is_portable only once in frame.c and not in each backend. 2018-02-04 16:48:40 +01:00
Yamagi Burmeister
b3562015b0 Remove Sys_SendKeyEvents().
That function did nothing, we can just call IN_Update() directly...
2018-02-04 16:45:32 +01:00
Yamagi Burmeister
54ab3f75db Don't use a DOS path for the home directory, but a UTF-8 path.
With this commit YQ2 is able to start and run on ReFS volumes. :) At
least as long as neither the binary path, the game data path nor the
path to the users home directory contain anything but ASCII characters.

Please note: This make break some corner cases with hore directories
containting unicode characters. They worked until now by pure luck.
A better solution providing full unicode support will be committed
in the next few days.
2018-02-04 13:22:27 +01:00
Yamagi Burmeister
4ca38f92fa Convert Sys_Mkdir from DOS to WinAPI.
With this we're able to create directorys with Unicode characters
anywhere in the path.
2018-02-04 13:04:31 +01:00
Yamagi Burmeister
e8c3686e4c Use MAX_OSPATH instead of MAX_QPATH.
Those are external pathes, not internal ones. MAX_QPATH with only 64
characters is much to small for them.
2018-02-04 12:59:10 +01:00
Yamagi Burmeister
0eca30cb96 Convert the Sys_Find*() functions from the old DOS interface to WinAPI.
This brings at least two big advantages:

* No more 8.3 filename fuckups. Until know base0.pak and base0.pak_bak
  was the same file for Quake II because only the first 3 characters of
  the file extension were taken into account.
* Search pathes can contain any Unicode character.
2018-02-04 12:53:50 +01:00
Yamagi Burmeister
e9615608a8 Remove CompareAtributes().
There's no need to exclude directories from search by flags. In fact
the Unix backend has worked nicely for years without it... Sadly we
can't remove the now superfluous 'canhave' and 'musthave' attributes
from Sys_FindFirst() and Sys_FindNext() since they're defined in
shared.h and may be used from custom game DLLs.
2018-02-04 11:49:03 +01:00
Yamagi Burmeister
a65401d1af Rename mem.c to hunk.c.
hunk.c better describes the purpose of the code and matches the unix
backend.
2018-02-04 11:35:10 +01:00
Yamagi Burmeister
2096d57eb8 Cleanup the system specific code.
* Remove a bunch of unnecessary functions.
* Reorder functions into logical groups. The orderig is now the same
  on Unix and Windows.

While at it add several TODOs to the code. There's not need for special
library loading functions for the game, the Windows backend still uses
a lot of old and fishy DOS functions, etc. All this will be done at a
later time.
2018-02-04 11:35:10 +01:00
Yamagi Burmeister
acb50c6907 Move the platform independent stuff from main() into Qcommon_*().
There's no need to duplicate machine independent parts of the client
initialization and the main loop for every platform.

While at it remove the nearly empty unix.h header and move Windows
main() into an own file. Not both platform have the same basic layout.
2018-02-04 11:35:10 +01:00
Yamagi Burmeister
bed6439d19 Convert the quake2.exe wrapper to a Windows GUI application.
While building the wrapper as a console application is completely fine
there're some advantages by creating a "real" Windows GUI Application:

* Console applications always spawn an annoying console window.
* Windows GUI applications seem to have a much lower chance to trigger
  my new best friend, the Windows Defender. As a console application
  quake.exe triggered every time I started it, as Windows GUI
  application not only once.

Use WinMain() instead of wWinMain() because MinGW doesn't know about
the later and it doesn't matter anyways.
2018-02-04 11:35:10 +01:00
Yamagi Burmeister
7ee34acae8 Remove winquake.h
The only thing that header did was to include windows.h.
2018-02-04 11:35:10 +01:00
Yamagi Burmeister
cfddff132b Switch the windows backend SDLmain.
libSDLmain.a has to be linked and must run anyways. So there's no need
for us to reinvent the wheel, just rely on SDLs process setup, argument
parsing, message handling and so on. As a nice side effect this may fix
some strange bugs related to message handling and argument parsing...
2018-02-04 11:35:10 +01:00
Daniel Gibson
833738b7e7 Update stb_image_write.h to latest release (1.08)
My modifications (jpeg writing and supplying zlib compressor for better
PNG compression) have been merged upstream, so from now on updates
should be easy and painless.

(Sean renamed my stbi_png_level to stbi_write_png_compression_level)
2018-02-04 00:03:51 +01:00
Yamagi Burmeister
601a06f728 Introduce in_grab 3, always ungrap the mouse in console, menu, etc.
Until now we had 3 modes:
 0 -> never grab the mouse.
 1 -> always grab the mouse
 2 -> ungrab the mouse if the game is windowed and the console or the
      menu is opened or a cinematic is playing.

The 3rd mode is the same as the 2nd one, but without the "game is
windowed" constrained. Please note that release the mouse grab in
fullscreen may have side effects like the game loosing focus and being
unable to regain it. Especially under X11.

This was requested by @prg318 in issue #271.
2018-02-03 09:20:58 +01:00
Yamagi Burmeister
a496ad8d62 Update HandmadeMath.h to it's latest version. 2018-02-03 08:41:46 +01:00
Yamagi Burmeister
5763784c20 Update stb_image.h to it's latest version. 2018-02-03 08:38:32 +01:00
Yamagi Burmeister
20f49f515b Don't compare a qboolean against an integer.
That only works by accident.
2018-02-03 08:36:07 +01:00
Yamagi Burmeister
21fcb48565 Fullscreen has been an integer for some time now.
At least since we introduced support for mod changing and for scaling
fullscreen.
2018-02-03 08:33:16 +01:00
Denis Pauk
d3f93e6786 Clean up unused code 2018-01-21 22:39:02 +02:00
Denis Pauk
9d9dd6b02a Fix typo 7ace8c9116 2018-01-21 22:39:02 +02:00
Denis Pauk
bf19c8b50c fix -O3 warning. Fix indexes in vtx.
Loop 'for ( i = 0; i < 3; i++ )' sets values to vtx[0..2]. So next index must be 3(instead 4) and
loop 'for ( i = 16; i >= 0; i-- )' will set vtx[3..(18*3-1)].

=====
src/client/refresh/gl/r_light.c: In function ‘R_RenderDlight’:
src/client/refresh/gl/r_light.c:76:21: warning: iteration 16 invokes undefined behavior [-Waggressive-loop-optimizations]
    vtx[index_vtx++] = light->origin [ j ] + vright [ j ] * cos( a ) * rad
    ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + vup [ j ] * sin( a ) * rad;
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/client/refresh/gl/r_light.c:65:2: note: within this loop
  for ( i = 16; i >= 0; i-- )
  ^~~
=====
2018-01-21 22:39:02 +02:00
Daniel Gibson
54861bf4b7 quake2.exe wrapper
Apparently something (possibly nvidia's driver) on some windows
installations has some stupid application profile for quake2.exe that
breaks mouse input if the console has been opened..

Our workaround is to rename quake2.exe to yquake2.exe and provide a wrapper
quake2.exe that just calls the real one for backwards compatibility.
This is the source of that wrapper.
2018-01-21 16:40:05 +01:00
Yamagi Burmeister
472f55c5bf Move the softrenderer constants into out constants/ dir. 2018-01-11 11:15:11 +01:00
Yamagi Burmeister
5592da9206 Rename all soft renderer files from r_* to sw_*. 2018-01-11 11:09:00 +01:00
Yamagi Burmeister
0e8b58952a Rename the gl/ directory to gl1/.
This is not strictly necessary but since we're calling it GL1 let's
stay consistent between the name and the directory structure.
2018-01-11 10:58:32 +01:00
Yamagi Burmeister
d21fbeb932 Rename all GL1 files from r_* to gl1_*. 2018-01-11 10:49:08 +01:00
Yamagi Burmeister
17f289c761 There's no need for the softrenderer to be build conditionally.
We want to build the softrenderer each time and on all platforms.
Building it only at user request will lead to code rot.
2018-01-10 10:33:24 +01:00
Yamagi Burmeister
1ed7762edd Implement custom modes in the software renderer.
This is mostly the same approach as in GL1. I'm not quite sure if the
software rasterizer can work with all aspects and the like but I wasn't
able to crash it by trying several random resultions.
2018-01-09 19:38:00 +01:00
Yamagi Burmeister
cf03e755d3 Implement r_vsync for the softrenderer.
Whenever the r_vsync cvar is changed recreated the SDL renderer with the
appropriate flags.
2018-01-09 18:44:55 +01:00
Yamagi Burmeister
3df860983f Implement r_modulate in the software renderer.
This is the same implementation as in GL1. In fact the code was
basically there, only the cvar itself was missing. Maybe for performance
reasons?
2018-01-09 18:23:29 +01:00
Yamagi Burmeister
e01e9a0b94 Rename gl_ztrick to gl1_ztrick. 2018-01-09 15:58:05 +01:00
Yamagi Burmeister
24b014715f Rename gl_texture*mode to gl1_texture*mode. 2018-01-09 15:54:27 +01:00
Yamagi Burmeister
b87465886e Rename gl_swapinterval to r_vsync. 2018-01-09 15:01:06 +01:00
Yamagi Burmeister
74ac58eb5a Rename gl_stereo* to gl1_stereo*. 2018-01-09 14:51:59 +01:00
Yamagi Burmeister
70ca5b2ade Rename gl_saturatelightning to gl1_saturatelightning. 2018-01-09 14:39:42 +01:00
Yamagi Burmeister
aa6c1826db Rename gl_round_down to gl1_round_down. 2018-01-09 14:36:51 +01:00
Yamagi Burmeister
6c880bcf1f Rename gl_polyblend to gl1_polyblend. 2018-01-09 14:34:27 +01:00
Yamagi Burmeister
bbe4fe0b68 Rename gl_pointparameters to gl1_pointparameters. 2018-01-09 14:31:45 +01:00
Yamagi Burmeister
be94b5612f Rename gl_picmip to gl1_picmip. 2018-01-09 14:29:02 +01:00
Yamagi Burmeister
171e592693 Rename gl_particle* to gl1_particle*. 2018-01-09 14:26:11 +01:00
Yamagi Burmeister
4061e85cd7 Rename gl_palettedtexture to gl1_palettedtexture. 2018-01-09 14:19:00 +01:00
Yamagi Burmeister
f0c4b4fd14 Rename gl_overbrightbits to gl1_overbrightbits. 2018-01-09 14:16:13 +01:00
Yamagi Burmeister
526904ca03 Rename gl_modulate to r_modulate. 2018-01-09 14:09:34 +01:00
Yamagi Burmeister
11ad28b711 Unify gl_mode and sw_mode in r_mode. 2018-01-09 14:03:45 +01:00
Yamagi Burmeister
e6b0e19cff Rename gl_maxfps to vid_maxfps. 2018-01-09 09:47:03 +01:00
Yamagi Burmeister
78ff99dd86 Rename gl_polyblend to gl1_polyblend and unite *_lockpvs to r_lockpvs. 2018-01-09 09:44:06 +01:00
Yamagi Burmeister
3a4496c239 Rename gl_farsee to r_farsee. 2018-01-09 09:32:07 +01:00
Yamagi Burmeister
d2b3030cfe Rename gl_dynamic to gl1_dynamic and remove it from GL3. 2018-01-09 09:29:33 +01:00
Yamagi Burmeister
03098715ee Rename gl_custom* to r_custom*. 2018-01-09 09:25:29 +01:00
Yamagi Burmeister
ae9d7e397f Rename gl_*scale to r_*scale. 2018-01-09 09:19:39 +01:00
Yamagi Burmeister
49fae3c25c Rename gl_clear to r_clear. 2018-01-09 09:09:52 +01:00
Yamagi Burmeister
be569dcaba Rename gl_speeds to r_speeds. 2018-01-06 18:42:40 +01:00
Yamagi Burmeister
679e556b4f Rename gl_speeds to r_speeds. 2018-01-06 18:40:50 +01:00
Yamagi Burmeister
214c473de0 Rename gl_novis no r_novis. 2018-01-06 18:38:30 +01:00
Yamagi Burmeister
b453ec5372 Rename gl_norefresh to r_norefresh. 2018-01-06 18:35:03 +01:00
Yamagi Burmeister
f8c71af0cf Rename gl_lightlevel to r_lightlevel. 2018-01-06 18:31:06 +01:00
Yamagi Burmeister
8a83c92044 Rename gl_lerpmodels to r_lerpmodels. 2018-01-06 18:25:53 +01:00
Yamagi Burmeister
55889e4abb Rename gl_fullbright to r_fullbright. 2018-01-06 17:03:59 +01:00
Yamagi Burmeister
773147524b Rename gl_drawworld to r_drawworld. 2018-01-06 16:59:47 +01:00
Yamagi Burmeister
aa4d92e8dd Rename gl_drawentities to r_drawentities. 2018-01-06 16:53:45 +01:00
Yamagi Burmeister
54fc79e6b1 Remove unused function Cvar_CompleteVariable(). 2018-01-06 16:36:28 +01:00
Yamagi Burmeister
226e5922b9 Rename cl_drawfps to cl_showfps, to be consistent with other cvar.
And ensure that a nice message is printed to the console if anyone
enters the old cvar.
2018-01-06 16:26:28 +01:00
Yamagi Burmeister
7ae9b38da1 Fix video background color if the gl1 or gl3 renderer is used.
Both use truecolor and not paletted colors.
2018-01-03 21:11:08 +01:00
David Carlier
da5d36a7fd bus error fix when quitting. spotted on openbsd while
working ok on Linux and others.
2018-01-01 02:29:36 +01:00
Yamagi Burmeister
4d1b4fa88c Move the soft renderer header files into a subdirectory header/.
This matches the rest of YQ2s source tree.
2017-12-26 09:33:10 +01:00
Denis Pauk
5a24b969bc Merge commit '041d1c6cb6e1eff8d84ce883ff42c3c7f1c5f67e' into soft_render 2017-12-18 22:54:07 +02:00
Denis Pauk
4f68f0e9f1 Fix link issues 2017-12-17 23:18:56 +02:00
Yamagi Burmeister
2c149eda99 Call te soft renderer just "Software" and not "SDL Soft". 2017-12-17 09:59:37 +01:00
Yamagi Burmeister
6129e902b0 Add missing SDL2.h header. 2017-12-17 08:34:42 +01:00
Yamagi Burmeister
041d1c6cb6 Remove unused WinError() function. 2017-12-16 16:55:30 +01:00
Yamagi Burmeister
00bf016576 Rewrite all cvars, not just the ones loaded from config.cfg.
And print a nice message thate the cvar is deprecated.
2017-12-16 16:42:24 +01:00
Yamagi Burmeister
b433ee10fd Add a way to rewrite cvars loaded from config.cfg.
With this renamed cvars can be rewritten when config.cfg is first
loaded. Please note that once this was done older YQ2 versions can't
parse that config.cfg anymore.
2017-12-14 19:48:44 +01:00
Denis Pauk
60b444834e Set VSYNC 2017-12-11 23:48:12 +02:00
Denis Pauk
4f9833153f Fix background under cinematic and gamma values 2017-12-11 23:33:19 +02:00
sezero
51200b3e6b replace several long casts with intptr_t and include stdint.h for it. 2017-12-11 23:33:19 +02:00
Denis Pauk
c43e944a3d Rebase soft render from https://icculus.org/quake2/
* deleted asm code
* added support 2k+ resolutions
* SDL2 support
2017-12-11 23:33:19 +02:00
Yamagi Burmeister
430e21eab0 Bump version number to 7.11pre now that 7.10 is done. 2017-12-11 17:12:05 +01:00
Yamagi Burmeister
0e51204908 Bump version number to 7.10. 2017-12-08 10:22:59 +01:00
Yamagi Burmeister
9b82cad2c6 Bump version number to 2.10pre.
The next version will be 2.10 and not 2.03. This is done in preparation
of some Windows test builds.
2017-12-04 17:35:40 +01:00
Daniel Gibson
c3d3e9fc76 Make viewing with joystick framerate-independent
otherwise looking around is faster with higher framerates, that sucks,
especially with unstable framerates (on RPi)
2017-12-02 18:54:31 +01:00
Yamagi Burmeister
e429356bd3 Merge branch 'openal_volume' 2017-12-02 16:41:39 +01:00
Yamagi
44da2aca3b
Merge pull request #262 from DanielGibson/fix-win-msaa-crash
Fix crash on Windows if MSAA is set to a value the driver doesn't support
2017-12-02 16:38:26 +01:00
Daniel Gibson
c105117d41 cap cl_maxfps and gl_maxfps to sane values
gl_maxfps > 1000 breaks things, and cl_maxfps starts to behave weird
at >90, and while up to 125 or so you get the bugfeature of higher
jumping, beyond that things just get even buggier, at some point causing
bugs like #261
2017-12-02 16:36:50 +01:00
Yamagi Burmeister
e3e5bd1bdd Fix drop in volume when shooting into a Brains power screen.
If too many of these sounds are started in one frame (for example if the
player shoots with the super shotgun into the power screen of a Brain)
things get too loud and OpenAL is forced to scale the volume of several
other sounds and the background music down. That leads to a noticable
and annoying drop in the overall volume.

Work around that by limiting the number of sounds started. 16 was
choosen by empirical testing.
2017-11-30 08:26:39 +01:00
Yamagi Burmeister
e30f824944 Don't cast the array itself but it's content.
This was so broken... Casting the type of an array to silence a
warning... It worked on x86, of course. But gave a SIGBUS on ARM.
Do it right, cast / copy the content of the array into another
array of the correct type. Yeah.

This fixes issue #231.
2017-11-14 17:24:41 +00:00
Yamagi
82616d0992
Merge pull request #253 from 0lvin/sdl_build_fix
Fix build with SDL1.2
2017-11-07 10:32:52 +01:00
Yamagi Burmeister
1396741904 Fix possible Vorbis buffer underruns.
There're two possible problems with the calculation of the number of
sound buffers for Vorbis if OpenAL is in use:

* We assume that the (more or less) maximum number buffers is allocated
  during map load. This is not correct if in a multiplayer game a lot of
  custom models with custom sound connect at a later time.
* 64 buffers (about 3 seconds worth of music) may be too low in some
  situations.

Work around this by recalculating the number of buffers if necessary.
We're now reserving about 256 (== 12 seconds) buffers.

This may fix issue #252.
2017-11-04 18:22:53 +01:00
Denis Pauk
9495fe4da9 Show real place of error and fix build with SDL1.2 2017-11-01 22:57:54 +02:00
Yamagi
7b6340ddff Merge pull request #245 from 0lvin/back_button_as_escape
Add support for use controller back button as ESC
2017-10-22 18:19:56 +02:00