http://www.jwz.org/xscreensaver/xscreensaver-5.13.tar.gz
[xscreensaver] / hacks / images / m6502 / softsprite.asm
1 ; software sprites
2 ; by PJP
3
4 loop:
5  ldx $90
6  inx
7  stx $90
8
9  lda #4          ; *** NUMBER OF SPRITES
10  sta $3
11  lda #0
12  sta $4
13
14 multiple:
15  lda $90
16  clc
17  adc $4
18  tax
19
20  lda sinus,x
21  ldy cosinus,x
22  asl
23  tax
24  lda ypos,x
25  sta $00
26  inx
27  lda ypos,x
28  sta $01
29  ldx #0
30  lda #5    ; **** HEIGHT OF EACH SPRITE
31  sta $2
32 draw:
33  lda image,x
34  sta ($0),y
35  inx
36  iny
37  lda image,x
38  sta ($0),y
39  inx
40  iny
41  lda image,x
42  sta ($0),y
43  inx
44  iny
45  lda image,x
46  sta ($0),y
47  inx
48  iny
49  lda image,x
50  sta ($0),y
51
52
53  tya
54  clc
55  adc #28
56  tay
57  inx
58  dec $2
59  bne draw
60
61  lda $4 
62  clc
63  adc #18        ; *** DISTANCE BETWEEN SPRITES (FROM TABLE)
64  sta $4
65
66  dec $3
67  bne multiple
68
69  jmp loop
70
71 ; SINUS (AND COSINUS) 
72
73 sinus:
74  dcb $0e, $0e, $0e, $0f, $0f, $0f, $10, $10, $10, $11
75  dcb $11, $11, $12, $12, $12, $13, $13, $13, $14, $14
76  dcb $14, $14, $15, $15, $15, $16, $16, $16, $16, $17
77  dcb $17, $17, $17, $18, $18, $18, $18, $19, $19, $19
78  dcb $19, $19, $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1b
79  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
80  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
81 cosinus:
82  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
83  dcb $1a, $1a, $1a, $1a, $1a, $1a, $19, $19, $19, $19
84  dcb $19, $18, $18, $18, $18, $18, $17, $17, $17, $17
85  dcb $16, $16, $16, $15, $15, $15, $15, $14, $14, $14
86  dcb $13, $13, $13, $12, $12, $12, $11, $11, $11, $10
87  dcb $10, $10, $0f, $0f, $0f, $0e, $0e, $0e, $0d, $0d
88  dcb $0d, $0c, $0c, $0c, $0b, $0b, $0b, $0a, $0a, $0a
89  dcb $09, $09, $09, $08, $08, $08, $07, $07, $07, $06
90  dcb $06, $06, $06, $05, $05, $05, $04, $04, $04, $04
91  dcb $03, $03, $03, $03, $03, $02, $02, $02, $02, $02
92  dcb $01, $01, $01, $01, $01, $01, $00, $00, $00, $00
93  dcb $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
94  dcb $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
95  dcb $00, $00, $00, $00, $00, $00, $00, $01, $01, $01
96  dcb $01, $01, $01, $01, $02, $02, $02, $02, $02, $03
97  dcb $03, $03, $03, $04, $04, $04, $04, $05, $05, $05
98  dcb $05, $06, $06, $06, $07, $07, $07, $07, $08, $08
99  dcb $08, $09, $09, $09, $0a, $0a, $0a, $0b, $0b, $0b
100  dcb $0c, $0c, $0c, $0d, $0d
101
102  dcb $0e, $0e, $0e, $0f, $0f, $0f, $10, $10, $10, $11
103  dcb $11, $11, $12, $12, $12, $13, $13, $13, $14, $14
104  dcb $14, $14, $15, $15, $15, $16, $16, $16, $16, $17
105  dcb $17, $17, $17, $18, $18, $18, $18, $19, $19, $19
106  dcb $19, $19, $1a, $1a, $1a, $1a, $1a, $1a, $1a, $1b
107  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
108  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
109  dcb $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b, $1b
110  dcb $1a, $1a, $1a, $1a, $1a, $1a, $19, $19, $19, $19
111
112 ; 5x5 BYTES
113
114 image:
115  dcb $0,$0,$0,$0,$0
116  dcb $0,$c,$c,$c,$0
117  dcb $0,$c,$1,$c,$0
118  dcb $0,$c,$c,$c,$0
119  dcb $0,$0,$0,$0,$0
120
121 ; YPOS LOOKUP TABLE
122
123 ypos:
124  dcb $00,$02,$20,$02,$40,$02,$60,$02
125  dcb $80,$02,$a0,$02,$c0,$02,$e0,$02
126  dcb $00,$03,$20,$03,$40,$03,$60,$03
127  dcb $80,$03,$a0,$03,$c0,$03,$e0,$03
128  dcb $00,$04,$20,$04,$40,$04,$60,$04
129  dcb $80,$04,$a0,$04,$c0,$04,$e0,$04
130  dcb $00,$05,$20,$05,$40,$05,$60,$05
131  dcb $80,$05,$a0,$05,$c0,$05,$e0,$05
132