QuakeSpasm <toc> <verb></verb> <em>Page last edited July 30, 2014</em> <sect> About <p> QuakeSpasm is a Quake 1 engine based on the SDL port of FitzQuake. It includes 64bit CPU support, a new sound driver, several networking fixes and a few graphical niceities. <url url="http://quakespasm.sourceforge.net"> <sect> Downloads <p> <itemize> <item><url url="http://quakespasm.sourceforge.net/download.htm"> </itemize> <sect> Hints <p> <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> <itemize> <item>To disable some changes, use "<bf>quakespasm -fitz</bf>" <item>For different sound drivers use "<bf>SDL_AUDIODRIVER=</bf><em>DRIVER</em><bf> ./quakespasm</bf>" , where DRIVER may be alsa, dsp, pulse, esd ... <item><bf>Shift+Escape</bf> draws the Console. <item>From the console, use <bf>UP</bf> to browse the command line history and <bf>TAB</bf> to autocomplete command and map names. <item>There is currently no CD Music volume support. cd_sdl.c needs replacing with cd_linux.c, cd_bsd.c etc.. <item>In windows, alternative CD drives are accessible by "<bf>quakespasm -cddev F</bf>" (for example) <item>Quakespasm allows loading new games (mods) on the fly with "<bf>game</bf> <em>GAMENAME</em>" </itemize> </p> <sect1>Music Playback<p> Since version 0.85.4, Quakespasm can play back external MP3, OGG and Wave music files. <itemize> <item>Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music". <item>Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG. <item>To prevent tracks from being downsampled, use the "-sndspeed" option to set a sufficiently high sample rate. <item>Use the "-noextmusic" option to disable this feature. <item>See <url url="README.music"> for more details. </itemize> <sect> Compiling <p> <p>To check-out the latest version of QuakeSpasm, use : <newline> <em>svn co svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm</em></p> <sect1> Linux/Unix <p> After extracting the source tarball, browse the Makefile and edit the music streaming options, then <code> make cp quakespasm /usr/local/games/quake (for example) </code> <newline> Compile time options include <itemize> <item><bf>make DEBUG=1</bf> for debugging <item><bf>make SDL_CONFIG=</bf><em>/PATH/TO/SDL-CONFIG</em> for unusual SDL installations </itemize> <p>Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files. <p>HOME directory support can be enabled via <bf>Misc/homedir_0.patch</bf> <p>The project can also be built with Codeblocks (project files included).</p> <sect1> Windows <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 project can also be built using Visual Studio 2005 (or newer).</p> <sect1> Mac OS X <p> A Quakespasm App (including program launcher and update framework) can be made using the <bf>Xcode</bf> template found in the MacOSX directory. Alternatively, have a look at <bf>Makefile.darwin</bf> for more instructions on building from a console. </p> <sect> Known Bugs <p> Some versions of Xorg and SDL have brightness issues. <newline> Try setting "export SDL_VIDEO_X11_NODIRECTCOLOR=1", or if you have Xorg >= 7.5 and broken brightness, these patched libSDL binaries may help. <itemize> <item><url url="http://sourceforge.net/projects/quakespasm/files/Support%20Files/libSDL_gamma_patched.tgz/download" name="Gamma patched libSDL (i686-linux)"></li> <item><url url="http://sourceforge.net/projects/quakespasm/files/Support%20Files/libSDL_gamma_patched-AMD64.tgz/download" name="Gamma patched libSDL (x86_64-linux)"> </itemize> </p> <p> OS X has a well known gamma issue where the screen turns dark, but we currently have no fix. </p> <sect> Changes<p> <sect1> Changes in 0.85.10<p> <itemize> <item> Support for opengl non-power-of-two-textures extension. <item> Dynamic light speedup. <item> Support for BSP2 and 2PSB map formats. <item> Support for Opus, FLAC, and tracker (S3M/UMX) music (as compile-time options). <item> Better Hor+ field of view (FOV) scaling behavior. <item> Fix screenshots when screen width isn't a multiple of 4. <item> Fix a lighting glitch due to floating point precision. <item> Fix a looping sounds glitch. <item> Fix a vulnerability in file extension handling. Tighten path handling safety. <item> Initialize opengl with 24-bit depth buffer at 32 bpp. <item> Reset all models upon gamedir changes. (Fixes failures with mods using custom content.) <item> Fix broken behavior upon gamedir changes if -basedir is specified on the command line. <item> NET_MAXMESSAGE and MAX_MSGLEN limits bumped to 64000. <item> Host_Error upon missing models. (Prevents segmentation faults.) <item> Quakespasm content customization moved from engine-embedded into a new optional quakespasm.pak file. <item> Other fixes and clean-ups. </itemize> </p> <sect1> Changes in 0.85.9<p> <itemize> <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> Support for demo recording after connection to server. (thanks to Baker for a patch) <item> Corner case fixes in COM_Parse() for quoted strings and support for C-style /*..*/ comments. <item> Changed lightmaps to GL_RGBA instead of GL_RGB. <item> Better parse for opengl extensions list (from quakeforge.) <item> Vsync saving/loading fixes. <item> Fixed pointfile loading. <item> Multiple cleanups in gl_vidsdl.c. <item> Opus music decoding support (as an optional patch only.) <item> Several other minor fixes/cleanups. </itemize> </p> <sect1> Changes in 0.85.8<p> <itemize> <item> Made Quake shareware 1.00 and 1.01 versions to be recognized properly. <item> Fixed control-character handling in unicode mode. Keyboard input tweaks. <item> Made the keypad keys to send separate key events in game mode. <item> Text pasting support from OS clipboard to console. (windows and macosx.) <item> Support for the Apple (Command) key on macosx. <item> Fixed increased (more than 32) dynamic lights. <item> Music playback: Made sure that the file's channels count is supported. <item> Support for Solaris. <item> Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X. <item> Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux. <item> Fixed a minor intermissions glitch. <item> Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC. <item> Restored original behavior for Quake registered version detection. <item> Minor demo recording/playback tweaks. <item> Minor tweaks to the scale menu option. <item> unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.) <item> New icon. <item> Miscellaneous source code cleanups. </itemize> </p> <sect1> Changes in 0.85.7<p> <itemize> <item> Added support for cross-level demo playback <item> gl_texturemode is reimplemented as a cvar with a callback and the setting is automatically saved to the config <item> Fixed execution of external files without a newline at the end <item> Reduced memory usage during reloading of textures <item> Fixed compilation on GNU/kFreeBSD (Debian bug #657793) <item> Fixed backspace key on Mac OS X <item> Disable mouse acceleration in Mac OS X <item> Worked around recursive calling of the anisotropic filter callback <item> Console word wrap and long input line fixes <item> Verified correct compilation by clang (using v3.0) <item> Several other small changes mostly invisible to the end-user </itemize> </p> <sect1> Changes in 0.85.6<p> <itemize> <item> More work for string buffer safety <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> Several cleanups/changes in the cvar layer <item> Minor SDL video fixes. </itemize> </p> <sect1> Changes in 0.85.5<p> <itemize> <item> SDL input driver updated adding native keymap and dead key support to the console <item> Fixed a crash in net play in maps with extended limits <item> Verified successful compilation using gcc-4.6.x <item> Added workaround against GL texture flicker (z fighting), controlled by new cvar 'gl_zfix' <item> Read video variables early so that a vid_restart isn't necessary after init <item> mlook and lookspring fixes <item> Added support for loading external entity files, controlled by new cvar 'external_ents' <item> Made mp3 playback to allocate system memory instead of zone <item> Some updates to the progs interpreter code <item> Fixed r_nolerp_list parsing code of fitzquake <item> Made sure that deathmatch and coop are not set at the same time <item> Several code updates from uHexen2 project, several code cleanups. </itemize> </p> <sect1> Changes in 0.85.4<p> <itemize> <item> Implement music (OGG, MP3, WAV) playback <item> A better fix for the infamous SV_TouchLinks problem, no more hard lockups with maps such as "whiteroom" <item> Add support for mouse buttons 4 and 5 <item> Fix the "unalias" console command <item> Restore the "screen size" menu item <item> Fixed an erroneous protocol check in the server code <item> Raised the default zone memory size to 384 kb <item> Raised the default max_edicts from 1024 to 2048 <item> Revised lit file loading, the lit file must be from the same game directory as the map itself or from a searchpath with a higher priority <item> Fixed rest of the compiler warnings <item> Other minor sound and cdaudio updates </itemize> </p> <sect1> Changes in 0.85.3<p> <itemize> <item> Fix the "-dedicated" option (thanks Oz) and add platform specific networking code (default) rather than SDL_net <item> Much needed OSX framework stuff from Kristian <item> Add a persistent history feature (thanks Baker) <item> Add a slider for scr_sbaralpha, which now defaults to 0.95 (slightly transparent, allowing for a nicer status bar) <item> Allow player messages longer than 32 characters <item> Sockaddr fix for FreeBSD/OSX/etc networking <item> Connect status bar size to the scale slider <item> Include an ISNAN (is not-a-number) fix to catch the occassional quake C bug giving traceline problems <item> Enumerate options menus <item> Add a "prev weapon" menu item (from Sander) <item> Small fix to Sound Block/Unblock on win32 <item> Lots of code fixes (some from uhexen2) <item> Sys_Error calls Host_Shutdown <item> Added MS Visual Studio support <item> Add a "-cd" option to let the CD Player work in dedicated mode, and some other CD tweaks. </itemize> <sect1> Changes in 0.85.2<p> <itemize> <item> Replace the old "Screen size" slider with a "Scale" slider <item> Don't constantly open and close condebug log <item> Heap of C clean-ups <item> Fix mapname sorting <item> Alias the "mods" command to "games" <item> Block/Unblock sound upon focus loss/gain <item> NAT fix (networking protocol fix) <item> SDLNet_ResolveHost bug-fix allowing connection to ports other than 26000 <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. <item> Accept commandline options like "+connect ip:port" <item> Add OSX Makefile (tested?) </itemize> <sect1> Changes in 0.85.1<p> <itemize> <item>64 bit CPU support <item>Restructured SDL sound driver <item>Custom conback <item>Tweaked the command line completion and added a map/changelevel autocompletion function <item>Alt+Enter toggles fullscreen <item>Disable Draw_BeginDisc which causes core dumps when called excessively <item>Show helpful info on start-up <item>Include real map name (sv.name) and skill in the status bar <item>Remove confirm quit dialog <item>Don't spam the console with PackFile seek requests <item>Default to window mode <item>Withdraw console when playing demos <item>Don't play demos on program init <item>Default Heapsize is 64meg <item>Changes to default console alpha, speed <item>Changes to cvar persistence gl_flashblend (default 0), r_shadow, r_wateralpha, r_dynamic, r_novis </itemize> <sect> Todo <p> <itemize> <item>Add uHexen2's first person camera (and menu item) <item>Native CD audio support (if desired). cd_sdl.c doesn't have proper volume controls <item>Test usb keyboards. <item>Complete the unix user directories support </itemize> <sect> Copyright <p> <itemize> <item>Quake and Quakespasm are released under the <url url="http://www.gnu.org/licenses/gpl-2.0.html" name="GNU GENERAL PUBLIC LICENSE Version 2"> <item>Quakespasm console background image by <bf>AAS</bf>, released under the <url url="http://creativecommons.org/licenses/by/3.0/legalcode" name="CREATIVE COMMONS PUBLIC LICENSE"> </itemize> <sect> Links <p> <itemize> <item><url url="http://quakespasm.sourceforge.net" name="QuakeSpasm Homepage"> <item><url url="http://sourceforge.net/projects/quakespasm" name="QuakeSpasm Project page"> <item><url url="http://www.celephais.net/fitzquake" name="FitzQuake Homepage"> <item><url url="http://www.kristianduske.com/fitzquake" name="Sleepwalkr's Original SDL Port"> <item><url name="Baker's 0.85 Source Code" url="http://quakeone.com/proquake/src_other/fitzquake_sdl_20090510_src_beta_1.zip"> <item><url url="http://www.celephais.net/board/view_thread.php?id=60452" name="Func Quakespasm forum"> <item><url url="http://www.celephais.net/board/view_thread.php?id=60172" name="Func SDL Fitzquake forum"> <item><url url="mailto:gmail - dot - com - username - sezeroz" name="Ozkan's email"> <item><url url="mailto:yahoo - dot - com - username - stevenaaus" name="Stevenaaus email"> <item><url url="mailto:gmail - dot - com - username - inveigle" name="Kristian's email"> <item><url url="mailto:gmail - dot - com - username - a.h.vandijk" name="Sander's email"> </itemize> </article>