Browse Source

added number of rounds specifier for matrix, updated default profiles

feature/2015
Hans-Gert Dahmen 13 years ago
parent
commit
ceffdd6bbf
  1. 3
      animations/config.in
  2. 34
      animations/matrix.c
  3. 5
      profiles/borg-16
  4. 2
      profiles/borg-ls

3
animations/config.in

@ -18,7 +18,8 @@ comment "Animations"
endmenu
dep_bool_menu "Matrix" ANIMATION_MATRIX $RANDOM_SUPPORT
int "Number of streamers" STREAMER_NUM 30
int "Number of streamers" MATRIX_STREAMER_NUM 30
int "Run for this number of rounds" MATRIX_CYCLES 500
endmenu
dep_bool "Random Bright" ANIMATION_RANDOM_BRIGHT $RANDOM_SUPPORT

34
animations/matrix.c

@ -1,10 +1,16 @@
#include "../config.h"
#include <stdint.h>
#include <stdint.h>
#include "../random/prng.h"
#include "../pixel.h"
#include "../util.h"
#ifndef MATRIX_CYCLES
#define MATRIX_CYCLES 500
#endif
#ifndef MATRIX_STREAMER_NUM
#define MATRIX_STREAMER_NUM 30
#endif
typedef struct{
pixel start;
@ -31,8 +37,8 @@ inline static void set_bright(pixel_matrix_t *matrix, uint8_t x, uint8_t y, uint
}
void matrix() {
unsigned int counter = 500; /* run 500 cycles */
streamer streamers[STREAMER_NUM];
unsigned int counter = MATRIX_CYCLES;
streamer streamers[MATRIX_STREAMER_NUM];
pixel_matrix_t matrix_bright;
unsigned char x, y;
unsigned char index = 0;
@ -45,10 +51,10 @@ void matrix() {
for(x=0;x<NUM_COLS;x++)
for(y=0;y<NUM_ROWS/4;y++)
matrix_bright[x][y]=0;
for(i=0;i<streamer_num;i++){
streamer str = streamers[i];
unsigned char bright = 0xFF; draw = 0;
for(j=(str.len/8);j!=0xFF;j--){ /* Draw streamer */
if(j+str.start.y<NUM_ROWS){
@ -56,12 +62,12 @@ void matrix() {
draw = 1;
if(bright > (get_bright(&matrix_bright, str.start.x, str.start.y+j)<<6) ){
set_bright(&matrix_bright, str.start.x, str.start.y+j, bright>>6);
}
}
bright-=((bright>>5)*str.decay);
}
str.len+=str.speed/2;
streamers[i] = str;
if(!draw){
@ -70,25 +76,25 @@ void matrix() {
}
streamer_num--;
i--;
}
}
}
for(y=NUM_ROWS;y--;)
for(x=NUM_COLS;x--;){
setpixel((pixel){x,y}, get_bright(&matrix_bright,x,y));
}
unsigned char nsc;
for(nsc=0;nsc<6;nsc++){
if(streamer_num<STREAMER_NUM){
if(streamer_num<MATRIX_STREAMER_NUM){
unsigned char sy = random8()%(2*NUM_ROWS);
if (sy>NUM_ROWS-1) sy=0;
streamers[streamer_num] = (streamer){{random8()%NUM_COLS, sy}, 0, (random8()%8)+12, index++,(random8()%16)+3};
streamer_num++;
streamer_num++;
}
}
wait(60);
wait(60);
}
}

5
profiles/borg-16

@ -83,11 +83,14 @@ FEUER_N=5
FEUER_DIV=44
FEUER_DELAY=50
ANIMATION_MATRIX=y
STREAMER_NUM=30
MATRIX_STREAMER_NUM=30
MATRIX_CYCLES=500
ANIMATION_RANDOM_BRIGHT=y
# ANIMATION_STONEFLY is not set
# ANIMATION_FLYINGDOTS is not set
ANIMATION_GAMEOFLIFE=y
GOL_DELAY=30
GOL_CYCLES=180
# ANIMATION_BREAKOUT is not set
# ANIMATION_MHERWEG is not set
# ANIMATION_LTN_ANT is not set

2
profiles/borg-ls

@ -80,6 +80,8 @@ ANIMATION_RANDOM_BRIGHT=y
# ANIMATION_STONEFLY is not set
# ANIMATION_FLYINGDOTS is not set
ANIMATION_GAMEOFLIFE=y
GOL_DELAY=30
GOL_CYCLES=180
# ANIMATION_BREAKOUT is not set
# ANIMATION_MHERWEG is not set
# ANIMATION_LTN_ANT is not set

Loading…
Cancel
Save