All games

QuakeSpasm

Platinum · 93 0.1 h played, 0 crashes

A modern source port of id Software's Quake, with the original campaign and mods.

needs your own data made for keyboard and mouse controller: partial shooter fps classic 3d single player mods

Played sessions

Testing is done with Walnut's rating tool (walnut-rate, planned): how ratings are made and submitted.

DateVersionLauncherKindRulesPlayEndedPictureBuilds
2026-10-26Walnut 0.1
quakespasm 0.96.3+dfsg-2
QuakeSpasm (GLSL) session2.28 minquit ok quakespasm 0.96.3+dfsg-2
Linux kernel 6.12.111+ps3.786
Mesa 26.2.4-1+ps3.827
ps3rsx 0.788+k6.12.111+ps3.786
Details

Download all sessions as CSV (one row per session, the aspects as columns)

Rating history

The rating on each version it was tested on, newest first: each row is rated from that version's sessions alone, under the newest rules those sessions have the data for.

VersionTestedMedalRules Frame rateSmoothnessSoundPictureStabilityControlsDisplayFeaturesLoad Play
Walnut 0.1
quakespasm 0.96.3+dfsg-2
2026-10-26 Platinum · 93 2.2 95781001009010085100100 0.1 h
1 test

Scripted benchmarks

Not rated: tests of driver and game changes. A script plays the same scene on the PS3 again and again (the desktop stopped, vsync off) to compare two builds of the game or of the graphics driver. The numbers say which build is faster; they never feed the medal.

