<em>Visit the <url url="http://www.celephais.net/fitzquake" name="FitzQuake homepage"> for a full run-down of the engine's commands and variables.</em>
<item>Quakespasm's custom data is stored in "quakespasm.pak". Install this file alongside your id1 directory to enable the custom console background and other minor features.
The SDL2 variant of Quakespasm supports Xbox 360 style game controllers.
<p>
The default configuration uses the left analog stick for movement and the right for looking.
<p>
If your controller doesn't work you can try placing <url url="https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt" name="this file"> in your Quake directory, it is a community-maintained database that adds support for more controllers to SDL2.
<sect2>Cvars<p>
<itemize>
<item>joy_deadzone - Fraction of the stick travel to be deadzone, between 0 and 1. Default 0.2.
<item>joy_deadzone_trigger - Fraction of trigger range required to register a button press on the analog triggers, between 0 and 1. Default 0.001.
<item>joy_sensitivity_yaw/pitch - Max angular speed in degrees/second when looking. Defaults are 300 for yaw (turning left/right) and 150 for pitch (up/down).
<item>joy_exponent - For the look stick, the stick displacement (between 0 and 1) is raised to this power. Default is 3. A value of 1 would give a linear relationship between stick displacement and fraction of the maximum angular speed.
<item>joy_invert - Set to 1 to invert the vertical axis of the look stick.
<item>joy_swapmovelook - Set to 1 to swap the left and right analog stick functions. Default 0, move on the left stick, look on the right stick.
<item>joy_enable - Set to 0 to disable controller support. Default 1.
</itemize>
<sect2>Buttons<p>
Some of the controller buttons are hardcoded to allow navigating the menu:
<itemize>
<item>Back - alias for TAB
<item>Start - alias for ESC
<item>DPad, analog sticks - mapped to arrow keys
<item>A Button - alias for ENTER in menus
<item>B Button - alias for ESC in menus
</itemize>
These buttons can be bound normally:
<itemize>
<item>LTRIGGER - Left trigger
<item>RTRIGGER - Right trigger
<item>LSHOULDER - Left shoulder button
<item>RSHOULDER - Right shoulder button
<item>LTHUMB - Clicking the left thumbstick
<item>RTHUMB - Clicking the right thumbstick
<item>ABUTTON
<item>BBUTTON
<item>XBUTTON
<item>YBUTTON
</itemize>
quakespasm.pak contains a default.cfg which has been updated to give some default bindings. L/R shoulder buttons are bound to weapon switching, and L/R triggers are jump and attack.
<p>
The controller support started as Jeremiah Sypult's implementation in Quakespasm-Rift and also uses ideas and code from LordHavoc (DarkPlaces).
<p>Quakespasm's (optional) custom data is now stored in the file <bf>quakespasm.pak</bf>. This file should be placed alongside your quakespasm binary and <bf>id1</bf> directory.</p>
The QuakeSpasm developers cross-compile windows binaries using <url url="http://www.mingw.org" name="MinGW"> and <url url="http://mingw-w64.sf.net" name="Mingw-w64">.
The "game" command doesn't execute quake.rc in the new game directory being switched to. This means any custom key bindings in a mod's config.cfg or special settings in a quake.rc won't be loaded. The only workaround is launching the engine with the -game command-line switch instead of using the game console command. Or, after running the game command, you can run "exec quake.rc" by yourself (YMMV).
<item> Contrast support with new "contrast" cvar, behaving the same as MarkV. It may be a useful alternative to the existing gamma control for laptops in a bright environment, etc. Raising contrast gives less of a gray/washed out look than raising gamma, but at a disadvantage: colors near white get clipped to white.
<item> RMQ protocol (999) support, adapted from RMQEngine.
<item> New "-protocol x" command line option. Accepted values for 'x' are 15 (NetQuake), 666 (FitzQuake, default), and 999 (RMQ).
<item> New "setpos" console command.
<item> New "vid_borderless" cvar for getting a borderless window.
<item> Increased MAX_MAP_LEAFS from 65535 to 70000 and MAX_LIGHTMAPS from 256 to 512 in order to handle the oms3 map pack.
<item> Server edicts are now allocated using malloc instead of allocating on the hunk.
<item> gl_clear now defaults to 1.
<item> Fix items falling out of the world on oms3.bsp on SSE builds.
<item> Worked around an OSX 10.6 driver bug when using FSAA, which was leading to an unplayable HOM effect on the rest of the screen.
<item> Fix wrong trace endpoint from the tracepos console command.
<item> Updated some of the third-party libraries. Other fixes/clean-ups.
<item> Prevent a possible buffer overflow in Cbuf_Execute (old Q1/Q2 bug).
<item> Prevent a possible vulnerability in MSG_ReadString (old Q1/Q2 bug).
</itemize>
<sect2> Visual improvements
<itemize>
<item> New cvars r_lavaalpha, r_slimealpha, r_telealpha for fine-tuning specific liquid opacities (from DirectQ/RMQEngine, non-archived, default to 0), and new worldspawn keys _wateralpha, _lavaalpha, _slimealpha, _telealpha, _skyfog (unique to Quakespasm, similar to the behaviour of the "fog" worldspawn key).
<item> GLSL gamma is now supported on older hardware without NPOT extension.
<item> New gamma correction implementation using GLSL. Fixes all known gamma issues (affecting the full display, persisting after quitting, or darkening the screen on OS X). Disable with "-noglslgamma".
<item> Use high-quality water by default (r_oldwater 0).
<item> Experimental windowed fullscreen mode available with vid_desktopfullscreen 1 (only in SDL2 builds, takes effect upon entering fullscreen mode the next time.)
<item> Some spam moved from developer 1 to 2: "can't find tga/lit/ent", "trying to load ent", "bad chunk length", "meshing", "PR_AlocStringSlots: realloc'ing"
<item> Revised/improved the 'game' command, i.e. on-the-fly mod changing. It now accepts an optional second argument for mission packs or quoth support i.e. -hipnotic, -rogue, or -quoth. For example, for WarpSpasm: "game warp -quoth"
<item> Command line: "-game {quoth/hipnotic/rogue}" is now treated the same as -quoth, -hipnotic, or -rogue.
<item> Disabled gl_zfix, which caused glitches and is undesirable for new maps. Replacement .ent files to fix z-fighting for several id1 maps added to quakespasm.pak.
<item> Music and sfx now mixed at 44100 Hz to avoid downsampling music. Low-pass filter applied to the sfx if -sndspeed is 11025 (the default), to preserve the same sound quality as 0.85.9. New -mixspeed option sets the rate for mixing sfx and music, and output to the OS (default 44100), setting it to 11025 reverts to 0.85.9 behaviour. New snd_filterquality cvar, value can be between 1 (emulate OS X resampler) and 5 (emulate Windows resampler), controls the sound of the low-pass filter.
<item> MAX_ENT_LEAFS bumped from 16 to 32 to work around disappearing or flickering brush models in some situations. Also, if an entity is visible from MAX_ENT_LEAFS or more leafs, we now always send it to the client.
<item> Fixes for several undefined behaviors in C code (gcc-4.8 support.)
<item> Implemented Hor+ style field of view (FOV) scaling, useful for widescreen resolutions. Configured by new cvar fov_adapt: set it to 1 and your fov will be scaled automatically according to the resolution. Enabled by default.
<item> Adjusted string buffers for PR_ValueString and friends to fix crashes with excessively long global strings seen in some rude mods.
<item> Toned down warning messages from PF_VarString() a bit.
<item> Fixed Fitzquake's map existence check in changelevel (used to leak file handles which would end up in a Sys_Error() due to consuming all free handles if many maps reside not in pak files.)
<item> Fixes/cleanups in chat mode handling. Client no longer gets stuck in chat mode upon disconnect.
<item> Mouse grab/key_dest fixes and key cleanups.
<item> The "speedkey" now acts as "slowkey" when "always run" is on.
<item> Reverted v0.85.5 change of not allowing deathmatch and coop cvars to be set at the same time (was reported for possibility of causing compatibility issues with mods)
<item> Bumped array size of sv_main.c::localmodels from 5 to 6 fixing an old fitzquake-0.85 bug which used to cause segfaults depending on the compiler.