44/*******************
55** Prototypes
66*******************/
7+
8+ #define SLOW_COMETS 1
9+
710void INITSPRITES (void );
811void INITRASTER (void );
912/******************/
@@ -129,6 +132,56 @@ static unsigned char j;
129132static unsigned char h ;
130133static unsigned char restored_text_row [35 ];
131134
135+ #define COMET_X 0
136+ #define COMET_Y 23
137+
138+ unsigned char XX = 0 ;
139+ unsigned char XX2 = 100 ;
140+ unsigned char i ;
141+ unsigned short k ;
142+ unsigned short star_loc ;
143+ unsigned char flip = 1 ;
144+
145+ unsigned char comet_flash ;
146+
147+ // SLOW COMET 1
148+ unsigned char slow_comet_1_x = COMET_X ;
149+ unsigned char slow_comet_1_y = COMET_Y ;
150+ unsigned char slow_comet_1_x_start ;
151+ unsigned short slow_comet_1_pos ;
152+ unsigned slow_comet_1_counter = 0 ;
153+ unsigned short old_slow_comet_1_pos ;
154+
155+ // SLOW COMET 2
156+ unsigned char slow_comet_2_x = COMET_X + 16 ;
157+ unsigned char slow_comet_2_y = COMET_Y ;
158+ unsigned char slow_comet_2_x_start ;
159+ unsigned short slow_comet_2_pos ;
160+ unsigned slow_comet_2_counter = 0 ;
161+ unsigned short old_slow_comet_2_pos ;
162+
163+ // FAST COMET 1
164+ unsigned char fast_comet_1_x = COMET_X + 12 ;
165+ unsigned char fast_comet_1_y = COMET_Y ;
166+ unsigned char fast_comet_1_x_start ;
167+ unsigned short fast_comet_1_pos ;
168+ unsigned fast_comet_1_counter = 0 ;
169+ unsigned short old_fast_comet_1_pos ;
170+
171+ // FAST COMET 2
172+ unsigned char fast_comet_2_x = COMET_X + 18 ;
173+ unsigned char fast_comet_2_y = COMET_Y ;
174+ unsigned char fast_comet_2_x_start ;
175+ unsigned short fast_comet_2_pos ;
176+ unsigned fast_comet_2_counter = 0 ;
177+ unsigned short old_fast_comet_2_pos ;
178+
179+ unsigned char below ;
180+ unsigned char text_counter = 0 ;
181+
182+ unsigned char XB ;
183+ unsigned cycle = 1 ;
184+
132185// $D018 = 53272
133186// -----------------
134187void init_udg (void )
@@ -139,34 +192,46 @@ void init_udg(void)
139192 POKE (648 ,192 );
140193}
141194
142- #define TEXT_COLOR_OFFSET 2
195+ //#define TEXT_COLOR_OFFSET 2
196+ #define TEXT_COLOR_OFFSET 0
197+ // #define COLOR_MASK 3
198+ #define COLOR_MASK 7
143199
144200void color_change (void )
145201{
202+ unsigned char color ;
203+
204+ if (!flip )
205+ {
206+ color = 0 ;
207+ }
208+ else
209+ {
210+ color = + (j & COLOR_MASK );
211+ }
212+
146213 for (h = 0 ;h < 10 ;++ h )
147214 {
148215
149- POKE (COLOR + 6 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
150- POKE (COLOR + 40 + 6 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
216+ POKE (COLOR + 6 + h ,TEXT_COLOR_OFFSET + color );
217+ POKE (COLOR + 40 + 6 + h ,TEXT_COLOR_OFFSET + color );
151218 }
152219
153220 for (h = 0 ;h < 6 ;++ h )
154221 {
155222
156- POKE (COLOR + 18 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
157- POKE (COLOR + 40 + 18 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
223+ POKE (COLOR + 18 + h ,TEXT_COLOR_OFFSET + color );
224+ POKE (COLOR + 40 + 18 + h ,TEXT_COLOR_OFFSET + color );
158225 }
159226
160227 for (h = 0 ;h < 8 ;++ h )
161228 {
162229
163- POKE (COLOR + 26 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
164- POKE (COLOR + 40 + 26 + h ,TEXT_COLOR_OFFSET + ( j & 3 ) );
230+ POKE (COLOR + 26 + h ,TEXT_COLOR_OFFSET + color );
231+ POKE (COLOR + 40 + 26 + h ,TEXT_COLOR_OFFSET + color );
165232 }
166233}
167234
168- #define COMET_X 0
169- #define COMET_Y 23
170235
171236void print (const char * str , unsigned char len , unsigned short offset , unsigned char col )
172237{
@@ -275,54 +340,6 @@ void restore_text_row(void)
275340#define LIGHT_BLUE 0x0E
276341#define LIGHT_GREY 0x0F
277342
278- unsigned char XX = 0 ;
279- unsigned char XX2 = 100 ;
280- unsigned char i ;
281- unsigned short k ;
282- unsigned short star_loc ;
283- unsigned char flip = 1 ;
284-
285- unsigned char comet_flash ;
286-
287- // SLOW COMET 1
288- unsigned char slow_comet_1_x = COMET_X ;
289- unsigned char slow_comet_1_y = COMET_Y ;
290- unsigned char slow_comet_1_x_start ;
291- unsigned short slow_comet_1_pos ;
292- unsigned slow_comet_1_counter = 0 ;
293- unsigned short old_slow_comet_1_pos ;
294-
295- // SLOW COMET 2
296- unsigned char slow_comet_2_x = COMET_X + 16 ;
297- unsigned char slow_comet_2_y = COMET_Y ;
298- unsigned char slow_comet_2_x_start ;
299- unsigned short slow_comet_2_pos ;
300- unsigned slow_comet_2_counter = 0 ;
301- unsigned short old_slow_comet_2_pos ;
302-
303- // FAST COMET 1
304- unsigned char fast_comet_1_x = COMET_X + 12 ;
305- unsigned char fast_comet_1_y = COMET_Y ;
306- unsigned char fast_comet_1_x_start ;
307- unsigned short fast_comet_1_pos ;
308- unsigned fast_comet_1_counter = 0 ;
309- unsigned short old_fast_comet_1_pos ;
310-
311- // FAST COMET 2
312- unsigned char fast_comet_2_x = COMET_X + 18 ;
313- unsigned char fast_comet_2_y = COMET_Y ;
314- unsigned char fast_comet_2_x_start ;
315- unsigned short fast_comet_2_pos ;
316- unsigned fast_comet_2_counter = 0 ;
317- unsigned short old_fast_comet_2_pos ;
318-
319- unsigned char below ;
320- unsigned char text_counter = 0 ;
321-
322- unsigned char XB ;
323- unsigned cycle = 1 ;
324- // unsigned xmas = 0;
325-
326343void draw_top_text (void )
327344{
328345 // Set color for top fixed "happy new year" text
@@ -541,7 +558,11 @@ void handle_slow_comets(void)
541558 {
542559 slow_comet_1_x_start = COMET_X + (rand ()& 31 );
543560 }
561+ #if SLOW_COMETS == 2
544562 while ((slow_comet_1_x_start == slow_comet_2_x_start )|| (slow_comet_1_x_start == fast_comet_1_x_start )|| (slow_comet_1_x_start == fast_comet_2_x_start ));
563+ #else
564+ while ((slow_comet_1_x_start == fast_comet_1_x_start )|| (slow_comet_1_x_start == fast_comet_2_x_start ));
565+ #endif
545566 slow_comet_1_x = slow_comet_1_x_start ;
546567 slow_comet_1_y = COMET_Y ;
547568 slow_comet_1_counter = rand ()& 31 ;
@@ -557,6 +578,7 @@ void handle_slow_comets(void)
557578 }
558579 }
559580
581+ #if SLOW_COMETS == 2
560582 if (slow_comet_2_counter )
561583 {
562584 -- slow_comet_2_counter ;
@@ -588,7 +610,8 @@ void handle_slow_comets(void)
588610 {
589611 POKE (SCREEN + slow_comet_2_pos ,COMET );
590612 }
591- }
613+ }
614+ #endif
592615 }
593616}
594617
@@ -614,7 +637,11 @@ void handle_fast_comets(void)
614637 {
615638 fast_comet_1_x_start = COMET_X + (rand ()& 31 );
616639 }
640+ #if SLOW_COMETS == 2
617641 while ((fast_comet_1_x_start == slow_comet_1_x_start )|| (fast_comet_1_x_start == slow_comet_2_x_start )|| (fast_comet_1_x_start == fast_comet_2_x_start ));
642+ #else
643+ while ((fast_comet_1_x_start == slow_comet_1_x_start )|| (fast_comet_1_x_start == fast_comet_2_x_start ));
644+ #endif
618645 fast_comet_1_x = fast_comet_1_x_start ;
619646 fast_comet_1_y = COMET_Y ;
620647 fast_comet_1_counter = rand ()& 63 ;
@@ -647,7 +674,11 @@ void handle_fast_comets(void)
647674 {
648675 fast_comet_2_x_start = COMET_X + (rand ()& 31 );
649676 }
677+ #if SLOW_COMETS == 2
650678 while ((fast_comet_2_x_start == fast_comet_1_x_start )|| (fast_comet_2_x_start == slow_comet_1_x_start )|| (fast_comet_2_x_start == slow_comet_2_x_start ));
679+ #else
680+ while ((fast_comet_2_x_start == fast_comet_1_x_start )|| (fast_comet_2_x_start == slow_comet_1_x_start ));
681+ #endif
651682 fast_comet_2_x = fast_comet_2_x_start ;
652683 fast_comet_2_y = COMET_Y ;
653684 fast_comet_2_counter = rand ()& 63 ;
@@ -729,7 +760,7 @@ void init_happy_new_year_sprites(void)
729760
730761 SPRY [BOTTOM_PRESENT_INDEX ]= 200 ;
731762
732- SPRY [BOTTOM_SNOW_INDEX ]= 170 ;
763+ SPRY [BOTTOM_SNOW_INDEX ]= 210 ;
733764
734765 for (i = 0 ;i < BOTTOM_SNOW_INDEX ;++ i )
735766 {
@@ -822,6 +853,7 @@ void handle_text(void)
822853 text_counter %=4 ;
823854}
824855
856+
825857void handle_sprite_movement (void )
826858{
827859
0 commit comments