From 25b0b1b5324a51b120c61501abb95ac99e2dc5ab Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:01:52 -0400 Subject: [PATCH] docs: withdraw the target_fps claim for sports_scroll; fix the Vegas speed formula - SPORTS_UNIFICATION.md still presented honouring global target_fps as sports_scroll's added behaviour and its one user-visible gain; note that it was withdrawn because it had become a speed multiplier. - ADVANCED_FEATURES.md gave Vegas scrolling as (scroll_speed / target_fps) * elapsed; the real rule is scroll_speed px/s by elapsed time, through a 0.1-5 px per scroll_delay clamp when frame_based_scrolling is on. Co-Authored-By: Claude Opus 5 --- docs/ADVANCED_FEATURES.md | 10 +++++++--- docs/SPORTS_UNIFICATION.md | 13 +++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/ADVANCED_FEATURES.md b/docs/ADVANCED_FEATURES.md index d620fef7..abaa17af 100644 --- a/docs/ADVANCED_FEATURES.md +++ b/docs/ADVANCED_FEATURES.md @@ -433,10 +433,14 @@ Vegas mode consists of four core components working together to provide smooth 1 - **Frame Rate Control:** Precise timing to maintain 125 FPS - **Pre-rendered Content:** Plugins pre-render during update() -**Scroll Speed Calculation:** +**Scroll Speed Calculation:** motion is by elapsed time; `target_fps` paces +the render loop, not the speed. ```python -pixels_per_frame = (scroll_speed / target_fps) -scroll_position += pixels_per_frame * elapsed_time +# frame_based_scrolling: false +scroll_position += scroll_speed * elapsed_time # scroll_speed in px/s +# frame_based_scrolling: true (the default) -- not stepping, just a clamp +applied = clamp(scroll_speed * scroll_delay, 0.1, 5) / scroll_delay +scroll_position += applied * elapsed_time ``` #### Component Interactions diff --git a/docs/SPORTS_UNIFICATION.md b/docs/SPORTS_UNIFICATION.md index 89592f80..c752337f 100644 --- a/docs/SPORTS_UNIFICATION.md +++ b/docs/SPORTS_UNIFICATION.md @@ -218,6 +218,14 @@ The one behavior the upstreamed version adds is native Part A threaded it through each copy by hand, and this makes that threading legacy compatibility rather than the mechanism. +> **Superseded.** Once presentation became frame-locked (#545) the helper +> steps a fixed whole-pixel amount per presented frame and the panel presents +> at its own refresh, so honouring `target_fps` only turned it into a speed +> multiplier (60 doubled a scoreboard's speed, 200 halved it). `sports_scroll` +> no longer reads it: the crisp-speed ladder uses the panel refresh +> (`display_manager.refresh_hz`), and speed comes from +> `scroll_settings.scroll_speed` alone. See `docs/SCROLL_PERFORMANCE.md`. + ## Phases B0–B3 are merged and shipping in core 3.2.0. Everything that remains is @@ -464,8 +472,9 @@ After adoption plus the frozen legacy copies it was 10,610; removing the dead inline duplication (plugins #252) brought it to roughly 8,620. B6 would take it to about 3,300 including the shared core module — some 2,400 fewer than before this project started. **Until B6 runs, the adoption is net negative on disk**, -and its one delivered user-visible gain is that adopted plugins honour the -global `target_fps` instead of hardcoding ~100 FPS. +and its one delivered user-visible gain was that adopted plugins honoured the +global `target_fps` instead of hardcoding ~100 FPS (since withdrawn: see the +note under the B3 design above). ### Decision: stop adopting further modules until B6 closes