Skip to content

StickTime 1.11.0: Detail High/Low, quicker drawing, camera tilt to 90 degrees - #6

Merged
juricabi merged 5 commits into
mainfrom
perf-next
Oct 26, 2026
Merged

juricabi merged 5 commits into
mainfrom
perf-next

Conversation

@juricabi

Copy link
Copy Markdown
Owner

Summary

1.11.0
├── Detail (color, Settings → Detail, High default)
│     Low: every other fine grid line, far hoops/gates simpler sooner (arches keep 35 m),
│          shorter horizon fade, no lit side on trees/bushes, no mountain rows under the haze
├── Quicker drawing, second output-identical pass (all editions)
│     + review fixes: exact on StickTime Pi's doubled render, minimap guard for odd custom tracks
├── Camera tilt 0-90° in 5° steps (Lite: 60, 70, 80, 90 added)
├── firmware/edgetx-fast-lua.patch = the fork's new fast-lua-20ms (EdgeTX main 25 Oct,
│     quicker lines/triangles/floor, fix for main's timer widget #7939)
└── version 1.11.0, docs/releases/v1.11.0.md

Evidence

  • At Detail High every picture equals 1.10.0: golden.py, all 102 shots pixel for pixel. On StickTime Pi's own renderer (headless, new .tools/dev/pigolden): 153 color views and 52 each of BW and Lite identical at every picture detail. Physics traces are byte-identical in all three editions.
  • Frame estimate vs 1.10.0: TX16S class −3.8%, TX15/MK3 class −2.2%, B&W radios −6.5%. Detail Low takes about 7% more off a Classic frame and 10% off a Summer one.
  • checks.sh: CHECKS PASS on the fixed pass and on Detail Low. B&W heap high-water 107.8 KB, Lite 59.9 KB.
  • Reviews: the speed pass (two reviewers, fixed as reported), Detail Low ("ship"), and the Pi check's own verifier ("ok").

Merge Danger

Door: two-way

Blast Radius: game

New setting defaults to High, which draws exactly as 1.10.0. Low is opt-in. Old saves read as High.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL

juricabi and others added 5 commits October 26, 2026 21:52
…rees

Five areas of the drawing code, each patch verified on its own and then together: haze bands as
rectangles when the horizon is level (menus, the pad) and the first sky pass's rows the thin pass
repaints skipped, the raster helpers' bounds passed along and the grid's shared points projected
once, the draw list's screen rectangles only when a structure is in view, HUD strings reused while
their number is the same, the B&W renderer's lines and the Lite's hoops with less work per point.
All 102 reference shots pixel for pixel the same, the physics traces byte for byte, every test; frame
estimate TX16S class 24.2 -> 23.1 ms (-4.7%), TX15/MK3 class -5.9%, B&W radios 6.44 -> 6.02 ms
(-6.5%); StickTime BW's heap high-water 107.6 KB, the Lite's 59.9.

Camera tilt goes to 90 degrees in 5 degree steps (the Lite's list up to 90 too): straight up.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
… visible rows, floats to integers without floorf

firmware/edgetx-fast-lua.patch regenerated from the fork's fast-lua-20ms-next branch: the fast-lua commits rebased onto
EdgeTX main a6c9920 (2026-10-25) plus three changes, each proven output-identical against the previous code: the SOLID
path of BitmapBuffer::drawLine steps a pixel pointer (7 million random lines on five buffer sizes, byte for byte; a
w == 1 column path in fastFill), drawFilledTriangle walks only the rows inside the clip rectangle and fills them in
place (millions of random triangles, degenerate and huge ones included), and the Lua core's float-to-integer floor is an
inline guarded conversion instead of newlib's floorf (all 2^32 floats compared; StickTime's suite and physics traces on a
host built from it unchanged). All 16 target groups built on the fork's workflow. tools/build_firmware.sh drops an older
patch from its own clone before applying.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
firmware/edgetx-fast-lua.patch regenerated from the fork's fast-lua-20ms,
now the released fast-lua build: EdgeTX main a6c9920 plus the fast-lua
commits, the three drawing speedups and a fix for main's #7939. Its timer
widget placed a label with lv_obj_align_to() from delayedInit(), which
EdgeTX runs while LVGL draws: the whole screen was laid out mid-frame and
LVGL dropped the redraws, leaving a band of old pixels through other
widgets' text at power-up and model change (bisected on a V12). The patch
still applies to main a6c9920; the README says what the fix is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
Two changes of the speed pass were identical on the radios and the web
emulator but not on StickTime Pi, whose default doubled render draws lines
two rows thick and rectangles exact: the level-horizon haze painted as
rectangles is gone again (the line per step, as 1.10.0), and the minimap's
pond rows are 1-row rectangles instead of lines. The minimap's structure
de-duplication now takes only rectangles at least a pixel each way: a
hand-made track's negative size draws mirrored on the radio.

On the Pi's own renderer (headless, its scenario runner) all 153 color views
and 52 each of StickTime BW and Lite are identical to 1.10.0 at every picture
detail; the 102 reference shots and the physics traces too. Frame estimate
against 1.10.0: TX16S class -3.8%, TX15/MK3 class -2.2%, B&W radios -6.5%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
…cker drawing

Settings > Detail (color, High by default): Low draws the same picture
simpler for a slow radio or a busy track: every other fine grid line, far
hoops and gates simpler sooner (an arch keeps its whole ring to 35 m), a
shorter fade at the horizon, trees and bushes without their lit side, and
nothing of the mountains the haze covers. About 7% off a Classic frame and
10% off a Summer one on a TX16S; at High every picture is the same as
before, and the game is the same at either. The harness flies every look at
Low.

Version 1.11.0, with its release notes: Detail, the second drawing pass
(identical pictures on the radios and on StickTime Pi) and the camera tilt
range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkNLxux5r6KXfp5KgkMDHL
@juricabi
juricabi merged commit c301d1d into main Oct 26, 2026
1 check passed
@juricabi
juricabi deleted the perf-next branch October 26, 2026 22:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant