-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmatrix.c
More file actions
109 lines (89 loc) · 2.12 KB
/
matrix.c
File metadata and controls
109 lines (89 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <stdlib.h>
#include "low.h"
#include "clock.h"
#include "fontnew.h"
#define NUM_COLUMNS 40
struct
{
char string[25];
int pozycja;
int v;
} kolumna[NUM_COLUMNS];
void inicjuj_palete(void)
{
int i;
unsigned char my_pal[768], *ptr;
dump_palette(my_pal);
ptr = my_pal;
for (i = 0; i < 55; i++) {
*(ptr++) = 0;
*(ptr++) = i;
*(ptr++) = i >> 1;
}
for (i = 0; i < 9; i++) {
*(ptr++) = 55 + i;
*(ptr++) = 55 + i;
*(ptr++) = 55 + i;
}
set_palette(my_pal);
}
void wykonaj_kolumny(unsigned char* buffer)
{
int i, j;
unsigned char kolor;
static licznik;
for (i = 0; i < NUM_COLUMNS; i++) {
for (j = kolumna[i].pozycja - 1, kolor = 64 - 8; j >= 0; j--) {
if (j < 25)
put_char(kolumna[i].string[j], i << 3, j << 3, kolor, buffer);
if (kolor > 4)
kolor -= 4;
}
}
for (i = 0; i < NUM_COLUMNS; i++) {
switch (kolumna[i].v) {
case 1:
kolumna[i].pozycja++;
break;
case 2:
if (licznik == 1 || licznik == 2)
kolumna[i].pozycja++;
break;
case 3:
if (licznik == 2)
kolumna[i].pozycja++;
}
if (kolumna[i].pozycja == 35) {
for (j = 0; j < 25; j++)
kolumna[i].string[j] = rand() % 64 + 32;
kolumna[i].pozycja = 0;
kolumna[i].v = rand() % 3 + 1;
}
}
licznik++;
if (licznik == 3)
licznik = 0;
}
void inicjuj_kolumny(void)
{
int i, j;
for (i = 0; i < NUM_COLUMNS; i++) {
for (j = 0; j < 25; j++)
kolumna[i].string[j] = rand() % 255;
kolumna[i].pozycja = rand() % 25;
kolumna[i].v = rand() % 3 + 1;
}
}
void do_matrix(unsigned char* frame_buffer)
{
inicjuj_palete();
inicjuj_kolumny();
do {
timer_start(10);
wykonaj_kolumny(frame_buffer);
copy_buffer(frame_buffer);
clear_buffer(frame_buffer);
timer_wait();
} while (!is_key_pressed());
get_key_code();
}