From 71b242874f0223fcf777e1da9f79ee0f0761f515 Mon Sep 17 00:00:00 2001 From: Damian Schneider Date: Wed, 4 Dec 2024 17:10:44 +0100 Subject: [PATCH 1/2] Fix for #4193 (twinkle fox & cat) --- wled00/FX.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 80be13c62..19d19ad66 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2565,8 +2565,8 @@ static CRGB twinklefox_one_twinkle(uint32_t ms, uint8_t salt, bool cat) { // Overall twinkle speed (changed) unsigned ticks = ms / SEGENV.aux0; - unsigned fastcycle8 = ticks; - unsigned slowcycle16 = (ticks >> 8) + salt; + unsigned fastcycle8 = uint8_t(ticks); + unsigned slowcycle16 = uint16_t((ticks >> 8) + salt); slowcycle16 += sin8(slowcycle16); slowcycle16 = (slowcycle16 * 2053) + 1384; unsigned slowcycle8 = (slowcycle16 & 0xFF) + (slowcycle16 >> 8); From b78229d1e2ba27e6d7f2dfa905c621fb225041a4 Mon Sep 17 00:00:00 2001 From: Damian Schneider Date: Thu, 5 Dec 2024 06:49:17 +0100 Subject: [PATCH 2/2] Fix update for #4193 (twinkle fox & cat) - previous fix worked but there was still an overflow after some time passed. there were still missing roll-overs apparently: reverting these two variables back to 16bit/8bit should fix it for good. --- wled00/FX.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 19d19ad66..0ea070c42 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2566,10 +2566,10 @@ static CRGB twinklefox_one_twinkle(uint32_t ms, uint8_t salt, bool cat) // Overall twinkle speed (changed) unsigned ticks = ms / SEGENV.aux0; unsigned fastcycle8 = uint8_t(ticks); - unsigned slowcycle16 = uint16_t((ticks >> 8) + salt); + uint16_t slowcycle16 = (ticks >> 8) + salt; slowcycle16 += sin8(slowcycle16); slowcycle16 = (slowcycle16 * 2053) + 1384; - unsigned slowcycle8 = (slowcycle16 & 0xFF) + (slowcycle16 >> 8); + uint8_t slowcycle8 = (slowcycle16 & 0xFF) + (slowcycle16 >> 8); // Overall twinkle density. // 0 (NONE lit) to 8 (ALL lit at once).