How the script plays it: QuakeSpasm 0.96.3 (Debian) with the Quake shareware data (quake-shareware from make game-data: /usr/share/games/quake/id1/pak0.pak): timedemo of the shareware's demo1, fullscreen 1920x1080. -nopackedpixels: 0.96.3's packed-pixels lightmaps have wrong colours on big-endian (quakespasm issue #114; nv30 has no 10-bit format anyway). It doesn't quit after a timedemo: stopped at the result line. Base keeps GLSL on (alias models; gamma stays 1.0, so the full-screen gamma pass doesn't run); noglsl is GL 1.x only, glslgamma turns the gamma pass on (it runs off 1.0 only). +timedemo on the command line doesn't work: the shareware's quake.rc runs "startdemos demo1 demo2 demo3" after the command line's commands and the attract loop replaces the timedemo. So a quake.rc of ours in the user's id1 (~/.quakespasm/id1, searched before the system's pak0.pak) runs the timedemo instead. (A -game directory would do it too, but the shareware refuses those.) Steady state: the timedemo repeated in one session (PASSES=1; client.sh counts the passes that start 54 s or more after the first, and stops the game once they cover ~120 s: ~5 warm-up passes of ~13 s, then ~9 measured). QuakeSpasm has no hook at a demo's end (Host_EndGame skips the attract loop in a timedemo and CL_FinishTimeDemo clears cls.timedemo), so quake.rc loops by frame count: `bench` starts the timedemo, waits 1100 host frames (a wait is one frame; demo1's timedemo is 969 frames, about 2 s idle at the console after it) and starts the next. A timedemo started before the last one ended would print a "-1 frames" line: FPS_RE wants a line starting with a count. fps= stays the first pass's (the run as before); steady is the median of the measured passes.

3 variants of the recipe
base stands for the gamethe recipe as it is, without a variant
noglsl-
glslgamma-

Conditions: what a variant adds to the recipe (its environment switches) and what ran alongside (the stall recorder, a profiler). Length: "warm-up + 120 s" is a steady-state run, which leaves out a 60 s warm-up and measures 120 s or more; "whole run" counted everything from the start, the way runs before 2026-10-17 did. Rows marked invalid or not comparable say why.

Suite summary

2026-10-20 · batch suite-summary-2026-10

Purpose: The 13 benchmarked games (15 rows) with their known numbers, the rules-1 calibration of the rating formula (docs/GAMEDB.md "Calibration", tools/gamedb/score.py). Each value names its source: a batch's cell, or the suite table of docs/games/README.md where the number is a reading or a range (no single cell holds it). Stutter is the stall seconds over the 2-minute window; load unmeasured, stability assumed clean, picture and display right.

Row ram_free
MiB
vram
MiB
fps_steady
frames a second
stall_play_s
seconds
low1_play
frames a second
longest_play_ms
ms
sound_faults_per_min
faults a minute
Picture, sound
QuakeSpasm base 444991.02.548.63930 right, right

Mesa ps3.407 switches (QuakeSpasm LUT, ClassiCube fence pool), profiler checks (ps3-gpu-tools 0.412), all with WAKER kick

2026-10-18 · batch 2026-10-18-mesa-407-switches · 10 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
longest_ms
ms
stall_play_s
seconds
longest_play_ms
ms
base waker kick at 10 ms Mesa ps3.407 the game's warm-up + 120 s 89.791.048.610.0 107.05.044.248.7392.62.5392.6
base waker kick at 10 ms
switch translate_lut1
Mesa ps3.407 the game's warm-up + 120 s 89.690.947.010.5 102.517.036.547.6519.62.8519.6

Observations: same boot 2026-10-18 ~06:50-07:40 local. QuakeSpasm NV30_TRANSLATE_LUT=1: steady 91.0/90.8 vs 90.9/91.0 (no change), cpu 104/101 vs 108/106 s (~-3%). ClassiCube NV30_FENCE_BO_POOL=16: identical (48.4). dsda-doom profile ok, 40.3 steady, no stalls. OpenTTD title game, no survey dialog (webcam ok). Armagetron base INVALID: stuck at the first-start language menu (webcam), its 183 fps is the menu

Mesa ps3.262 repeats and Armagetron without 0020 (texinv)

2026-10-17 · batch 2026-10-17-mesa-262-repeats · 8 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
base the recipe as it is Mesa ps3.262 the game's whole run 78.5--- 11.81.051.447.6

Observations: 11:06-11:18Z, same boot as the ps3.262 suite. QuakeSpasm again 73.0 and 84.1 fps (66.3 in the suite: 66-84 on the same Mesa, so single QuakeSpasm runs spread widely); Neverball again 77.7 and 74.2 (71.5 in the suite). Armagetron (HUD): base 53 and 53, texinv (NV30_TEX_INVALIDATE_ALWAYS=1, Mesa 0020's invalidate before every draw back on) 52 and 52, so the 60 to 52 loss is not patch 0020 (c1b8e4c); the HUD figure is used for all Armagetron cells here. Two runs per variant.

Mesa ps3.262 + ps3rsx 0.249

2026-10-17 · batch 2026-10-17-mesa-262 · 12 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
base the recipe as it is Mesa ps3.262, ps3rsx 0.249 the game's whole run 66.3--- 12.2146.747.4

Observations: 2026-10-17 10:42-11:04Z, suite round after Mesa 0019-0025 (fewer words per draw: no relocations, texture cache invalidate only after texture changes, no duplicate VTXFMT writes, batched VP constants; bcd99d7, 5fe2290), one run per game. Against ps3.246: OpenArena tc1 44.2 to 54.4 (+23%), Yamagi 51.4 to 63.9 (+24%), X-Moto 39 to 47 (+21%), Extreme Tux Racer 46 to 53 (+15%), dsda-doom software 33 to 38 and now finishes (+15%), ClassiCube 47.6 to 50.1 (+5%), Neverball 78.2 to 71.5 (noise), QuakeSpasm 70.5 to 66.3 (repeated in the next row), Luanti 53 to 53. Armagetron drops from 60 to 51 (HUD). Sauerbraten reads 28 to 8 (HUD): it is memory-stalled (MemAvailable 13 MB, killed at the cap), so that is not a driver number and the cause is uncertain. No validator rejects. Single runs.

Mesa ps3.246 + ps3rsx 0.249

2026-10-17 · batch 2026-10-17-mesa-246-ps3rsx-249 · 12 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
base the recipe as it is Mesa ps3.246, ps3rsx 0.249 the game's whole run 70.5--- 13.0140.747.6

Observations: 2026-10-17 08:32-08:54Z, first suite round after the reboot, one run per game. fps: Armagetron 60 (HUD), ClassiCube 47.6, dsda-doom software 33 (HUD, demo unfinished), Extreme Tux Racer 46 (HUD), Luanti 53 (HUD), Neverball 78.2, OpenArena tc1 44.2 (longest frame 2.1 s), QuakeSpasm 70.5, Sauerbraten CPU skinning 28 (HUD), X-Moto 39 (HUD), Yamagi Quake II 51.4. Pictures right and sound right for these games except dsda-doom (1161 underruns, MIDI music), Sauerbraten (176) and OpenTTD (1429, choppy). OpenTTD base ran 55.5 s of CPU with no frame rate (plain X11 path). Single runs, so differences of a few fps are within the run-to-run spread.

Group 2 QuakeSpasm timedemo through our quake.rc (Mesa ps3.225)

2026-10-16 · batch 2026-10-16-quakespasm-timedemo · 3 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
base the recipe as it is Mesa ps3.225 the game's whole run 64.8--- 12.5-53.147.7
glslgamma the recipe as it is Mesa ps3.225 the game's whole run 70.3--- 12.4454.647.6
noglsl the recipe as it is Mesa ps3.225 the game's whole run 59.2--- 17.73661.044.1

Observations: 23:14-23:17Z, QuakeSpasm timedemo demo1 at 1920x1080 with -nopackedpixels: noglsl 59.2 fps (969 frames in 16.4 s), GLSL 64.8, GLSL with the gamma pass (gamma 0.9) 70.3; colours right, 12-18 s of CPU in 23-31 s. Single runs (08e914e); in the later suite 66-84 fps.

Group 2 QuakeSpasm first smokes (Mesa ps3.225)

2026-10-16 · batch 2026-10-16-quakespasm-smokes · 2 runs in the batch (all games)

VariantConditionsBuildResolutionLength fps
whole run
Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
cpu
seconds
underruns
underruns
ram_free
MiB
vram
MiB
noglsl the recipe as it is Mesa ps3.225 the game's whole run 66--- 4.57968.246.0

Observations: 23:07-23:12Z, QuakeSpasm 0.96.3 with the shareware data. The first launch ran (HUD median 66) but the attract loop that the shareware quake.rc starts after +timedemo kept it from ever printing the result, so it was killed at 243 s; the second launch with -game bench was refused ('You must have the registered version to use modified games', 4 s of CPU). Both led to a quake.rc of ours in the user's id1 directory.