Spearmint 0.5 released

Spearmint 0.5 focused on text quality, multi-game support, and improving the user experience. See https://clover.moe/spearmint for downloads.

Spearmint 0.5 uses Liberation Sans/Mono TrueType fonts by default as a replacement for Quake 3’s gfx/2d/bigchars.tga and Team Arena’s fonts. The HUD fonts have a black outline for improved visibility. Work on this started in 2011. See the readme on the Spearmint website for font configuration documentation.

Spearmint 0.5 introduces support for playing the demo versions of Quake 3 and Team Arena and OpenArena 0.8.8 (without the additional game modes).

Spearmint 0.5 is not backward compatible with Spearmint 0.4 VMs. The network protocol number was changed from 10 to 11 in order to separate Spearmint 0.5 game servers from previous Spearmint versions.


  • Fix skipping to main menu instead of displaying Team Arena Single Player postgame menu. This was broken since before the first Spearmint release.
  • Fix reading usercmds after voip data. It was broken since Spearmint 0.3.
  • Fix Windows dedicated server crash at start up.
  • Fix dedicated servers delist from master after 23 days (sv_public was forced to 0).
  • Disable automatically window scaling for High DPI on Windows Vista and later.
  • Add fs_pakWarningDialog cvar to allow disabling pk3 checksum mismatch warning. It must be set on the command line.
  • Add top-level fonts directory available to all games.
  • Add fontlist command to show currently loaded fonts.
  • Add support loading bitmap TrueType, OpenType, and Windows .fon fonts.
  • Add drag and drop demo playback support to macOS AppBundle. It was already supported on Windows and GNU/Linux.
  • Make play demo command support any demo file extension.
  • Make demo playback set fs_game from system info in demo file.
  • Allow percent sign (%) and semicolon (;) in chat messages.
  • Allow mint-game.settings to specify demo extension (com_demoext) and game name for dpmaster (com_gamename).
  • Get default fs_game from spearmint-gamelist.txt based on what games are installed.
  • Change system homepath to use XDG_DATA_HOME (/home/user/.local/share/spearmint) instead of /home/user/.spearmint on Unix-like platforms.
  • On Unix, convert com_homepath (e.g., Spearmint) to lowercase and replace spaces with hyphens.
  • Move say/tell for dedicated server into Game VM.
  • Allow Game VM to reject splitscreen player dropout (for games that only allow add/removing splitscreen players between matches).
  • Remove botlib from engine. It use to be exposed to Game VM API.


  • Change renderer filename prefix from mint to spearmint.
  • Add view weapon fov to CGame API.
  • Add cheat protection to r_lightmap cvar.
  • Remove cheat protection from r_lodCurveError and OpenGL2’s r_forceSun cvars.
  • Disable OpenGL2’s r_autoExposure by default as it does not work correctly in splitscreen.
  • Don’t use occusion query for OpenGL2’s sun rays by default as it does not work correctly in splitscreen (r_drawSunRaysOcclusionQuery).
  • Add alphaTest shader keyword for American McGee’s Alice.
  • Add r_dlightImageSize cvar which affects the generated dynamic light image. Setting it to 16 (instead of the default 128) uses the vanilla Q3 image.
  • Add r_marksOnBrushModels cvar to allow disabling marks on moving platforms (the original Quake 3 behavior).
  • Fix first person player model OpenGL2 sun shadows only appearing if player is close to ground.
  • Fix floating point precision loss in renderer at high level times.
  • Fix lightningDiffuseEntity on ppc with altivec.
  • Fix dlights being invisible in OpenGL2 renderer. They were broken since Spearmint 0.2.
  • Fix dlights in splitscreen with sun shadows enabled
  • Get all OpenGL functions at run-time instead of partially at compile time.
  • Many fixes and improvements to the OpenGL2 renderer.

VM Common

  • Add command argument auto completion support for commands in CGame/Game VM.
  • Use separate global define lists in engine for Game and CGame.
  • Add trap_PC_RemoveGlobalDefine(const char *name) and (per-file) trap_PC_AddDefine(int handle, const char *name) to Game/CGame API.
  • Fix segfault when printing invalid UTF-8.
  • Fix crash when pmove_msec is 0.
  • Fix splitscreen corpse origin moving when player respawns.

CGame VM

  • Add trap_S_StopAllSounds() to CGame API.
  • Add mouse wheel support to UI list boxes.
  • Set r_lodCurveError and OpenGL2’s multisample cvar in Quake 3 graphics menu.
  • Add cg_weaponFov cvar for controlling first person weapon view model field of view independent from world field of view.
  • Add support for screenPlacement keyword to Team Arena menu files for widescreen. See the commit for details.
  • Add weaponToggle <weapNum> command for switching to a weapon and then back to previous when the command is run again.
  • Add (per-player) cg_cyclePastGauntlet cvar for allowing Gauntlet to be selected with weapnext and weapprev commands. It in the controls menu under the name “skip gauntlet”.
  • Add cg_crosshairHealth and cg_splitviewThirdEqual to Quake 3 game options menu.
  • Add cg_drawPickupItems cvar to allow disabling in Q3 / enabling in Team Arena.
  • Add +vstr command like in OSP mod and ET.
  • Add game filter to Quake 3 server browser.
  • Display 8 maps instead of 4 in Q3 start server menu.
  • Make server browser default to Internet and fetch servers from all master servers.
  • Make UI continue searching for local servers until found.
  • Load deferred player models when a splitscreen player is added.
  • Remove ‘Snow/Rain’ from Quake 3 Game Options menu.
  • Fix several issues with the Team Arena server browser.
  • Fix lightning trail when cg_drawGun is 0.
  • Fix HUD placement of Team Arena power ups in widescreen.
  • Fix Team Arena single player end of round camera orbit.
  • Fix clearing edge of screen after Team Arena UI kills server.
  • Fix nonresponsive favorites in Quake 3 having no hostname.
  • Fix team chat box (cg_teamChatHeight 8) being shared by all splitscreen players and messages appearing on screen twice (chat box and notify text).
  • Add tell messages from team mates to team chat box.
  • Fix lightning and grapple trails when missing models.
  • Fix cinematic file not being closed on CL_Disconnect.
  • Fix playing demos on macOS by opening demo via finder.
  • Fix splitscreen notify text line gap being 2x size.
  • A lot of improvements for using proportional width TrueType/OpenType fonts.

Game VM

  • Add botlib from engine for greater mod capabilities.
  • Add dedicated server say/tell command, which were previously in the engine.
  • Allow persistant powers without team to be picked up.
  • Don’t start a vote after vote passed for map change.
  • Fix team chat meant for bot getting sent to wrong player if bot client number does not equal player number.
  • Fix swapping bot bounding boxes in AAS files on powerpc.
  • Fix multiple delayed “addbot random” commands sometimes picking the same bot.
  • Fix hit accuracy stats for lightning gun and shotgun kills.
  • Fix score bonus for defending the flag carrier in CTF.
  • Restore not giving defense score bonus to flag carrier.
  • Add score bonus for defending the flag carrier in 1 Flag CTF.
  • Make bots use crusher on other q3tourney6 maps.
  • Make bots only use q3tourney6 crusher to kill their enemy.
  • Don’t turn game commands into chat at intermission.







2 responses to “Spearmint 0.5 released”

  1. ZaRR Avatar

    !IMPRESSIVE! Such a huge work you’ve done, ZTM! Thanks so much! As I said before, you are professional quake coder!

  2. illwieckz Avatar

    Hey, good work there ZTM! good job!