# QuakeSpasm

##

Page last edited Oct. 07, 2012

## 1. About

## 2. Downloads

## 3. Hints

- 3.1 Music Playback

## 4. Compiling

- 4.1 Linux/Unix
- 4.2 Windows
- 4.3 Mac OS X

## 5. Known Bugs

## 6. Changes

- 6.1 Changes in 0.85.8
- 6.2 Changes in 0.85.7
- 6.3 Changes in 0.85.6
- 6.4 Changes in 0.85.5
- 6.5 Changes in 0.85.4
- 6.6 Changes in 0.85.3
- 6.7 Changes in 0.85.2
- 6.8 Changes in 0.85.1

## 7. Todo

## 8. Copyright

## 9. Links

## 1. About

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.

http://quakespasm.sourceforge.net

## 2. Downloads

- http://quakespasm.sourceforge.net/download.htm

## 3. Hints

Visit the FitzQuake Homepage for a full run-down of the engine's commands and variables.

- To disable some changes, use "quakespasm -fitz"
- For different sound drivers use "SDL_AUDIODRIVER=DRIVER ./quakespasm" , where DRIVER may be alsa, dsp, pulse, esd ...
- Shift+Escape draws the Console.
- From the console, use UP to browse the command line history and TAB to autocomplete command and map names.
- There is currently no CD Music volume support. cd_sdl.c needs replacing with cd_linux.c, cd_bsd.c etc..
- In windows, alternative CD drives are accessible by "quakespasm -cddev F" (for example)
- Quakespasm allows loading new games (mods) on the fly with "game GAMENAME"

## 3.1 Music Playback

Since version 0.85.4, Quakespasm can play back external MP3, OGG and Wave music files.

- Tracks should be named like "track02.ogg", "track03.ogg" ... (there is no track01) and placed into "Quake/id1/music".
- Unix users may need some extra libraries installed: "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG.
- To prevent tracks from being downsampled, use the "-sndspeed" option to set a sufficiently high sample rate.
- Use the "-noextmusic" option to disable this feature.
- See README.music for more details.

## 4. Compiling

To check-out the latest version of QuakeSpasm, use :
svn co https://quakespasm.svn.sourceforge.net/svnroot/quakespasm/trunk

## 4.1 Linux/Unix

After extracting the source tarball, browse the Makefile and edit the music streaming options, then

    make
    cp quakespasm /usr/local/games/quake (for example)

Compile time options include

- make DEBUG=1 for debugging
- make SDL_CONFIG=/PATH/TO/SDL-CONFIG for unusual SDL installations

Streaming music playback requires "libmad" or "libmpg123" for MP3, and "libogg" and "libvorbis" for OGG files.

HOME directory support can be enabled via Misc/homedir_0.patch

The project can also be built with Codeblocks (project files included).

## 4.2 Windows

The QuakeSpasm developers cross-compile windows binaries using MinGW and Mingw-w64.

The project can also be built using Visual Studio 2005 (or newer).

## 4.3 Mac OS X

A Quakespasm App (including program launcher and update framework) can be made using the Xcode template found in the MacOSX directory.

Alternatively, have a look at Makefile.darwin for more instructions on building from a console.

## 5. Known Bugs

Some versions of Xorg and SDL have brightness issues. If you have Xorg >= 7.5 and broken brightness, these patched libSDL binaries may help.

- Gamma patched libSDL (i686-linux)
- Gamma patched libSDL (x86_64-linux)

## 6. Changes

## 6.1 Changes in 0.85.8

- Made Quake shareware 1.00 and 1.01 versions to be recognized properly.
- Fixed control-character handling in unicode mode. Keyboard input tweaks.
- Made the keypad keys to send separate key events in game mode.
- Text pasting support from OS clipboard to console. (windows and macosx.)
- Support for the Apple (Command) key on macosx.
- Fixed increased (more than 32) dynamic lights.
- Music playback: Made sure that the file's channels count is supported.
- Support for Solaris.
- Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X.
- Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux.
- Fixed a minor intermissions glitch.
- Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC.
- Restored original behavior for Quake registered version detection.
- Minor demo recording/playback tweaks.
- Minor tweaks to the scale menu option.
- unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.)
- New icon.
- Miscellaneous source code cleanups.

## 6.2 Changes in 0.85.7

