6#include "platforms/is_platform.h"
9#define FASTLED_INTERNAL
17#define RAND16_SEED 1337
47 " movw r26, %[ptr] \n\t"
48 " sbrs %A[num], 0 \n\t"
49 " rjmp Lseteven_%= \n\t"
50 " rjmp Lsetodd_%= \n\t"
56 " subi %A[num], 2 \n\t"
57 " brcc Lsetloop_%= \n\t"
58 " sbci %B[num], 0 \n\t"
59 " brcc Lsetloop_%= \n\t"
71void *
memcpy8 (
void * dst,
const void* src, fl::u16 num )
74 " movw r30, %[src] \n\t"
75 " movw r26, %[dst] \n\t"
76 " sbrs %A[num], 0 \n\t"
77 " rjmp Lcpyeven_%= \n\t"
78 " rjmp Lcpyodd_%= \n\t"
80 " ld __tmp_reg__, Z+ \n\t"
81 " st X+, __tmp_reg__ \n\t"
83 " ld __tmp_reg__, Z+ \n\t"
84 " st X+, __tmp_reg__ \n\t"
86 " subi %A[num], 2 \n\t"
87 " brcc Lcpyloop_%= \n\t"
88 " sbci %B[num], 0 \n\t"
89 " brcc Lcpyloop_%= \n\t"
99void *
memmove8 (
void * dst,
const void* src, fl::u16 num )
103 return memcpy8( dst, src, num);
106 dst = (
char*)dst + num;
107 src = (
char*)src + num;
109 " movw r30, %[src] \n\t"
110 " movw r26, %[dst] \n\t"
111 " sbrs %A[num], 0 \n\t"
112 " rjmp Lmoveven_%= \n\t"
113 " rjmp Lmovodd_%= \n\t"
115 " ld __tmp_reg__, -Z \n\t"
116 " st -X, __tmp_reg__ \n\t"
118 " ld __tmp_reg__, -Z \n\t"
119 " st -X, __tmp_reg__ \n\t"
121 " subi %A[num], 2 \n\t"
122 " brcc Lmovloop_%= \n\t"
123 " sbci %B[num], 0 \n\t"
124 " brcc Lmovloop_%= \n\t"
159 for(
fl::i8 q = -128; q != 127; ++q) {
172 for( r = 0; r <= 20; r += 1) {
174 for( c = 0; c <= 20; c += 1) {
191 Serial.println(
"scale8:");
192 for( r = 0; r <= 240; r += 10) {
194 for( c = 0; c <= 240; c += 10) {
196 t = fl::scale8( r, c);
203 Serial.println(
"scale8_video:");
205 for( r = 0; r <= 100; r += 4) {
207 for( c = 0; c <= 100; c += 4) {
209 t = fl::scale8_video( r, c);
225 for( r = 0; r <= 240; r += 10) {
227 for( c = 0; c <= 240; c += 10) {
229 t = fl::qadd8( r, c);
242 for(
byte z = 0;
z < 10; ++
z) {
245 Serial.print(
"nscale8x3_video( ");
251 nscale8x3_video( r, g, b, sc);
Internal FastLED header for implementation files.
void * memcpy8(void *dst, const void *src, fl::u16 num) FL_NO_INLINE
Faster alternative to memcpy() on AVR.
void * memmove8(void *dst, const void *src, fl::u16 num)
Faster alternative to memmove() on AVR.
void * memset8(void *ptr, fl::u8 value, fl::u16 num) FL_NO_INLINE
Faster alternative to memset() on AVR.
fl::u16 rand16seed
Seed for the random number generator functions.
LIB8STATIC fl::u8 random8() FL_NOEXCEPT
Generate an 8-bit random number.
#define RAND16_SEED
Seed for the random number generator functions.
Fast, efficient 8-bit math functions specifically designed for high-performance LED programming.
void delay(u32 ms, bool run_async=true) FL_NOEXCEPT
Public delay wrapper that keeps bare Arduino delay() preferred after using fl::delay; while still all...