@@ -67,28 +67,78 @@ MAKEDISPLAY *initialize_display()
67
67
int make_display (MAKEDISPLAY * dis ,ws2811_led_t MATRIX [][15 ])
68
68
{
69
69
int i ,j ,jone ,jcoord ,jonecoord ,coord ,mirrorcoord ;
70
-
70
+ int basepos ,phase ;
71
+
71
72
GifColorType * sprite ;
72
73
73
- sprite = dis -> sprites [(dis -> phase ++ )>>2 ];
74
+ // sprite=dis->sprites[(dis->phase++)>>2];
74
75
75
- if (dis -> phase >= 8 * 16 ) {
76
+ phase = dis -> phase ++ ;
77
+ if (dis -> phase >= 92 ) {
76
78
dis -> phase = 0 ;
77
79
}
78
-
79
- for (j = 0 ;j < 16 ;j ++ ) {
80
- for (i = 0 ;i < 15 ;i ++ ) {
81
- MATRIX [j ][i ] =
82
- sprite [dis -> SpriteW * j + i ].Red +
83
- sprite [dis -> SpriteW * j + i ].Green * 0x100 +
84
- sprite [dis -> SpriteW * j + i ].Blue * 0x10000 ;
80
+
81
+ if (phase < 36 ) {
82
+ sprite = dis -> sprites [(phase )& 1 ];
83
+ _put_sprite (dis ,MATRIX ,sprite ,0 ,36 - phase );
84
+ } else if (phase < 38 ) {
85
+ sprite = dis -> sprites [6 + ((phase )& 1 )];
86
+ _put_sprite (dis ,MATRIX ,sprite ,0 ,0 );
87
+ } else if (phase < 54 ) {
88
+ sprite = dis -> sprites [6 + ((phase )& 1 )];
89
+ _put_sprite (dis ,MATRIX ,sprite ,phase - 38 ,0 );
90
+ } else if (phase < 70 ) {
91
+ sprite = dis -> sprites [14 + ((phase )& 1 )];
92
+ _put_sprite (dis ,MATRIX ,sprite ,phase - 54 - 16 ,0 );
93
+ } else if (phase < 72 ) {
94
+ sprite = dis -> sprites [10 + ((phase )& 1 )];
95
+ _put_sprite (dis ,MATRIX ,sprite ,0 ,0 );
96
+ } else if (phase < 92 ) {
97
+ sprite = dis -> sprites [10 + ((phase )& 1 )];
98
+ _put_sprite (dis ,MATRIX ,sprite ,0 ,phase - 72 );
99
+ }
100
+
101
+
102
+
103
+ /*
104
+ for(j=0;j<20;j++) {
105
+ {
106
+ for(i=0;i<15;i++) {
107
+ MATRIX[j][i] =
108
+ sprite[dis->SpriteW*j + i].Red +
109
+ sprite[dis->SpriteW*j + i].Green*0x100 +
110
+ sprite[dis->SpriteW*j + i].Blue*0x10000;
111
+ }
85
112
}
86
113
}
87
-
114
+ */
88
115
return 0 ;
89
116
90
117
}
91
118
119
+ void _put_sprite (MAKEDISPLAY * dis ,ws2811_led_t MATRIX [][15 ],GifColorType * sprite ,int x , int y )
120
+ {
121
+ int i ,j ,transx ,transy ;
122
+
123
+ for (j = 0 ;j < dis -> SpriteH ;j ++ )
124
+ {
125
+ transy = j + y ;
126
+ if (transy >=0 && transy < 60 ) {
127
+ for (i = 0 ;i < dis -> SpriteW ;i ++ )
128
+ {
129
+ transx = i + x ;
130
+ if (transx >=0 && transx < 15 )
131
+ {
132
+ MATRIX [transy ][transx ] =
133
+ sprite [dis -> SpriteW * j + i ].Red +
134
+ sprite [dis -> SpriteW * j + i ].Green * 0x100 +
135
+ sprite [dis -> SpriteW * j + i ].Blue * 0x10000 ;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+
92
142
void close_display (MAKEDISPLAY * dis )
93
143
{
94
144
gifloader_close (dis -> gfl );
0 commit comments