Commit Graph

655 Commits

Author SHA1 Message Date
Max Crofts af69d1148f Improve FS_GetModList
- Paths to search for mods are now specified in an array

- Mods can now consist solely of ".pk3dir" folders and still be
considered valid

- The function now has a consistent style
2017-04-12 17:49:50 +10:00
Max Crofts 7ff610db35 Detect GOG install path 2017-04-07 16:26:26 +10:00
SmileTheory de3339ebcd Fill in filename in Com_WriteConfig_f() before checking extension.
Thanks BartoCH for pointing out.
2017-03-27 04:11:33 -07:00
SmileTheory d4e1a01f33 Remove FS_Read2().
Functionally the same as FS_Read().
Streaming functionality was removed in 672cfbf16f but flag remained.
2017-03-17 04:21:11 -07:00
SmileTheory b173ac0599 Merge some file writing extension checks from OpenJK.
Thanks Ensiform.
https://github.com/JACoders/OpenJK/commit/05928a57f9e4aae15a3bd0
https://github.com/JACoders/OpenJK/commit/ef124fd0fc48af164581176
2017-03-13 20:44:47 -07:00
SmileTheory 376267d534 Don't load .pk3s as .dlls, and don't load user config files from .pk3s. 2017-03-13 14:14:00 -07:00
Zack Middleton 313064baa4 Fix command line variables not being set correctly
+seta, +sets, and +setu were ignored because Com_AddStartupCommands
thought Com_StartupVariable handled it.

+set didn't allow value to be multiple tokens which due to Unix shell
unintuitively removing quotes causes the variable to only be set to
the first token. This could be worked around by escaping quotes

    ioq3ded +set g_motd \"hello world\"

but it doesn't match behavior of other start up commands (which now
includes seta, sets, and setu) that use all tokens.
2017-02-22 15:16:50 -06:00
Zachary J. Slater 7efe1c97a7 Merge pull request #99 from openmoh/ioq3-SSE-msg
rephrase SSE availability message (thanks)
2017-01-24 19:28:41 -10:00
Zachary J. Slater 6e4e6e8925 Merge pull request #91 from lnussel/master
a VM for ARMv7l (Thank you, Ludwig -zjs)
2017-01-24 19:27:13 -10:00
Zachary J. Slater bf3c88dcc1 Merge pull request #227 from smcv/old-style-declaration
Don't use mostly obsolete 'register' keyword (Merge or get off the pot.)
2017-01-24 19:17:40 -10:00
Simon McVittie 2ab109b772 Avoid 'register' declarations
gcc 6 with -Wall -Wextra warns:

code/botlib/l_precomp.c: In function ‘PC_NameHash’:
code/botlib/l_precomp.c:551:2: warning: ‘register’ is not at beginning of declaration [-Wold-style-declaration]
  int register hash, i;
  ^~~

Modern compilers either ignore the register storage class when
generating code, or generate better code without it, so just remove
most of them.

The remaining uses are in third-party bundled libraries (libjpeg, zlib),
and in a PowerPC-specific inline function consisting of inline
assembler (because I'm not 100% confident that it doesn't have
some practical use there).
2016-11-01 16:37:38 +00:00
Zack Middleton 10f33b892b Fix removing/creating PID file for base game when switching to/from mods 2016-10-27 22:54:33 -05:00
Zack Middleton c80f341711 Handle ERR_DROP during Com_GameRestart
If ERR_DROP during Com_GameRestart after shutting down client, Com_Error
needs to restart the client otherwise there is just a black window. Also,
clear the game restarting flag in Com_Error otherwise it's not possible to
run Com_GameRestart again later.

I don't know of a way to trigger ERR_DROP, in FS_Restart for instance,
without engine changes however.
2016-10-09 19:17:58 -05:00
Zack Middleton 755b2f38f0 Offer post-crash safe settings on a per-mod basis
Offer to restore settings when loading a mod that crashed, not the first
mod that gets loaded after a crash. Before the first mod loaded (usually
baseq3) would get the option even if missionpack or some other mod crashed.

- Make pid files separate for each fs_game.
- Remove/write pid every time switching fs_game.
- Create path before writing pid file otherwise it fails on first run.
- Show mod description.txt or fs_game instead of engine name in abnormal
  exit message.
