Each stream periodically swaps to a different one of the pooled streak sprites on a staggered timer, so the columns keep changing rather than sitting statically tiled — the rain reads as alive in the corner of the eye. The pool stays at 5: each sprite is ~15 KB of internal RAM and more starves esp-hosted's internal-RAM task stacks into a boot loop. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKPbR6DY2JygHbyLjxm7Uu