Spearmint 1.0.0 released

Spearmint 1.0.0 has many minor attention-to-detail improvements. The most interesting changes being:

  • Console command argument auto completion for model and headmodel and 25 other commands.
  • Random bots added in Quake III: Team Arena team gametypes using bot_minplayers or addbot random use Team Arena’s characters instead of Quake 3’s bots.
  • Bug fixes and performance improvements for IQM models.

See https://clover.moe/spearmint for downloads.

Spearmint 1.0.0 is not backward compatible with previous network protocol or VMs. If you extract this over a previous version, you need to manually remove spearmint-patch-0.x.pk3 files from the baseq3 and missionpack directories. (New files are named to spearmint-baseq3-1.0.0.pk3 and spearmint-missionpack-1.0.0.pk3.)

The version 1.0.0 is major, minor, patch. 0.6 and earlier should of had a “.0” at the end for patch version.

Known issues; On Windows the keypad 5 key without numlock doesn’t work and macOS 10.6+ only execute mouse wheel control binds if wheel is turned multiple notches (SDL 2.0.8 bugs).

macOS 10.5 / PPC lost support for gamecontrollerdb.txt (requires SDL 2.0.2). macOS PPC build was downgraded from SDL 2.0.3 to SDL 2.0.1 (the last SDL version to officially support macOS PPC). macOS 10.5 now runs the PPC build via Rosette (SDL 2.0.5 dropped macOS 10.5 support).


This release marks the end of 10 years of Spearmint development. There may be updates to fix issues that are reported (and the macOS mouse wheel) but I’m not planning to continue general devil-op-mint.


Lines beginning with “ioq3:” were also fixed in ioquake3.

CGame VM

  • Move map restart FIGHT message higher in non-splitscreen to match the original Quake 3 behavior (reported by ZaRR).
  • Add command argument auto completion for callteamvote, callvote, follow, give, headmodel, model, team, team_headmodel, team_model, teamvote, tell, testgun, testmodel, and vote. Team Arena exclusive: vosay, vosay_team, votell, vsay, vsay_team, vtell, vtell_attacker, and vtell_target.
  • Increase tell_target and tell_attacker commands’ message size from 120 to 150 (max for regular tell command)
  • Use fractional digits in cg_fov and cg_weaponFov cvars.
  • Fix dedicated console with third party transparent console background drawing over the previous frame (ghosting looking effect).
  • Quake 3: Replace control menu’s reset cvar to get it’s default hack with new system call trap_Cvar_DefaultVariableStringBuffer().
  • Quake 3: Make single player tiers “X arenas ignored to make count divisible by 4” console message be developer only.
  • Team Arena: Add “Random” bot to start server and in-game menus.
  • Team Arena: Fix clearing control bind in menu only affecting the displayed menu and not the actually binds.
  • Team Arena: Make scrolling in-game spectator list be smoother (broke in Spearmint 0.5).
  • Team Arena: Fix unable to type in console when missing menu data files.
  • ioq3: Make testgun command without argument disable test gun model.
  • ioq3: Fix predicting player origin on rotating platforms in third party maps (reported by kungfooman).

Game VM

  • Add capturelimit and g_instagib to callvote command.
  • Add sanity checks for callvote argument, including checking if map exists before starting vote.
  • Add command argument auto completion for addbot, forceTeam, teleport, and (dedicated server) tell.
  • Print log messages for callvote and votes cast, also printed to server console!
  • Fix occasional bot “max chatstate console messages reached” error in team gametypes with 64 players on map restart (reported by Tobias Kuehnhammer).
  • Remove -debug from end of gameversion cvar value in release build of game.qvm.
  • Team Arena: Make bot_minplayers cvar and addbot random command add Team Arena characters in team gametypes.
  • ioq3: Fix dedicated camera followers (team follow1/team follow2) displaying “Connection Interrupted” when there are no players to follow.
  • ioq3: Improve logic for finding Team Arena obelisk entities (reported by Thomas Köppe).


  • Separate left and right ALT, CTRL, SHIFT, WINDOWS, and COMMAND keys (with support for the original “bind SHIFT +speed” to affect both LEFTSHIFT and RIGHTSHIFT keys). Though this does break moving Spearmint binds config to vanilla Quake 3 or ioquake3.
  • Add mouse wheel left and right keys (MWHEELLEFT, MWHEELRIGHT).
  • Add 161 more ‘world keys’ to cover (I think) all USB keyboard scan codes of unknown keys (WORLD95 to WORLD255).
  • Add trap_Cvar_DefaultVariableStringBuffer() to allow Game/CGame VMs to get a cvar’s default value.
  • Fix auto completing filenames more than 2 directories deep in console (required for testmodel and testgun commands).
  • Remove botlib line from meminfo command output. It was always 0 due to moving botlib into Game VM.
  • ioq3: Add support for WASAPI audio API on Windows via SDL (by Ryan C. Gordon).
  • ioq3: Add audio capture using SDL (by Ryan C. Gordon).
  • ioq3: Update from SDL 2.0.4 to 2.0.8 (by MAN-AT-ARMS and excessive work to keep macOS 10.5 support by zturtleman).
  • ioq3: Make s_useOpenAL cvar say it requires restart when changed.
  • ioq3: Fix parsing OpenGL2 renderer’s specularScale in third party shaders.
  • ioq3: Readd r_deluxeSpecular cvar to OpenGL2 renderer (by SmileTheory).
  • ioq3: Fix client not downloading the the latest cgame pk3.
  • ioq3: Some minor improvements to the opengl renderers.
  • ioq3: Fix IQM models with multiple root joints.
  • ioq3: Fix IQM models that have a base skeleton with rotated joints.
  • ioq3: Fix culling unanimated IQM models not using model bounds.
  • ioq3: Improve IQM rendering performance.






2 responses to “Spearmint 1.0.0 released”

  1. ZaRR Avatar

    Thanks so much, ZTM!!

  2. GuyNamedErick Avatar

    Thank you for your 10 years on Quake 3 programming, you done a lot to Ioquake 3 and your work on Spearmint is admirable. Best of luck to your future endeavors!