- Check com_fullyInitialized in Com_Error before removing PID,
  otherwise "ioquake3 --version" segfaults when accessing fs_gamevar->string
  (plus not fully initialized isn't really a normal shutdown).
2016-10-09 18:18:08 -05:00
Tim Angus cce24668f7 Merge pull request #225 from smcv/reproducible-date
Pick up date from SOURCE_DATE_EPOCH, for reproducible builds
2016-09-27 21:05:24 +01:00
Simon McVittie 9c76b546e3 Pick up date from SOURCE_DATE_EPOCH, for reproducible builds
The goal of reproducible builds is that a rebuild of the same source
code with the same compiler, libraries, etc. should result in the same
binaries. SOURCE_DATE_EPOCH provides a standard way for build systems
to fill in the date of the latest source change, typically from a git
commit or from metadata like the debian/changelog in Debian packages.

This does not change anything if SOURCE_DATE_EPOCH is not defined;
the intention is that a larger build system like a Debian package
will define it.

Please see https://reproducible-builds.org/ for more information about
reproducible builds.
2016-09-22 09:02:20 +01:00
Simon McVittie 7d4f9525df Fix mis-spellings of "separating" as "seperating"
Found by Debian's Lintian tool.
2016-09-22 08:56:30 +01:00
Thomas Köppe fe111df610 [qcommon/msg.c] Remove dead code (which had undefined behaviour) 2016-09-12 13:32:59 +01:00
Thilo Schulz 9d6a95d4ad Missed this Cvar_Get() on com_introPlayed 2016-06-16 03:29:26 +02:00
Thilo Schulz bb7ad55382 Only play logo/intro if their filenames have been defined in q_shared.h 2016-06-16 03:01:21 +02:00
Victor Roemer 398dea397c Fix Makefile for OSX
Bump base SDK from 10.5 -> 10.7
Just use the builtin __APPLE__
2016-06-12 17:17:33 -04:00
Zack Middleton 8b458e5457 Fix warnings that names passed to Name_PlayerNameCompletion is not const 2016-05-09 10:41:58 -05:00
SmileTheory 871872689e OpenGL2: Add named cubemaps and per-map env.json parsing. 2016-02-10 16:25:32 -08:00
Zack Middleton 615b73288f Use Opus for VoIP
Server/client VoIP protocol is handled by adding new cvars
cl_voipProtocol and sv_voipProtocol, sv_voip and cl_voip
are used to auto set/clear them. All users need to touch
are cl/sv_voip as 0 or 1 just like before.

Old Speex VoIP packets in demos are skipped.
New VoIP packets are skipped in demos if sv_voipProtocol
doesn't match cl_voipProtocol.

Notable difference between usage of speex and opus codecs,
when using Speex client would be sent 80ms at a time.
Using Opus, 60ms is sent at a time. This was changed because
the Opus codec supports encoding up to 60ms at a time.
(Simpler to send only one codec frame in a packet.)
2016-01-06 05:19:10 -06:00
Zachary J. Slater fe619680f8 Merge pull request #73 from Pan7/sayto
sayto cmd with player name completion
2015-12-28 09:04:19 -08:00
Zachary J. Slater 5555788867 Merge pull request #103 from openmoh/ioq3-intro
Have custom intro cinematics for standalone game
2015-12-28 08:56:20 -08:00
SmileTheory 2f77a98afe Use Windows uninstall path to find Steam Quake 3 install.
Thanks Pan- and Ensiform for pointing this out.
2015-09-25 04:55:41 -07:00
SmileTheory 3bd7a8d842 Search for mods in steam path as well as home and base paths. 2015-09-25 04:52:17 -07:00
Zack Middleton 7e96fd9cb6 Make steam path optional at compile time for standalone games 2015-09-22 19:25:16 -05:00
Zack Middleton 750fdc0e43 Align indent of defines at top of q_shared.h to 4 space tabs 2015-09-22 19:05:46 -05:00
Zack Middleton 68ab4e9548 Early out of Cmd_CompleteArgument and Cmd_SetCommandCompletionFunc
Reported by Ensiform.
2015-09-20 18:51:20 -05:00
Zack Middleton 5e09f20cd4 Use correct array size for facets in cm_patch.c 2015-09-17 18:46:01 -05:00
SmileTheory f860a753e0 Add Steam's Quake 3 Arena dir to game dirs on Windows. 2015-09-17 02:53:19 -07:00
Dion Williams ce2b8db294 Fix Cvar_Unset not notifying cvar_modifiedFlags
Upstream: JACoders/OpenJK@9a5e9e87ff
2015-09-07 11:29:15 +01:00
Zachary J. Slater 87e0bf6eaf Better language, less tense 2015-08-28 18:19:29 -07:00
Zachary J. Slater 4667210e1d more helpful error message
Can’t find your pak0.pk3? Here’s where we tried looking.
2015-08-28 10:36:46 -07:00
Tim Angus 61a49ba1db Merge pull request #129 from smcv/generic-platform
Implement Linux architecture support generically
2015-07-15 13:37:51 +00:00
Simon McVittie 2a71948f21 build: define ARCH_STRING in Makefile on Linux and other GNU platforms
GNU platforms (Linux, kFreeBSD, Hurd) have endian.h to determine
endianness, so all architectures except x86_64 are in fact treated
identically, except that their ARCH_STRING is different.
The ARCH_STRING must always be identical to the ARCH from the Makefile,
otherwise the engine will not find its cgame, game and ui plugins
under their expected names and startup will fail. If we pass it in
from the Makefile, then an identical value is guaranteed, and we can
get rid of an increasingly long list of defined(__some_cpu__) tests.

The one remaining quirk is that we test __x86_64__ to determine
whether to define idx64; I've kept that, but separated it from
the ARCH_STRING.

On non-Linux platforms we only support a few architectures anyway,
so keeping the list up to date is less of a burden; *BSD porters
could probably use the same technique to get support for lots of
architectures with little effort, but I have not done that here,
because I cannot test it.

Windows must continue to support preprocessor-based architecture tests
in any case, so that the MSVC solutions (which do not use the Makefile)
can continue to work. However, Windows only runs on a few CPU families,
so this shouldn't be a significant burden in practice.

When cross-compiling, the tools are compiled for the build architecture
(COMPILE_PLATFORM, COMPILE_ARCH) rather than the host architecture
(PLATFORM, ARCH), so define ARCH_STRING to COMPILE_ARCH on a GNU
COMPILE_PLATFORM.
2015-07-14 22:51:57 +01:00
Zack Middleton c7500bb28e Don't segfault in FS_CreatePath when there are no path seperators 2015-07-12 20:06:24 -05:00
Zack Middleton 2e904141ff Make more vm_x86 macros use braces so they work with if blah run macro
MASK_REG in EmitMovEDXStack would incorrectly emit asm if 'andit' was 0.
'andit' would never be 0 though so it wasn't causing issues.

Found by Coverity.
2015-07-12 19:11:13 -05:00
Zack Middleton ee2541efee Fix range checks for numBorders in CM_AddFacetBevels
Found by Coverity.
2015-07-12 18:39:54 -05:00
Zack Middleton 6a03817a9c Merge pull request #4 from smcv/hurd
Add support for the GNU/Hurd architecture
2015-06-30 19:02:46 -05:00
Martin Michlmayr ebb69f699c Add support for Aarch64 (ARM64)
Add support for Aarch64, the 64-bit ARM architecture.
2015-06-30 14:22:49 -04:00
/dev/humancontroller c52e35bcd8 fix a stupid use of strcpy()
strcpy() arguments may not overlap !
2015-06-18 17:24:50 -05:00
Zack Middleton 10c5f0b5a9 Merge pull request #116 from smcv/system-minizip
Enhancements for system libraries
2015-04-12 19:56:37 -05:00
/dev/humancontroller 1ce8ba0cdb Fix return values in nested system calls from QVMs
When the engine is compiled with Clang it appears that the return value
is being written to the WRONG address, either due to the vm_ variables being
changed (unexpectedly) elsewhere, or as a result of bad assembly assumptions;
having a stack variable pointing to where to write the return value seems
to do the trick.

This fixes the case where, for a trap_Register()-like call, weird numbers
are being returned when, during the process, an error message is printed
(which in Tremulous results in a QVM call and (nested) system call).
2015-03-23 20:17:07 -05:00
/dev/humancontroller c4a2836269 Fix Com_RandomBytes weak-random case
255 is valid for unsigned char too.
2015-03-20 18:50:58 -05:00
Simon McVittie caf08fdb7b unzip: comment why there is no USE_INTERNAL_MINIZIP boolean option
Bug: https://github.com/ioquake/ioq3/pull/116
2015-03-18 17:38:10 +00:00
Zack Middleton 1ff28f2389 Merge pull request #22 from zturtleman/cvar_modified
Add cvar_modified command
2015-01-07 19:48:16 -06:00
Michael Rieder 7c5feef6a2 Have custom intro cinematics for standalone game 2015-01-07 23:47:18 +01:00