Commit graph

941 commits

Author SHA1 Message Date
Yamagi Burmeister
aa57ec9f7b Fix oversight in last commit, the '/ 2' is evil. 2018-11-22 21:15:09 +01:00
Yamagi Burmeister
e137ff1168 Fix stupid bug in brush model indix block size calculations.
We're taking indices and converting them to pointer relative to the
hunks base. Yes, that's dirty. Since the indices are stored as 32 bit
values and hunks are generally small using 32 bit pointers is enough,
even on 64 bit platforms. So the code took the size of void* / 2...
See the problem? Yes, that's not a good idea on 32 bit platforms. Bite
the bullet and just take the size of void*. Shouldn't be a problem,
because the indices are the first thing that's loaded and the hunk is
trimmed right after it anyways. If, and just if, we really need each and
every byte in the early stages of map loading we need two cases. One for
64 bit and one for 32 bit.

This fixes issue #346. Kudos to @ricardosdl for the analysis.
2018-11-22 17:41:55 +01:00
Denis Pauk
25498be7ca Support retextured images.
Code based on www.quakewiki.net/quakesrc/39.html
Code ignores skin images, and is disabled by default.
2018-11-12 23:02:23 +02:00
Denis Pauk
0307361101 Remove unused cvars 2018-11-12 23:01:08 +02:00
Denis Pauk
1b2708c06e cppcheck fixes.
In src/backends/unix/network.c:
* line 181: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it?
* line 276: The scope of the variable 'tmp' can be reduced.
* line 665: The scope of the variable 'mcast_addr' can be reduced.
* line 665: The scope of the variable 'mcast_port' can be reduced.
* line 666: The scope of the variable 'error' can be reduced.
* line 775: The scope of the variable 'i' can be reduced.

In src/backends/windows/network.c:
* line 186: Assignment of function parameter has no effect outside the function. Did you forget dereferencing it?
* line 287: The scope of the variable 'tmp' can be reduced.
* line 707: The scope of the variable 'mcast_addr' can be reduced.
* line 707: The scope of the variable 'mcast_port' can be reduced.
* line 1049: The scope of the variable 'err' can be reduced.
* line 1163: The scope of the variable 'i' can be reduced.

In src/client/menu/menu.c

arrayIndexOutOfBounds:
* line 1921: Array 'creditsIndex[256]' accessed at index 256, which is out of bounds.

variableScope:
* line 332: The scope of the variable 'item' can be reduced.
* line 533: The scope of the variable 'x' can be reduced.
* line 533: The scope of the variable 'y' can be reduced.
* line 838: The scope of the variable 'b' can be reduced.
* line 864: The scope of the variable 'b' can be reduced.
* line 1910: The scope of the variable 'n' can be reduced.
* line 2199: The scope of the variable 'str' can be reduced.
* line 2812: The scope of the variable 'length' can be reduced.
* line 2813: The scope of the variable 'i' can be reduced.
* line 3838: The scope of the variable 'c' can be reduced.
* line 4112: The scope of the variable 'scratch' can be reduced.
* line 4181: The scope of the variable 'i' can be reduced.
* line 4345: The scope of the variable 's' can be reduced.

In src/game/player/hud.c

arrayIndexOutOfBounds:
* line 132: Array itemlist[43] accessed at index 255 which is out of bounds.
Itemlist assigned only once, and has only 43 items, better ignore unexisted items.

variableScope:
* line 82: The scope of the variable 'n' can be reduced.
* line 217: The scope of the variable 'x' can be reduced.
* line 217: The scope of the variable 'y' can be reduced.
* line 218: The scope of the variable 'cl' can be reduced.
* line 583: The scope of the variable 'cl' can be reduced.
2018-11-12 22:59:10 +02:00
Yamagi
bbdd3f1d60
Merge pull request #342 from earth-metal/master
Add support for CTF options to "start network server" menu.
2018-11-07 18:04:22 +01:00
Yamagi Burmeister
3c21575a01 Describe the limitiations of GLimp_GetRefreshRate(). 2018-11-06 12:26:56 +01:00
earth-metal
77dbf36b40 Add support for CTF options to "start network server" menu.
Allow numeric input of "capturelimit" cvar and toggling of CTF dmflags
via menu system.
2018-11-01 21:50:31 -04:00
earth-metal
feeba61721 Fix typo preventing display of Rogue "dmflag" options. 2018-11-01 08:58:18 -04: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
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
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
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
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
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
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
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
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
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
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