All games

Neverball

Gold · 87 0.1 h played, 0 crashes

Tilt the floor to roll a ball through 3D levels, collecting coins before the time runs out.

Genre
puzzle arcade
Theme
family
Players
single player
Input
supports gamepad
View
3D
Keywords
physics ball levels

Played sessions

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

Builds: Walnut 0.1, neverball 1.6.0+git20180603-3+ps3.721

The platform builds under it (3)
Linux kernel6.12.111+ps3.747 Walnut's build
Mesa26.2.4-1+ps3.721 Walnut's build
ps3rsx0.735+k6.12.111+ps3.747 Walnut's build
DateLauncherRulesPlayEndedPicture
2026-10-24 Neverball 1.04 minquit ok 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 rateSmoothnessSoundPictureStabilityDisplayLoad Play
Walnut 0.1
neverball 1.6.0+git20180603-3
2026-10-24 Gold · 87 1.0 88649710090-100 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: Neverball: its shipped replay gui/demo1.nbr, real-time paced.

The recipe's full description

Neverball (1.6 snapshot of 2018): its shipped replay gui/demo1.nbr, real-time paced. Our package (gamedb/games/neverball/packages/neverball/patches) prints one line with NEVERBALL_BENCH=1 when the replay ends, from the first replay frame (frames, seconds, fps, longest frame) and quits, so the run is exactly the replay; DURATION is a safety cap. Config ~/.neverball/ neverballrc: fullscreen 1920x1080, vsync off, the fps counter on. It generates mipmaps on the GPU (GL_GENERATE_MIPMAP) and uses GL_LUMINANCE_ALPHA textures: both broken on nv30 until the Mesa fixes (the game's technical.md); variant nomip turns mipmaps off. Steady state: passes. The replay is ~20 s; our patch 0002 (st_demo.c bench_end) with NEVERBALL_BENCH_LOOPS=N replays it N times (demo_replay_stop, progress_replay on a copy of curr_demo(), goto_state(&st_demo_play)), one line per pass, and quits after the Nth. 12 passes cover 60 s of warm-up + 120 s; the client stops the run once enough is measured. fps= is the first pass's.

The recipe today runs it at the game's own resolution, with NEVERBALL_BENCH=1 NEVERBALL_BENCH_LOOPS=20. Older batches ran the recipe as it was then: their titles and observations say what changed (a new game build, a driver change).

7 variants of the recipe
base stands for the gamethe recipe as it is, without a variant
nomip-
gloffour neverball (gamedb/games/neverball/packages/neverball/patches/0003): fewer GL calls and draws a frame, each change behind an environment switch, base has them all on. gui/demo1.nbr on llvmpipe at GL 2.1: 2154 -> 844 calls, 137 -> 74 draws a frame (levels at their intro view: greed 6289 -> 1915, mover 8205 -> 2463 calls). gloff is NEVERBALL_GL=0 (the game as Debian draws it), a no* variant is base with one change off.
nomesh-
noitems-
noback-
nostate-

Conditions: what a variant adds to the recipe (its environment switches) and what ran alongside (the stall recorder, a profiler). Rows marked invalid or not comparable say why. The other numbers, the build and the run length are under "All numbers" in each batch.

What the run length means

"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.

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
Neverball base 583466.52.041.3390050 right, 118 underruns

Real-time audio as shipped: ps3-desktop 0.1013 (limits.d rtprio 10 + ps3-rt-audio, RTAUDIO=1) against none (RTPRIO=0) on dsda-doom software (owncfg), Extreme Tux Racer, X-Moto and Neverball (kernel .874)

2026-10-28 · batch 2026-10-28-rt-audio-shipped · 23 runs in the batch (all games)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base rtaudio 82.757.30.0
base real-time priority 0 82.758.40
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 82.5 cpu 99.5 seconds underruns 53.0 underruns ram_free 56.8 MiB vram 34.2 MiB longest_ms 193.4 ms stall_play_s 0.0 seconds longest_play_ms 28.6 ms no build recorded
the game's resolution, warm-up + 120 s
base fps whole run 82.6 cpu 94.8 seconds underruns 106 underruns ram_free 54.2 MiB vram 34.2 MiB longest_ms 214.4 ms stall_play_s 0.0 seconds longest_play_ms 28.3 ms no build recorded
the game's resolution, warm-up + 120 s

Observations: same boot (2026-10-28 15:38-17:18Z), 25 runs in three rounds, games interleaved, arm order alternating per game and round; 2 Neverball RTAUDIO runs interfered by the agent's own SSH status checks (left out: Neverball RTAUDIO has 2 runs). Every run fullscreen at 1920x1080 (geom=) and in gameplay at its 40 s screenshot. ps3-rt-audio set SCHED_RR 1 on SDLAudioP19 (dsda-doom, X-Moto, Neverball) and on ETR's unnamed miniaudio thread in every RTAUDIO run, from the harness's watch as game mode runs it. Audible dropouts a run (about 200 s), median: dsda-doom 29 to 2 (audible time 0.8-1.2 s to 50-113 ms), ETR 26 to 2 (0.65-0.92 s to 58-124 ms), Neverball 3 to 0, X-Moto 0 to 0 (logged underruns 78 to 11). Steady fps unchanged within 0.4% (dsda-doom 39.75/39.8, X-Moto 161.7/161.0, Neverball 82.73/82.72); 1% lows a little lower with it in the light games (X-Moto 113.4 to 109.4, Neverball 57.9 to 56.6, dsda-doom 20.6 to 19.0, ranges touching) and higher in ETR (HUD 1% low 19.8 to 29.2, steady 56 to 59; the previous batch had no such gap, 29.9 against 28.6). docs/SPU-AUDIO.md "Real-time mixer"

Luanti ps3.364 batching, Neverball ps3.370 batching, Sauerbraten libspeq 0.381 skinning (spawn)

2026-10-17 · batch 2026-10-17-luanti-neverball-batching · 10 runs in the batch (all games)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is 66.541.351
gloff NEVERBALL_GL=0 62.448.139.5
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 76.5 cpu 65.5 seconds underruns 118 underruns ram_free 58.5 MiB vram 34.2 MiB longest_ms 3893.0 ms no build recorded
the game's resolution, warm-up + 120 s
gloff fps whole run 71.9 cpu 80.3 seconds underruns 115.0 underruns ram_free 56.9 MiB vram 34.3 MiB longest_ms 3674.5 ms no build recorded
the game's resolution, warm-up + 120 s

Observations: same boot 2026-10-18 01:40-02:20 local. Luanti base vs allbatchoff x2: steady 45.0/46.0, stall_s 6.25/9.1, longest 1.7/3.4 s, underruns 0, webcam right. Neverball base vs gloff: smooth 78.7/79.1, cpu 65/80 s, stalls similar (one base run ended before the window: 12 loops too few, now 20). Sauerbraten spawn+gun x1: steady spuskin 23.6 (21 stalls, 4.3 s), ppeskin 28.1 (0 stalls), offskin 23.0 (0 stalls): libspeq's PPE path is the best; the SPU path adds hitches INTERFERENCE (retro-scan 2026-10-18, docs/STALLS.md): allbatchoff run 20261017T224350Z had 3 digs (mouse button in the game) in the warm-up; the window had no logged action, but its luanti-allbatchoff cell includes that run.

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)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 75.9 cpu 11.5 seconds underruns 19.0 underruns ram_free 62.0 MiB vram 34.3 MiB Mesa ps3.262
the game's resolution, whole run

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)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 71.5 cpu 10.7 seconds underruns 12 underruns ram_free 64.6 MiB vram 34.3 MiB Mesa ps3.262, ps3rsx 0.249
the game's resolution, whole run

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)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 78.2 cpu 12.7 seconds underruns 16 underruns ram_free 71.8 MiB vram 34.3 MiB Mesa ps3.246, ps3rsx 0.249
the game's resolution, whole run

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.

