http://www.tienza.es/crux/src/www.jwz.org/xscreensaver/xscreensaver-5.05.tar.gz
[xscreensaver] / hacks / images / m6502 / spacer.asm
1 ; "spacer", move a space ship through an\r
2 ; endless tunnel.  You die once you hit\r
3 ; the walls.\r
4 ;\r
5 ; Controls:\r
6 ;\r
7 ;   W - move up\r
8 ;   X - move down\r
9 ;   Any other key will stop the ship\r
10 ;\r
11 ; Ps: this game runs awfully slow =)\r
12 ;\r
13 \r
14 start:\r
15   jsr init\r
16 \r
17 loop:\r
18         ;;   jsr drawShip                       \r
19   jsr drawMap\r
20   jsr genMap\r
21   jsr readKeys\r
22   jmp loop\r
23 \r
24 ;--\r
25 \r
26 drawShip:\r
27   lda $82                       ; mychange\r
28 ;  asl                          \r
29   tay\r
30 \r
31   lda ypos,y\r
32   sta $00\r
33   iny\r
34   lda ypos,y\r
35   sta $01\r
36 \r
37   ldx #42\r
38   lda ($00,x)\r
39   cmp #0\r
40   beq noCrash\r
41   cmp #5\r
42 ;  bne crashed  \r
43 ;my changes\r
44 noCrash:\r
45   lda #5\r
46   sta ($00,x)\r
47 \r
48   lda $60\r
49   cmp $61\r
50   beq ret\r
51 \r
52   lda $61\r
53   asl\r
54   tay\r
55   lda ypos,y\r
56   sta $00\r
57   iny\r
58   lda ypos,y\r
59   sta $01\r
60   lda #0\r
61   ldx #42\r
62   sta ($00,x)\r
63 \r
64   lda $60\r
65   sta $61\r
66 ret:\r
67   rts\r
68 \r
69 ;--\r
70 \r
71 crashed:\r
72   lda $fe\r
73   sta ($00,x)\r
74   jmp crashed\r
75 \r
76 ;--\r
77 \r
78 readKeys:\r
79   lda $ff\r
80   cmp #119\r
81   bne notUp\r
82   dec $60\r
83   rts\r
84 notUp:\r
85   cmp #120\r
86   bne noMove\r
87   inc $60\r
88 noMove:\r
89   rts\r
90 \r
91 ;--\r
92 \r
93 init:\r
94   ldx #0\r
95 drawLogo:\r
96   lda bottomLogo,x\r
97   sta $500,x\r
98   inx\r
99   cpx #0\r
100   bne drawLogo\r
101 \r
102   lda #10\r
103   sta $60\r
104   sta $61\r
105 \r
106   ldx #0\r
107   lda #$c\r
108 c:sta $200,x\r
109   sta $400,x\r
110   dex\r
111   cpx #0\r
112   bne c\r
113 \r
114   lda #16\r
115   sta $80  ; origin\r
116   ldx #15\r
117 set:\r
118   sta $81,x  ; target\r
119   dex\r
120   bpl set\r
121   rts\r
122 \r
123 ;--\r
124 \r
125 drawMap:\r
126   lda #0\r
127   sta $78\r
128   lda #32\r
129   sta $79\r
130   lda #192\r
131   sta $7a\r
132   lda #224\r
133   sta $7b\r
134 \r
135   ldx #15\r
136 drawLoop:\r
137   lda $81,x\r
138   sta $82,x\r
139   tay\r
140   lda ypos,y\r
141   sta $00\r
142   iny\r
143   lda ypos,y\r
144   sta $01\r
145 \r
146   lda #$c\r
147   ldy $78\r
148   sta ($00),y\r
149   iny\r
150   sta ($00),y\r
151 \r
152   ldy $7b\r
153   sta ($00),y\r
154   iny\r
155   sta ($00),y\r
156 \r
157   ldy $79\r
158   lda #0\r
159   sta ($00),y\r
160   iny\r
161   sta ($00),y\r
162 \r
163   ldy $7a\r
164   sta ($00),y\r
165   iny\r
166   sta ($00),y\r
167 \r
168   inc $78\r
169   inc $79\r
170   inc $7a\r
171   inc $7b\r
172   inc $78\r
173   inc $79\r
174   inc $7a\r
175   inc $7b\r
176   dex\r
177   bpl drawLoop\r
178   rts\r
179 \r
180 ;---\r
181 \r
182 genMap:\r
183   lda $80\r
184   cmp $81\r
185   beq done\r
186   lda $80\r
187   clc\r
188   sbc $81\r
189   bpl plus\r
190   bmi minus\r
191 done:\r
192   lda $fe\r
193   and #$f\r
194   asl\r
195   sta $80\r
196   rts\r
197 minus:\r
198   dec $81\r
199   dec $81\r
200   rts\r
201 plus:\r
202   inc $81\r
203   inc $81\r
204   rts\r
205 \r
206 ypos:\r
207   dcb $00,$02,$20,$02,$40,$02,$60,$02\r
208   dcb $80,$02,$a0,$02,$c0,$02,$e0,$02\r
209   dcb $00,$03,$20,$03,$40,$03,$60,$03\r
210   dcb $80,$03,$a0,$03,$c0,$03,$e0,$03\r
211   dcb $00,$04,$20,$04,$40,$04,$60,$04\r
212   dcb $80,$04,$a0,$04,$c0,$04,$e0,$04\r
213   dcb $00,$05,$20,$05,$40,$05,$60,$05\r
214   dcb $80,$05,$a0,$05,$c0,$05,$e0,$05\r
215 \r
216 bottomLogo:\r
217   dcb $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0\r
218   dcb $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0\r
219   dcb $0,$0,$0,$0,$0,$0,$1,$1,$1,$6,$1,$1,$1,$0\r
220   dcb $0,$6,$1,$1,$6,$0,$0,$1,$1,$1,$6,$0,$1,$1\r
221   dcb $1,$0,$1,$1,$1,$6,$0,$0,$6,$1,$6,$0,$6,$0\r
222   dcb $1,$0,$6,$1,$6,$1,$6,$0,$1,$0,$1,$0,$6,$0\r
223   dcb $6,$1,$6,$0,$6,$0,$1,$0,$6,$1,$6,$0,$0,$6\r
224   dcb $1,$1,$6,$6,$1,$1,$1,$0,$6,$1,$0,$0,$1,$0\r
225   dcb $1,$6,$0,$6,$6,$1,$1,$1,$0,$6,$1,$0,$6,$1\r
226   dcb $0,$6,$6,$6,$6,$6,$1,$6,$1,$1,$6,$6,$6,$1\r
227   dcb $1,$1,$1,$6,$1,$6,$6,$6,$6,$1,$6,$6,$6,$6\r
228   dcb $1,$1,$1,$6,$6,$6,$6,$1,$1,$1,$1,$e,$1,$1\r
229   dcb $e,$6,$6,$1,$1,$6,$1,$6,$1,$1,$1,$1,$e,$1\r
230   dcb $1,$1,$1,$6,$1,$1,$6,$1,$6,$6,$6,$1,$1,$1\r
231   dcb $6,$e,$1,$1,$6,$e,$6,$1,$1,$e,$1,$e,$6,$1\r
232   dcb $1,$1,$6,$e,$1,$1,$1,$e,$1,$1,$6,$1,$6,$e\r
233   dcb $e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e\r
234   dcb $6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e\r
235   dcb $e,$6,$e,$e\r