Skip to content

Commit 6894f35

Browse files
committed
bugfixes
1 parent 2c69c5e commit 6894f35

File tree

3 files changed

+6
-10
lines changed

3 files changed

+6
-10
lines changed

wled00/FX.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5695,7 +5695,7 @@ uint16_t mode_2DSunradiation(void) { // By: ldirko https://edi
56955695
uint8_t someVal = SEGMENT.speed/4; // Was 25.
56965696
for (int j = 0; j < (rows + 2); j++) {
56975697
for (int i = 0; i < (cols + 2); i++) {
5698-
byte col = ((int16_t)perlin8(i * someVal, j * someVal, t) - 0x7F) / 3;
5698+
byte col = ((int16_t)perlin8(i * someVal, j * someVal, t) - 127) >> 2; // about +/- 32
56995699
bump[index++] = col;
57005700
}
57015701
}

wled00/colors.h

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class CRGBPalette16;
1919
uint8_t scale8(uint8_t i, uint8_t scale);
2020
uint8_t qadd8(uint8_t i, uint8_t j);
2121
uint8_t qsub8(uint8_t i, uint8_t j);
22+
uint8_t qmul8(uint8_t i, uint8_t j);
2223
int8_t abs8(int8_t i);
2324

2425
typedef uint32_t TProgmemRGBPalette16[16];
@@ -306,15 +307,9 @@ struct CRGB {
306307

307308
// multiply each of the channels by a constant, saturating each channel at 0xFF.
308309
inline CRGB& operator*= (uint8_t d) {
309-
unsigned red = (unsigned)r * (unsigned)d;
310-
unsigned green = (unsigned)r * (unsigned)d;
311-
unsigned blue = (unsigned)r * (unsigned)d;
312-
if(red > 255) red = 255;
313-
if(green > 255) green = 255;
314-
if(blue > 255) blue = 255;
315-
r = red;
316-
g = green;
317-
b = blue;
310+
r = qmul8(r, d);
311+
g = qmul8(g, d);
312+
b = qmul8(b, d);
318313
return *this;
319314
}
320315

wled00/fcn_declare.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,7 @@ __attribute__ ((always_inline)) inline uint8_t scale8_video(uint8_t i, uint8_t
494494
__attribute__ ((always_inline)) inline uint16_t scale16(uint16_t i, uint16_t scale ) { return ((uint32_t)i * (1 + (uint32_t)scale)) >> 16; }
495495
__attribute__ ((always_inline)) inline uint8_t qadd8(uint8_t i, uint8_t j) { unsigned t = i + j; return t > 255 ? 255 : t; }
496496
__attribute__ ((always_inline)) inline uint8_t qsub8(uint8_t i, uint8_t j) { int t = i - j; return t < 0 ? 0 : t; }
497+
__attribute__ ((always_inline)) inline uint8_t qmul8(uint8_t i, uint8_t j) { unsigned p = (unsigned)i * (unsigned)j; return p > 255 ? 255 : p; }
497498
__attribute__ ((always_inline)) inline int8_t abs8(int8_t i) { return i < 0 ? -i : i; }
498499
__attribute__ ((always_inline)) inline int8_t lerp8by8(uint8_t a, uint8_t b, uint8_t frac) { return a + ((((int32_t)b - (int32_t)a) * ((int32_t)frac+1)) >> 8); }
499500
/*

0 commit comments

Comments
 (0)