ps3rsx 0.249 first boot (Mesa ps3.246; SDL3 ps3.254)

2026-10-17 · batch 2026-10-17-ps3rsx-249-first-boot · 9 runs in the batch (all games)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 73.3 cpu 12.2 seconds underruns 25.5 underruns ram_free 64.3 MiB vram 34.3 MiB Mesa ps3.246, ps3rsx 0.249
the game's resolution, whole run

Observations: 2026-10-17 07:59-08:24Z, after the reboot into ps3rsx 0.249 (9e2a3b9, 8e99b76). Per 1c1b09a the GL tests pass and VT switches work with a GL client (those runs are not in build/bench). Neverball (our +ps3.257 with NEVERBALL_BENCH, about 23 s) runs without the wedge: 76.4 and 70.2 fps by its own count, longest frames 320 and 378 ms, 15 and 36 underruns. OpenTTD with libsdl3 ps3.254 (native BGRA upload) goes from ~2 to 8 fps (HUD; 9.5 across the two runs) and 12 fps with the 8bpp blitter (accel8); its own software drawing is the limit. Luanti and Sauerbraten run for the first time, both memory-bound: Luanti load 37 s, HUD median 67 (p10 23, stalls to 0 while chunks load), 31 MB MemAvailable at the lowest; Sauerbraten (CPU skinning) was OOM-killed in the first run (dmesg oom-killer, MemAvailable down to 10 MB) and reached a HUD median of 15 in the second (236 underruns). Smoke runs, single or paired.

