You are on page 1of 3

.

l1;
#data 0 0 0 0 0 1 1 1 2 2 2 2 2 4 4 4 4 4 6 6 6 6 6 8 8 8 8 8 10 10 10 10 10 12 12
12 12 12 14 14 14 14 14 255;
.l2;
#data 0 0 0 2 2 2 2 2 4 4 4 4 6 6 6 6 8 8 8 10 10 12 12 14 14 14 14 14 12 12 12 10
10 10;
#data 10 10 10 10 12 12 12 12 12 14 14 14 14 14 14 12 12 10 10 8 8 8 6 6 6 6 6 6 8
8 10 10 10 10 10;
#data 8 6 4 2 0 0 0 0 0 0 0 0 255;

.l3;
#data 0 0 0 0 0 0 0 0 1 1 2 2 4 4 6 8 10 12 14 12 10 10 8 8 6 6 6 4 4 4 6 8 10 8 6
4 255;
.l4;
#data 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 4 4 6 6 8 8 10 10 12 12 14 255;
.l5;
#data 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 4 4 6 6 8 8 8 6 6 6 4 4 4 2 2 2 1 1 1 1 1 1
1 1 2 4 6 8 255;
.l6;
#data 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 4 4 4 6 6 8 10 10 10 255;
.l7;
#data 0 0 0 0 0 0 1 1 1 2 2 2 4 4 4 6 6 6 4 4 4 2 2 2 1 1 1 1 1 1 1 1 1 1;
#data 2 2 4 4 6 6 8 8 6 6 4 4 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 6 6 6 6 6 6 6 6 4 4
4 4 2 2 2 1 1 1 0 0 0 0 0 255;
.l8;
#data 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 10 12 14 255;
.l9;
#data 0 0 0 0 0 0 0 0 0 0 2 4 6 8 8 8 8 8 8 8 8 255;
.l10;
#data 0 0 0 0 0 1 1 1 1 2 2 2 2 4 4 4 4 4 6 6 6 6 255;
.l11;
#data 0 0 0 0 0 0 1 1 1 2 2 2 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 8 10 10 10 10 10 10 12
14 255;
.l12;
#data 0 0 0 0 0 2 4 6 6 6 6 6 4 4 2 2 2 4 6 8 8 8 8 8 8 6 4 6 8 10 10 10 10 8 6 4 6
8 12 14 255;
.l13;
#data 0 0 0 0 0 0 0 0 2 2 4 4 4 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8 10 12 14 255;
.l14;
#data 0 2 4 6 255;
.l15;
#data 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 6 6 8 10 10 10 255;
.l16;
#data 0 0 0 0 1 2 4 6 8 10 12 14 14 12 10 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 255;

.llist;
#adrblock l1 l2 l3 l4 l5 l6 l7 l8;
#adrblock l9 l10 l11 l12 l13 l14 l15 l16;

#var ptrs, 6;

#var colors, 3;
//#var types, 3; //type of light list
#var phases, 3;
#var dirs, 3;
#var lights, 3; //calculated brightness
#var dummy;
#const varlen dummy-colors;

#run;
cld;
jsr ShowStreet;
lda #0; ldx #varlen;
sta 20;
.init_loop;
sta colors, x;
dex; bpl init_loop;

.main_loop;
lda 20; cmp #3; bne main_loop;
lda #0; sta 20;

ldx #2;
.ticker_loop;
jsr ScreenTicker;
lda dirs, x; bne m1;
jsr back_step;
jmp m2;
.m1;
jsr forw_step;
.m2;
lda lights, x; beq m3;
ora colors, x;
.m3;
sta 709,x;
dex; bpl ticker_loop;
jmp main_loop;

.forw_step;
lda lights, x; pha;
inc phases, x;
jsr set_light;
lda lights, x; bmi fs1;
pla;
rts;
.fs1;
pla; sta lights, x;
lda #0; sta dirs, x;
rts;

.back_step;
dec phases, x;
bmi bs1;
jmp set_light;
.bs1;
txa; pha; asl; tax;
lda $D20A; //random
and #$0F; asl; tay;
lda llist, y; sta ptrs, x;
lda llist+1, y; sta ptrs+1, x;
pla; tax;
lda #1; sta dirs, x;
lda #0; sta phases, x; sta lights, x;
lda $D20A; //random
and #$F0; sta colors, x;
rts;

.set_light;
txa; asl; tay;
lda ptrs, y; sta 128;
lda ptrs+1, y; sta 129;
ldy phases, x;
lda (128), y; sta lights, x;
rts;

You might also like