A labor of love by Hunter Davis. This is the second ledger: 126 scene/tide variants, timed headlessly in DuckStation against the captured target budget. The scene ledger tracks visual signoff. This page tracks timing. Different bars, different failure modes.

If you paid for this, you were cheated. Open source and free.

At a glance

Target Speed distribution in the current matrix: 126 (100.0%) ≥ 99% 0 (0.0%) ≥ 95% 0 (0.0%) ≥ 90% 0 (0.0%) < 90% out of 126 timing-bearing rows.

Current battle-card rollup as of :

Metric Value
Scenes visually validated 63 / 63 (100%)
Scene/tide variants routed through headless perf 126 / 126 (100%)
Timing-bearing variants 126 / 126 (100%)
Pending variants 0 / 126 (0%)
Blocked variants 0 / 126 (0%)
Timing-bearing average over target +0.2% (0.1571% exact, public-capped)
Timing-bearing average target speed 99.8% (99.8440% exact, public-capped)
FISHING 1 canary high 1068 / 1073 VBlanks, low 1067 / 1074 VBlanks, both public-capped at 100.0% target speed

Reading the table

  • Scene: clicking the scene slug in any row updates the URL with #perf-{slug}-{tide} so you can copy a stable link to that exact row. Same anchors are linked from each scene page’s “Performance battle card” line.
  • Over Target: how far loop_vb is above the captured target timing. Public site values are capped at 0.0% for faster-than-target rows so fast scenes do not create negative debt. Lower is better.
  • Target Speed: public display of target_vb / loop_vb, capped at 100% so no row reports faster than intended playback. The raw signed ratio remains in the CSV for optimization analysis.
  • VBlanks: loop_vb/target_vb for the measured active loop.
  • Blocking: visible CD/blocking VBlanks.
  • Prefetch: prefetch overrun VBlanks.
  • Due: due-frame misses.
  • Latest Run: ISO timestamp derived from the headless summary path (scratch/ps1-perf-iterate/YYYYMMDD-HHMMSS); - means no current matrix run has been recorded for that variant.
  • Stats Version: performance/layout version for that row. Older rows retain their per-row version stamps; the complete baseline remains in the CSV for anyone chasing archaeology.

126-variant battle card

Target Speed colour key: ≥ 99% (at target) ≥ 95% (close) ≥ 90% (slipping) < 90% (well below) Rows without timing data show "—" and stay uncolored.