- Added support for cross-level demo playback
- gl_texturemode is reimplemented as a cvar with a callback and the setting is automatically saved to the config
- Fixed execution of external files without a newline at the end
- Reduced memory usage during reloading of textures
- Fixed compilation on GNU/kFreeBSD (Debian bug #657793)
- Fixed backspace key on Mac OS X
- Disable mouse acceleration in Mac OS X
- Worked around recursive calling of the anisotropic filter callback
- Console word wrap and long input line fixes
- Verified correct compilation by clang (using v3.0)
- Several other small changes mostly invisible to the end-user

## 6.3 Changes in 0.85.6

- More work for string buffer safety
- 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)
- Several cleanups/changes in the cvar layer
- Minor SDL video fixes.

## 6.4 Changes in 0.85.5

- SDL input driver updated adding native keymap and dead key support to the console
- Fixed a crash in net play in maps with extended limits
- Verified successful compilation using gcc-4.6.x
- Added workaround against GL texture flicker (z fighting), controlled by new cvar 'gl_zfix'
- Read video variables early so that a vid_restart isn't necessary after init
- mlook and lookspring fixes
- Added support for loading external entity files, controlled by new cvar 'external_ents'
- Made mp3 playback to allocate system memory instead of zone
- Some updates to the progs interpreter code
- Fixed r_nolerp_list parsing code of fitzquake
- Made sure that deathmatch and coop are not set at the same time
- Several code updates from uHexen2 project, several code cleanups.

## 6.5 Changes in 0.85.4

- Implement music (OGG, MP3, WAV) playback
- A better fix for the infamous SV_TouchLinks problem, no more hard lockups with maps such as "whiteroom"
- Add support for mouse buttons 4 and 5
- Fix the "unalias" console command
- Restore the "screen size" menu item
- Fixed an erroneous protocol check in the server code
- Raised the default zone memory size to 384 kb
- Raised the default max_edicts from 1024 to 2048
- 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
- Fixed rest of the compiler warnings
- Other minor sound and cdaudio updates

## 6.6 Changes in 0.85.3

- Fix the "-dedicated" option (thanks Oz) and add platform specific networking code (default) rather than SDL_net
- Much needed OSX framework stuff from Kristian
- Add a persistent history feature (thanks Baker)
- Add a slider for scr_sbaralpha, which now defaults to 0.95 (slightly transparent, allowing for a nicer status bar)
- Allow player messages longer than 32 characters
- Sockaddr fix for FreeBSD/OSX/etc networking
- Connect status bar size to the scale slider
- Include an ISNAN (is not-a-number) fix to catch the occassional quake C bug giving traceline problems
- Enumerate options menus
- Add a "prev weapon" menu item (from Sander)
- Small fix to Sound Block/Unblock on win32
- Lots of code fixes (some from uhexen2)
- Sys_Error calls Host_Shutdown
- Added MS Visual Studio support
- Add a "-cd" option to let the CD Player work in dedicated mode, and some other CD tweaks.

## 6.7 Changes in 0.85.2

- Replace the old "Screen size" slider with a "Scale" slider
- Don't constantly open and close condebug log
- Heap of C clean-ups
- Fix mapname sorting
- Alias the "mods" command to "games"
- Block/Unblock sound upon focus loss/gain
- NAT fix (networking protocol fix)
- SDLNet_ResolveHost bug-fix allowing connection to ports other than 26000
- 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.
- Accept commandline options like "+connect ip:port"
- Add OSX Makefile (tested?)

## 6.8 Changes in 0.85.1

- 64 bit CPU support
- Restructured SDL sound driver
- Custom conback
- Tweaked the command line completion and added a map/changelevel autocompletion function
- Alt+Enter toggles fullscreen
- Disable Draw_BeginDisc which causes core dumps when called excessively
- Show helpful info on start-up
- Include real map name (sv.name) and skill in the status bar
- Remove confirm quit dialog
- Don't spam the console with PackFile seek requests
- Default to window mode
- Withdraw console when playing demos
- Don't play demos on program init
- Default Heapsize is 64meg
- Changes to default console alpha, speed
- Changes to cvar persistence gl_flashblend (default 0), r_shadow, r_wateralpha, r_dynamic, r_novis

## 7. Todo

- Add uHexen2's first person camera (and menu item)
- Native CD audio support (if desired). cd_sdl.c doesn't have proper volume controls
- Test usb keyboards.
- Complete the unix user directories support

## 8. Copyright

- Quake and Quakespasm are released under the GNU GENERAL PUBLIC LICENSE Version 2
- Quakespasm console background image by AAS, released under the CREATIVE COMMONS PUBLIC LICENSE

## 9. Links

- QuakeSpasm Homepage
- QuakeSpasm Project page
- FitzQuake Homepage
- Sleepwalkr's Original SDL Port
- Baker's 0.85 Source Code
- Func Quakespasm forum
- Func SDL Fitzquake forum
- Ozkan's email
- Stevenaaus email
- Kristian's email