Mesa ps3.225 (0014 mip readback): tests and Neverball

2026-10-16 · batch 2026-10-16-mesa-225 · 7 runs in the batch (all games)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base fps whole run 70 cpu 31.8 seconds underruns 50 underruns ram_free 75.6 MiB vram 35.4 MiB Mesa ps3.225
the game's resolution, whole run

Observations: 22:39-22:40Z, Mesa ps3.225: gl-texfmt, gl-genmip and gl-mipread (RGBA8 and LA8 32x32 get, gen, and the 70-case 'all') all PASS; the 2x2 and 1x1 levels are now read by the CPU (the log says 'cpu (0x105 on a Mesa without 0014)'). Then Neverball (60 s, HUD median 70, p10 55, 50 underruns) ran without the wedge. Proves Mesa 0014 (d6b1d50). ps3rsx 0.249's own refusal of unaligned texture offsets (8e99b76) was still untested.

Mesa ps3.223 Neverball wedges the RSX (graph exception 0x105)

2026-10-16 · batch 2026-10-16-mesa-223-neverball-wedge · 1 run in the batch (all games)

VariantConditions Steady fps
in the window
1% low
fps
Stalls
frames over 100 ms
base the recipe as it is ---
All numbers and setup of this batch
VariantNumbersSetup
base cpu 63.7 seconds underruns 5 underruns ram_free 71.7 MiB vram 25.0 MiB Mesa ps3.223
the game's resolution, whole run

Observations: 21:54Z, first Neverball smoke on Mesa ps3.223: 'nouveau: kernel rejected pushbuf: Input/output error', dmesg 'ps3rsx: graph exception; last submit from channel 1, neverball' and a ps3fb graphics exception. The RSX was wedged (only a console reboot clears it) and the run was killed at the 60 s cap (rc 137). The cause, found next: nv30's 3D blit sampled the 2x2 level of a 32x32 L8A8 texture at +0xaa0, not 128-byte aligned, in Mesa's software mipmap generation (GL_GENERATE_MIPMAP for formats nv30 cannot render). Fixed by Mesa 0014 (d6b1d50, ps3.225); ps3rsx 0.249 also refuses such offsets (8e99b76).