Commit graph

1716 commits

Author SHA1 Message Date
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