95 lines
1.7 KiB
C
95 lines
1.7 KiB
C
#include <c64/vic.h>
|
|
#include <c64/rasterirq.h>
|
|
#include <string.h>
|
|
#include <math.h>
|
|
#include <conio.h>
|
|
|
|
// Five raster IRQs for top and bottom of the two chasing bars, and the bottom
|
|
// of the screen
|
|
RIRQCode ftop, fbottom, btop, bbottom, final ;
|
|
|
|
char sintab[256];
|
|
|
|
int main(void)
|
|
{
|
|
rirq_init(true);
|
|
|
|
rirq_build(&ftop, 3);
|
|
rirq_delay(&ftop, 10);
|
|
rirq_write(&ftop, 1, &vic.color_back, 2);
|
|
rirq_write(&ftop, 2, &vic.color_border, 2);
|
|
|
|
rirq_build(&fbottom, 3);
|
|
rirq_delay(&fbottom, 10);
|
|
rirq_write(&fbottom, 1, &vic.color_back, 6);
|
|
rirq_write(&fbottom, 2, &vic.color_border, 14);
|
|
|
|
rirq_build(&btop, 3);
|
|
rirq_delay(&btop, 10);
|
|
rirq_write(&btop, 1, &vic.color_back, 7);
|
|
rirq_write(&btop, 2, &vic.color_border, 7);
|
|
|
|
rirq_build(&bbottom, 3);
|
|
rirq_delay(&bbottom, 10);
|
|
rirq_write(&bbottom, 1, &vic.color_back, 6);
|
|
rirq_write(&bbottom, 2, &vic.color_border, 14);
|
|
|
|
rirq_build(&final, 0);
|
|
|
|
char yfront = 100, yback = 200;
|
|
|
|
rirq_set(0, yfront, &ftop);
|
|
rirq_set(1, yfront + 16, &fbottom);
|
|
rirq_set(2, yback, &btop);
|
|
rirq_set(3, yback + 16, &bbottom);
|
|
rirq_set(4, 250, &final);
|
|
rirq_sort();
|
|
|
|
|
|
rirq_start();
|
|
|
|
for(int i=0; i<32; i++)
|
|
sintab[i] = (int)(120 + 60 * sin(i * PI / 16)) | 1;
|
|
|
|
char fi = 3, bi = 0;
|
|
for(;;)
|
|
{
|
|
yfront = sintab[fi & 31];
|
|
yback = sintab[bi & 31];
|
|
|
|
rirq_move(0, yfront);
|
|
if (yback == yfront)
|
|
{
|
|
rirq_move(1, yfront + 16);
|
|
rirq_clear(2);
|
|
rirq_clear(3);
|
|
}
|
|
else
|
|
{
|
|
if (yback < yfront || yback > yfront + 16)
|
|
{
|
|
rirq_move(1, yfront + 16);
|
|
rirq_move(2, yback);
|
|
}
|
|
else
|
|
{
|
|
rirq_clear(1);
|
|
rirq_move(2, yfront + 16);
|
|
}
|
|
if (yback < yfront - 16 || yback > yfront)
|
|
rirq_move(3, yback + 16);
|
|
else
|
|
rirq_clear(3);
|
|
}
|
|
|
|
rirq_sort();
|
|
rirq_wait();
|
|
|
|
fi ++;
|
|
bi ++;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|