github skizzophrenic/SquachWatch-CYD v1.14.0
SquachWatch-CYD v1.14.0 "Stoop Kid"

latest releases: v1.40.0, v1.39.0, v1.38.0...
one month ago

Stoop Kid. He never left his stoop, and he yelled at everyone who walked past it. This release is for the doorbell across the street that takes your screen a dozen times on one walk — and for the main screen, which is a third faster than it was yesterday without a single pixel changing.

AUTO SNOOZE. Settings > BEHAVIOR > AUTO SNOOZE: OFF, AFTER 5 or AFTER 10. A device that keeps dropping out of range and coming back raises a fresh alert every time it returns, so past its allowance it still can — but only by coming seven dB closer than it ever has. Nothing is silenced. On a device whose whole job is telling you what is near you, a setting that could make it deaf would be the wrong setting to have. The bar is the strongest it ever alerted at, not the most recent, so something that came very close once cannot interrupt again from across the street; the allowance comes back after thirty minutes without spending one; and the WATCH target is exempt outright, because asking to be told about one device is the clearest instruction this board takes.

The card says when it happens. The alert that spends the last free one carries QUIET UNLESS IT NEARS, right there rather than the first time one is held back — that is the moment you are looking at the device, and a board that goes quieter without saying so is the failure this whole thing exists to avoid.

Two banners that never drew. FIRST OF ITS KIND and AT NIGHT have been on the alert card since they were written, and neither has ever appeared: the card's setup ran after the flags were set and wiped them both, every time. The spoken line still worked, which is presumably why nobody noticed the banner was missing. They draw now.

A third faster, and nothing looks different. The main screen went from 15 to 21 frames a second on the 80 MHz boards and from 14 to 16 on the 40 MHz ones, on the dearest background there is. Three things, each checked pixel for pixel against what it replaced: the frame is shipped to the panel while the next slice of it is still being converted, instead of each waiting on the other; the NEARBY headline, which was being drawn twenty-five times a frame to build its outline, is drawn once with the same outline; and the frame buffer's slowest primitives — a pixel, a vertical line, a line, and the built-in font — write bytes directly instead of going through a clipped call per pixel. Text draws six times faster, which on a device that is mostly text reaches every list and menu, and TERMINAL LOG and DIGITAL RAIN dropped from fourteen milliseconds a frame to three and six.

Every list stops at the bottom. SETTINGS learned to last release; it turned out every other scrolling screen had the same two lines of the same bug, and kept going into empty space. LOG, RAW SCAN, POWER SAVER, SECURITY, STATUS LIGHT, TYPE FILTER and IGNORED all stop now, two rows of air under the last item. IGNORED did have a stop and it was the wrong one: the last entry alone at the top of an otherwise empty screen.

Last night's notes had no clip. Here is the one they should have had. A shark suit the shark makes you earn twice, the yeti moving in, and companions getting a card of their own — all of it in v1.13.0, none of it shown.

For the bench. The serial frame line now splits a frame into where the time went and names the background it was measured on; PRIM times every drawing primitive on the real frame buffer and proves the fast paths identical to the library; BG N previews a background without saving it; FAST OFF and PUSH OFF put the old paths back on one boot for comparison.

The actually-useful part

Added

  • AUTO SNOOZE — OFF / AFTER 5 / AFTER 10 — under Settings > BEHAVIOR. Past its allowance a device has to come seven dB closer than it ever has; the allowance returns after thirty minutes; the WATCH target is exempt.
  • QUIET UNLESS IT NEARS on the alert that spends the last free one.
  • A show-off clip for every release from now on: sim/make_show_demo.py renders it from the shipping code into docs/.
  • Bench tools on every build: the frame-time split with scratch timers, PRIM, BG N, FAST ON/OFF, PUSH ON/OFF.

Changed

  • The main screen runs at 21 fps on the 80 MHz boards and 16 on the 40 MHz ones, up from 15 and 14.
  • Text draws six times faster everywhere; lines four and a half times; TERMINAL LOG and DIGITAL RAIN cost a fifth and a half of what they did.
  • LOG, RAW SCAN, POWER SAVER, SECURITY, STATUS LIGHT, TYPE FILTER and IGNORED stop scrolling two rows past the end of the list.

Fixed

  • FIRST OF ITS KIND and AT NIGHT never once appeared on an alert card; they do now.
  • IGNORED scrolled to a stop that left its last entry alone at the top of an empty screen.
  • Last night's release notes shipped without their clip.

Don't miss a new SquachWatch-CYD release

NewReleases is sending notifications on new releases.