Headless performance matrix at v0.9.7-ps1: one row per scene/tide variant, with last run, stats version, over target percentage, target speed percentage, VBlanks taken, blocking VBlanks, prefetch hits, due-misses, and notes. Click any column header to sort ascending; click again for descending. Target Speed cells are color-coded: ≥99% green, ≥95% yellow, ≥90% orange, <90% red.
Scene Tide Status Latest Run Stats Version Over Target Target Speed VBlanks Blocking Prefetch Due Notes
activity1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2754/2764 1 1 0
activity1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2754/2764 1 1 0
activity4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1065/1065 5 5 0
activity4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1064/1069 0 0 0
activity5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1736/1747 4 4 0
activity5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1735/1749 2 2 0
activity6 high measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 912/909 2 2 0
activity6 low measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 912/909 2 2 0
activity7 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 595/596 0 0 0
activity7 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 594/596 0 0 0
activity8 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 898/905 0 0 0
activity8 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 898/905 0 0 0
activity9 high measured 2026-05-16T11:29:21 git:2b617cbc 0.8% 99.2% 2079/2062 22 13 1
activity9 low measured 2026-05-16T11:29:21 git:2b617cbc 0.8% 99.2% 2077/2061 19 14 1
activity10 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1257/1260 7 1 1
activity10 low measured 2026-05-16T11:29:21 git:2b617cbc 0.2% 99.8% 1260/1257 19 9 2
activity11 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1715/1722 3 3 0
activity11 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1717/1722 4 4 0
activity12 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1407/1415 0 0 0
activity12 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1406/1411 7 4 1
building1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.8% 99.2% 788/782 17 15 1
building1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.4% 99.6% 785/782 17 11 1
building2 high measured 2026-05-23T14:38:29 floor-lift-multiscene 0.2% 99.8% 1319/1316 34 12 4
building2 low measured 2026-05-19T01:09:53 git:7680edc56a+visitor3-high-clean64 0.7% 99.3% 1327/1318 47 0 9
building3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 5460/5465 0 0 0
building3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 5460/5464 0 0 0
building4 high measured 2026-05-23T14:38:29 floor-lift-multiscene 0.6% 99.4% 2832/2816 34 27 1
building4 low measured 2026-05-23T14:38:29 floor-lift-multiscene 0.4% 99.6% 2833/2822 29 23 1
building5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 3344/3347 7 7 0
building5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 3343/3348 5 5 0
building6 high measured 2026-05-16T11:29:21 git:2b617cbc 0.9% 99.2% 2475/2454 26 21 1
building6 low measured 2026-05-16T11:29:21 git:2b617cbc 0.6% 99.4% 2472/2457 22 17 1
building7 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 3130/3133 7 7 0
building7 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 3128/3133 5 5 0
fishing1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1068/1073 4 4 0
fishing1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1067/1074 2 2 0
fishing2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1760/1764 4 4 0
fishing2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1758/1765 2 2 0
fishing3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.9% 99.1% 1964/1947 30 25 1
fishing3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.1% 99.8% 1957/1954 11 11 0
fishing4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 836/842 3 3 0
fishing4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 834/843 0 0 0
fishing5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 885/889 1 1 0
fishing5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 885/890 0 0 0
fishing6 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 744/752 1 1 0
fishing6 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 744/752 1 1 0
fishing7 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 715/725 0 0 0
fishing7 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 715/725 0 0 0
fishing8 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1243/1253 0 0 0
fishing8 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1243/1253 0 0 0
johnny1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1945/1946 1 1 0
johnny1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1945/1946 1 1 0
johnny2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1741/1750 0 0 0
johnny2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1743/1751 0 0 0
johnny3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1160/1163 7 3 1
johnny3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1157/1166 0 0 0
johnny4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1204/1214 0 0 0
johnny4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1204/1214 0 0 0
johnny5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 810/820 0 0 0
johnny5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 810/820 0 0 0
johnny6 high measured 2026-05-23T14:26:57 johnny6-double-preload 0.6% 99.4% 2817/2801 25 25 0
johnny6 low measured 2026-05-23T14:26:57 johnny6-double-preload 0.6% 99.4% 2818/2802 25 25 0
mary1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.7% 99.3% 4863/4829 45 35 2
mary1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 4855/4840 24 17 1
mary2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2241/2247 3 3 0
mary2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2241/2247 3 3 0
mary3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 2302/2294 54 0 13
mary3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.2% 99.8% 2300/2295 53 0 13
mary4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 2026/2019 8 5 1
mary4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.3% 99.7% 2026/2019 8 5 1
mary5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.1% 99.9% 1584/1582 7 7 0
mary5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.1% 99.9% 1585/1583 7 7 0
miscgag1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 953/961 0 0 0
miscgag1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 953/960 1 1 0
miscgag2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1351/1355 0 0 0
miscgag2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1351/1355 0 0 0
stand1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 195/202 0 0 0
stand1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 195/202 0 0 0
stand2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 481/491 0 0 0
stand2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 480/490 0 0 0
stand3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 548/558 0 0 0
stand3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 547/557 0 0 0
stand4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1202/1220 0 0 0
stand4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1203/1220 0 0 0
stand5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1443/1460 0 0 0
stand5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1443/1460 0 0 0
stand6 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1346/1364 0 0 0
stand6 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1347/1364 0 0 0
stand7 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 520/538 0 0 0
stand7 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 521/538 0 0 0
stand8 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 483/499 2 2 0
stand8 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 483/500 0 0 0
stand9 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 520/538 0 0 0
stand9 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 520/538 0 0 0
stand10 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 528/538 0 0 0
stand10 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 528/538 0 0 0
stand11 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 528/538 0 0 0
stand11 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 528/538 0 0 0
stand12 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1451/1458 1 1 0
stand12 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1450/1460 0 0 0
stand15 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 444/452 0 0 0
stand15 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 444/452 0 0 0
stand16 high measured 2026-05-16T11:29:21 git:2b617cbc 0.2% 99.8% 473/472 0 0 0
stand16 low measured 2026-05-16T11:29:21 git:2b617cbc 0.2% 99.8% 473/472 0 0 0
suzy1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.6% 99.4% 5767/5735 28 28 0
suzy1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.5% 99.5% 5766/5735 26 26 0
suzy2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.7% 99.3% 2652/2633 17 17 0
suzy2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.7% 99.3% 2652/2633 17 17 0
visitor1 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 671/677 0 0 0
visitor1 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 671/677 0 0 0
visitor3 high measured 2026-05-23T13:25:33 v3high-double-preload-phase2 0.7% 99.3% 1053/1046 33 0 2
visitor3 low measured 2026-05-23T13:11:54 v3low-dp-v3h-phase4-layout-shift 0.8% 99.2% 1052/1044 40 1 6
visitor4 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 425/428 0 0 0
visitor4 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 424/428 0 0 0
visitor5 high measured 2026-05-16T11:29:21 git:2b617cbc 0.5% 99.5% 1101/1096 5 5 0
visitor5 low measured 2026-05-16T11:29:21 git:2b617cbc 0.6% 99.5% 1102/1096 6 6 0
visitor6 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2042/2047 1 1 0
visitor6 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 2042/2047 1 1 0
visitor7 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1620/1625 0 0 0
visitor7 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 1619/1625 0 0 0
walkstuf1 high measured 2026-05-23T13:11:54 v3low-dp-v3h-phase4-layout-shift 1.0% 99.0% 1458/1444 36 6 6
walkstuf1 low measured 2026-05-23T14:38:29 floor-lift-multiscene 0.3% 99.7% 1452/1448 33 3 6
walkstuf2 high measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 451/461 0 0 0
walkstuf2 low measured 2026-05-16T11:29:21 git:2b617cbc 0.0% 100.0% 451/461 0 0 0
walkstuf3 high measured 2026-05-16T11:29:21 git:2b617cbc 0.7% 99.3% 2307/2290 43 18 6
walkstuf3 low measured 2026-05-16T11:29:21 git:2b617cbc 0.7% 99.3% 2310/2294 26 18 2

See also

  • /scenes/ — the visual-signoff ledger this card lives next to. Different bar, different cadence, different failure modes.
  • /docs/performance/ — reference manual: what each column means, how loop_vb and target_vb are measured, the column-by-column glossary.
  • /lab/from-87-to-99-5/ — retrospective on which experiments moved the matrix from the compact baseline (+17.4% over target) to its current public-capped 99.8% target speed.
  • /lab/v081-mary4-freeze/ — the v0.8.1 stability follow-on that kept this matrix’s mean untouched while fixing a clean-rect pressure freeze the per-commit matrix never reached. Soak loop story.
  • /docs/walks/ — reference manual for the walk subsystem; “Evolution by release” consolidates the v0.8.0 clean-rect retry path and v0.8.1 wave-band/split-rect pressure accounting that the v0.8.1 story above generalized to fourteen random-position scenes.
  • Glossary: experiment log — the long-form decision record at docs/ps1/performance-experiment-log.md where every accepted and rejected probe got written down. Read before re-trying anything that looks promising.
  • docs/ps1/performance-scene-matrix.csv — the durable numeric source the table on this page is rendered from.