mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-01 00:31:17 +00:00
1468 lines
38 KiB
Plaintext
1468 lines
38 KiB
Plaintext
PR#1
|
|
|
|
PR#1
|
|
|
|
:L
|
|
1 *44444444444444444444444444444444444444444444444444444444444444444
|
|
2 ;
|
|
3 OBJ $800
|
|
4 ;
|
|
5 ;
|
|
6 CENTRAL:
|
|
7 JSR GRAPHON
|
|
8 BIT CLRKEY
|
|
9 LDX #50
|
|
10 ^1 LDA #$FF
|
|
11 JSR DELAY
|
|
12 LDA KEYSPOT
|
|
13 BMI PRODGY
|
|
14 DEX
|
|
15 BNE <1
|
|
16 PRODGY BIT PAGE1
|
|
17 BIT $C051
|
|
18 LDA #$FF
|
|
19 JSR DELAY
|
|
20 JSR READOPT
|
|
21 LDA #0
|
|
22 STA JOYSTICK
|
|
23 STA LEVEL
|
|
24 STA ALEVEL
|
|
25 STA BLEVEL
|
|
26 STA PLAYERS
|
|
27 STA SOUNDTY
|
|
28 LDA #$30
|
|
29 STA TWEEK+1
|
|
30 INTERP LDA #1
|
|
31 STA DEMOMODE
|
|
32 JSR OPINION
|
|
33 BCC >5
|
|
34 JMP OPTIONS
|
|
35 ^5 JMP DEMODO
|
|
36 ;
|
|
37 ;
|
|
38 ;
|
|
39 ;
|
|
40 ;
|
|
41 OPTIONS BIT CLRKEY
|
|
42 BIT PAGE1
|
|
43 BIT $C051
|
|
44 JSR NEWSCRN
|
|
45 JSR SETUP
|
|
46 LDA #0
|
|
47 STA PULSATOR
|
|
48 LDA LEVEL
|
|
49 BNE >1
|
|
50 LDA #COURSE
|
|
51 STA ACOURSEL
|
|
52 STA BCOURSEL
|
|
53 STA AOLDCRSL
|
|
54 STA BOLDCRSL
|
|
55 LDA /COURSE
|
|
56 STA ACOURSEH
|
|
57 STA BCOURSEH
|
|
58 STA AOLDCRSH
|
|
59 STA BOLDCRSH
|
|
60 JMP >2
|
|
61 ^1 LDA #EPNTZ
|
|
62 STA ACOURSEL
|
|
63 STA BCOURSEL
|
|
64 STA AOLDCRSL
|
|
65 STA BOLDCRSL
|
|
66 LDA /EPNTZ
|
|
67 STA ACOURSEH
|
|
68 STA BCOURSEH
|
|
69 STA AOLDCRSH
|
|
70 STA BOLDCRSH
|
|
71 ^2 LDA #$FF
|
|
72 JSR DELAY
|
|
73 JSR READBASE
|
|
74 LDA #0
|
|
75 STA ONEPGONE
|
|
76 STA DEMOMODE
|
|
77 STA PLAYERN
|
|
78 LDA #8
|
|
79 STA AMEN
|
|
80 STA BMEN
|
|
81 LDA #0
|
|
82 STA AGOLD
|
|
83 STA BGOLD
|
|
84 STA ASCORE3
|
|
85 STA BSCORE3
|
|
86 STA ASCORE2
|
|
87 STA BSCORE2
|
|
88 STA ASCORE1
|
|
89 STA BSCORE1
|
|
90 STA ATME1
|
|
91 STA BTME1
|
|
92 STA ATME0
|
|
93 STA BTME0
|
|
94 LDA #$FF
|
|
95 STA AGOAL
|
|
96 STA BGOAL
|
|
97 LDA LEVEL
|
|
98 STA ALEVEL
|
|
99 STA BLEVEL
|
|
100 JSR SELECTP
|
|
101 JSR MENPLOT
|
|
102 LDA SOUNDTY
|
|
103 BEQ >1
|
|
104 LDA #$20
|
|
105 STA TWEEK+1
|
|
106 JMP >2
|
|
107 ^1 LDA #$30
|
|
108 STA TWEEK+1
|
|
109 ^2 JSR JSTDRAW
|
|
110 JSR NEWROUND
|
|
111 JSR GRAPHON
|
|
112 JSR READYSGN
|
|
113 JMP BASEPART
|
|
114 ;
|
|
115 ;
|
|
116 PRINTOPT:
|
|
117 ;
|
|
118 ;
|
|
119 LDA #1
|
|
120 STA DOOBIE
|
|
121 LDA LEVEL
|
|
122 BEQ >1
|
|
123 LDX #13
|
|
124 LDY #150
|
|
125 JSR PRINTXT
|
|
126 ASC "C@"
|
|
127 JMP >2
|
|
128 ^1 LDX #13
|
|
129 LDY #150
|
|
130 JSR PRINTXT
|
|
131 ASC "B@"
|
|
132 ^2 LDA JOYSTICK
|
|
133 BEQ >1
|
|
134 LDX #11
|
|
135 LDY #160
|
|
136 JSR PRINTXT
|
|
137 ASC "JOYSTICK@"
|
|
138 JMP >2
|
|
139 ^1 LDX #11
|
|
140 LDY #160
|
|
141 JSR PRINTXT
|
|
142 ASC "KEYBOARD@"
|
|
143 ^2 LDA PLAYERS
|
|
144 BEQ >1
|
|
145 LDX #34
|
|
146 LDY #150
|
|
147 JSR PRINTXT
|
|
148 ASC "2@"
|
|
149 JMP >2
|
|
150 ^1 LDX #34
|
|
151 LDY #150
|
|
152 JSR PRINTXT
|
|
153 ASC "1@"
|
|
154 ^2 LDA SOUNDTY
|
|
155 BEQ >1
|
|
156 LDX #32
|
|
157 LDY #160
|
|
158 JSR PRINTXT
|
|
159 ASC "OFF@"
|
|
160 JMP >2
|
|
161 ^1 LDX #32
|
|
162 LDY #160
|
|
163 JSR PRINTXT
|
|
164 ASC "ON @"
|
|
165 ^2 RTS
|
|
166 ;
|
|
167 ;
|
|
168 MOONXX:
|
|
169 ;
|
|
170 ;
|
|
171 LDA #MOONX
|
|
172 STA SCR2
|
|
173 LDA /MOONX
|
|
174 STA SCR3
|
|
175 LDA #$27
|
|
176 STA SCR5
|
|
177 LDA #$4E
|
|
178 STA SCR6
|
|
179 JSR UNCOMPR
|
|
180 LDA #PATROLX
|
|
181 STA SCR2
|
|
182 LDA /PATROLX
|
|
183 STA SCR3
|
|
184 LDA #$51
|
|
185 STA SCR5
|
|
186 LDA #$7D
|
|
187 STA SCR6
|
|
188 JSR UNCOMPR
|
|
189 LDX #15
|
|
190 ^1 LDA #$FF
|
|
191 JSR DELAY
|
|
192 DEX
|
|
193 BNE <1
|
|
194 RTS
|
|
195 ;
|
|
196 ;
|
|
197 ;
|
|
198 OPINION BIT PAGE1
|
|
199 BIT $C051
|
|
200 BIT CLRKEY
|
|
201 JSR NEWSCRN
|
|
202 LDA #191
|
|
203 STA SCR0
|
|
204 ^2 LDX SCR0
|
|
205 LDA HGHADR,X
|
|
206 STA BASH
|
|
207 LDA LOWADR,X
|
|
208 STA BASL
|
|
209 LDY #$27
|
|
210 LDA #$80
|
|
211 CPX #70
|
|
212 BGE >1
|
|
213 LDA #0
|
|
214 ^1 STA (BASL),Y
|
|
215 DEY
|
|
216 BPL <1
|
|
217 DEC SCR0
|
|
218 LDA SCR0
|
|
219 CMP #35
|
|
220 BNE <2
|
|
221 LDA #1
|
|
222 STA DOOBIE
|
|
223 LDX #10
|
|
224 LDY #45
|
|
225 JSR PRINTXT
|
|
226 ASC "MOON PATROL OPTIONS@"
|
|
227 LDX #11
|
|
228 LDY #65
|
|
229 JSR PRINTXT
|
|
230 ASC "[K] KEYBOARD MODE@"
|
|
231 LDX #11
|
|
232 LDY #75
|
|
233 JSR PRINTXT
|
|
234 ASC "[J] JOYSTICK MODE@"
|
|
235 LDX #11
|
|
236 LDY #85
|
|
237 JSR PRINTXT
|
|
238 ASC "[1] ONE PLAYER OPTION@"
|
|
239 LDX #11
|
|
240 LDY #95
|
|
241 JSR PRINTXT
|
|
242 ASC "[2] TWO PLAYER OPTION@"
|
|
243 LDX #11
|
|
244 LDY #105
|
|
245 JSR PRINTXT
|
|
246 ASC "[B] BEGINNER COURSE@"
|
|
247 LDX #11
|
|
248 LDY #115
|
|
249 JSR PRINTXT
|
|
250 ASC "[C] CHAMPION COURSE@"
|
|
251 LDX #11
|
|
252 LDY #125
|
|
253 JSR PRINTXT
|
|
254 ASC "[S] SOUND ON OR OFF@"
|
|
255 LDX #5
|
|
256 LDY #150
|
|
257 JSR PRINTXT
|
|
258 ASC "COURSE ( )@"
|
|
259 LDX #25
|
|
260 LDY #150
|
|
261 JSR PRINTXT
|
|
262 ASC "PLAYERS ( )@"
|
|
263 LDX #5
|
|
264 LDY #160
|
|
265 JSR PRINTXT
|
|
266 ASC "MODE ( )@"
|
|
267 LDX #25
|
|
268 LDY #160
|
|
269 JSR PRINTXT
|
|
270 ASC "SOUND ( )@"
|
|
271 LDX #10
|
|
272 LDY #177
|
|
273 JSR PRINTXT
|
|
274 ASC "SPACE BAR STARTS GAME@"
|
|
275 ;
|
|
276 BIT CLRKEY
|
|
277 JSR PRINTOPT
|
|
278 JSR GRAPHON
|
|
279 RSTMR LDA #0
|
|
280 STA TAME1
|
|
281 LDA #$A
|
|
282 STA TAME2
|
|
283 ^3:
|
|
284 ^1 LDA KEYSPOT
|
|
285 BMI >1
|
|
286 LDA $C061
|
|
287 STA SCR0
|
|
288 EOR OLDBUTON
|
|
289 BPL >7
|
|
290 LDA SCR0
|
|
291 BPL >7
|
|
292 STA OLDBUTON
|
|
293 SEC
|
|
294 RTS
|
|
295 ^7 LDA SCR0
|
|
296 STA OLDBUTON
|
|
297 LDA #$60
|
|
298 JSR DELAY
|
|
299 DEC TAME1
|
|
300 BNE <1
|
|
301 DEC TAME2
|
|
302 BNE <1
|
|
303 CLC
|
|
304 RTS
|
|
305 ^1 BIT CLRKEY
|
|
306 CMP #"K"
|
|
307 BNE >2
|
|
308 LDA #0
|
|
309 STA JOYSTICK
|
|
310 JMP REFRESH
|
|
311 ^2 CMP #"J"
|
|
312 BNE >2
|
|
313 LDA #1
|
|
314 STA JOYSTICK
|
|
315 JMP REFRESH
|
|
316 ^2 CMP #"1"
|
|
317 BNE >2
|
|
318 LDA #0
|
|
319 STA PLAYERS
|
|
320 JMP REFRESH
|
|
321 ^2 CMP #"2"
|
|
322 BNE >2
|
|
323 LDA #1
|
|
324 STA PLAYERS
|
|
325 JMP REFRESH
|
|
326 ^2 CMP #"B"
|
|
327 BNE >2
|
|
328 LDA #0
|
|
329 STA LEVEL
|
|
330 STA OLEVEL
|
|
331 JMP REFRESH
|
|
332 ^2 CMP #"C"
|
|
333 BNE >2
|
|
334 LDA #1
|
|
335 STA LEVEL
|
|
336 STA OLEVEL
|
|
337 JMP REFRESH
|
|
338 ^2 CMP #"S"
|
|
339 BNE >2
|
|
340 LDA SOUNDTY
|
|
341 EOR #1
|
|
342 STA SOUNDTY
|
|
343 JMP REFRESH
|
|
344 ^2 CMP #" "
|
|
345 BEQ >1
|
|
346 JMP <3
|
|
347 ^1 SEC
|
|
348 RTS
|
|
349 REFRESH JSR PRINTOPT
|
|
350 JMP RSTMR
|
|
351 ;
|
|
352 ;
|
|
353 DEMODO:
|
|
354 BIT CLRKEY
|
|
355 ^1 BIT PAGE1
|
|
356 BIT $C051
|
|
357 JSR NEWSCRN
|
|
358 LDA #0
|
|
359 STA PULSATOR
|
|
360 STA ASCORE3
|
|
361 STA ASCORE2
|
|
362 STA ASCORE1
|
|
363 STA PLAYERS
|
|
364 STA PLAYERN
|
|
365 STA ATME0
|
|
366 STA ATME1
|
|
367 STA AGOLD
|
|
368 LDA #$FF
|
|
369 STA AGOAL
|
|
370 LDA #4
|
|
371 STA AMEN
|
|
372 JSR SELECTP
|
|
373 JSR MIDDLE
|
|
374 LDA #1
|
|
375 STA DEMOMODE
|
|
376 LDA #DEMOC
|
|
377 STA OLDCRSL
|
|
378 STA COURSEL
|
|
379 LDA /DEMOC
|
|
380 STA OLDCRSH
|
|
381 STA COURSEH
|
|
382 LDA #0
|
|
383 STA TWEEK+1
|
|
384 JSR GRAPHON
|
|
385 LDA #0
|
|
386 STA KINDEX
|
|
387 TAX
|
|
388 LDA OUTKEY,X
|
|
389 STA KCUNT
|
|
390 INC KINDEX
|
|
391 JMP MAINLOOP
|
|
392 ;
|
|
393 ;
|
|
394 ;
|
|
395 MIDDLE LDA #$FF ; SET 'SKIP RANDOM WHEEL ROUTINE' FLAG
|
|
396 STA BIGTRY
|
|
397 LDA #$00 ; SET 'STORE LAND DIRECTLY ON SCREEN' FLAG
|
|
398 STA TSTFLAG
|
|
399 STA BSTIMES ; SET 'BASE SCROLLING' FLAG
|
|
400 STA JETC
|
|
401 STA PLANTC
|
|
402 STA JETFLAG
|
|
403 LDA #$FF
|
|
404 STA NINDX ; SET INDEX FOR 'CAR DIRECTION' FLAG
|
|
405 LDA #$00
|
|
406 STA GKWT
|
|
407 STA GKWT2
|
|
408 STA CARHROCK ; SET 'CAR HIT SOMETHING' FLAG
|
|
409 LDA #1
|
|
410 STA FLAG56
|
|
411 LDA #74 ; SET UP STARTING X:WHEEL1
|
|
412 STA WHEEL1X
|
|
413 LDA #70 ; SET UP STARTING X:CAR
|
|
414 STA CARX
|
|
415 LDA #84
|
|
416 STA WHEEL2X ; SET UP STARTING X:WHEEL2
|
|
417 LDA #100
|
|
418 STA WHEEL3X ; SET UP STARTING X COORDINATE FOR WHEEL3
|
|
419 LDA #133 ; SET STARTING Y:CAR
|
|
420 STA CARY
|
|
421 LDA #142
|
|
422 STA WHEEL1Y ; SET STARTING Y:WHEEL1
|
|
423 STA WHEEL2Y ; SET STARTING Y:WHEEL2
|
|
424 STA WHEEL3Y ; SET STARTING Y:WHEEL3
|
|
425 LDA #74 ; SET CARS X POSITION TO 74
|
|
426 STA XPOS
|
|
427 LDA #$02 ; SET STARTING MOVEMENT TO STANDSTILL
|
|
428 STA BUFAD
|
|
429 LDA #$00 ; SET DIRECTION TO ZERO
|
|
430 STA DIRC
|
|
431 STA JUMPFL ; SET JUMP FLAG TO 'NOT JUMPING'
|
|
432 LDA OLDCRSL
|
|
433 STA COURSEL
|
|
434 LDA OLDCRSH
|
|
435 STA COURSEH
|
|
436 JSR MENPLOT
|
|
437 JSR JSTDRAW ; THIS ROUTINE 'DRAWS ONLY' THE CAR
|
|
438 JSR NEWROUND
|
|
439 JSR PRINTTME
|
|
440 JSR PRINTSC
|
|
441 JSR PRINTHG
|
|
442 LDA GOALCNT
|
|
443 BMI SPECRIT
|
|
444 LDA GOALCNT
|
|
445 PHA
|
|
446 LDA #25
|
|
447 STA GOALCNT
|
|
448 LDA #0
|
|
449 STA SCR4
|
|
450 JSR REDROUT
|
|
451 PLA
|
|
452 STA GOALCNT
|
|
453 LDA #$D5
|
|
454 STA SCR4
|
|
455 JSR REDROUT
|
|
456 JSR PRINTGL
|
|
457 RTS
|
|
458 SPECRIT LDA #25
|
|
459 STA GOALCNT
|
|
460 LDA #0
|
|
461 STA SCR4
|
|
462 JSR REDROUT
|
|
463 LDA #31
|
|
464 STA GOALCNT
|
|
465 JSR PRINTGL
|
|
466 LDA #$FF
|
|
467 STA GOALCNT
|
|
468 RTS
|
|
469 ;
|
|
470 FLYWHEEL LDA WHEEL1Y
|
|
471 SEC
|
|
472 SBC SWEL1
|
|
473 CMP #142
|
|
474 BLT >1
|
|
475 LDA #142
|
|
476 STA WHEEL1Y
|
|
477 STA WHEEL2Y
|
|
478 STA WHEEL3Y
|
|
479 JMP >4
|
|
480 ^1 STA WHEEL1Y
|
|
481 STA WHEEL2Y
|
|
482 STA WHEEL3Y
|
|
483 DEC WHEEL3X
|
|
484 DEC WHEEL3X
|
|
485 DEC WHEEL2X
|
|
486 INC WHEEL1X
|
|
487 ^2 LDA WHEEL3X
|
|
488 BEQ >2
|
|
489 CMP #$FF
|
|
490 BEQ >2
|
|
491 JMP >4
|
|
492 ^2 LDA #1
|
|
493 STA WOFFLAG
|
|
494 ;
|
|
495 ^4 LDA WHEEL1Y
|
|
496 SEC
|
|
497 SBC SWEL1
|
|
498 CMP #142
|
|
499 BLT >1
|
|
500 LDA #142
|
|
501 ^1 STA WHEEL1Y
|
|
502 STA WHEEL2Y
|
|
503 STA WHEEL3Y
|
|
504 ;
|
|
505 LDA SWEL0
|
|
506 SEC
|
|
507 SBC #2
|
|
508 BCS >1
|
|
509 CLC
|
|
510 ADC #10
|
|
511 DEC SWEL1
|
|
512 ^1 STA SWEL0
|
|
513 ;
|
|
514 LDA WHEEL1Y
|
|
515 CMP #137
|
|
516 BLT >2
|
|
517 LDA NWEL0
|
|
518 SEC
|
|
519 SBC #7
|
|
520 BCS >1
|
|
521 DEC NWEL1
|
|
522 CLC
|
|
523 ADC #10
|
|
524 ^1 STA NWEL0
|
|
525 LDA NWEL0
|
|
526 STA SWEL0
|
|
527 LDA NWEL1
|
|
528 STA SWEL1
|
|
529 ;
|
|
530 ^2 RTS
|
|
531 ;
|
|
532 DRAWFLY:
|
|
533 ;
|
|
534 ;
|
|
535 LDA WHEEL3XO
|
|
536 BMI >1
|
|
537 TAX
|
|
538 LDY WHEEL3YO
|
|
539 LDA #WHLSS
|
|
540 JSR ERASE1
|
|
541 ^1 LDA #WHLSS
|
|
542 LDX WHEEL2XO
|
|
543 LDY WHEEL2YO
|
|
544 JSR ERASE1
|
|
545 LDA #WHLSS
|
|
546 LDX WHEEL1XO
|
|
547 LDY WHEEL1YO
|
|
548 JSR ERASE1
|
|
549 LDA WOFFLAG
|
|
550 BNE >1
|
|
551 LDA #WHLSS
|
|
552 LDX WHEEL3X
|
|
553 LDY WHEEL3Y
|
|
554 JSR DRAW1
|
|
555 ^1 LDA #WHLSS
|
|
556 LDX WHEEL2X
|
|
557 LDY WHEEL2Y
|
|
558 JSR DRAW1
|
|
559 LDA #WHLSS
|
|
560 LDX WHEEL1X
|
|
561 LDY WHEEL1Y
|
|
562 JSR DRAW1
|
|
563 LDA WHEEL1X
|
|
564 STA WHEEL1XO
|
|
565 LDA WHEEL2X
|
|
566 STA WHEEL2XO
|
|
567 LDA WHEEL3X
|
|
568 STA WHEEL3XO
|
|
569 LDA WHEEL1Y
|
|
570 STA WHEEL1YO
|
|
571 LDA WHEEL2Y
|
|
572 STA WHEEL2YO
|
|
573 LDA WHEEL3Y
|
|
574 STA WHEEL3YO
|
|
575 DEC CUONT2
|
|
576 LDA CUONT2
|
|
577 CMP #$FF
|
|
578 BNE >1
|
|
579 LDA #$8C
|
|
580 STA CUONT2
|
|
581 ^1 DEC YINDEX
|
|
582 LDA YINDEX
|
|
583 CMP #$FF
|
|
584 BNE >1
|
|
585 LDA #$8C
|
|
586 STA YINDEX
|
|
587 ^1 JSR NEWROUND
|
|
588 RTS
|
|
589 ;
|
|
590 ;
|
|
591 ;
|
|
592 ; ===== CAR EXPLOSION ROUTINE =====
|
|
593 ;
|
|
594 CAREXPLO:
|
|
595 ;
|
|
596 LDA CARHROCK
|
|
597 BNE >1
|
|
598 RTS
|
|
599 ^1 DEC MEN
|
|
600 JSR CLEANIT
|
|
601 LDX #3
|
|
602 ^4 LDA RCKOADD,X
|
|
603 STA RCKADD,X
|
|
604 LDA RCKOYS,X
|
|
605 STA RCKYS,X
|
|
606 LDA RCKOXS,X
|
|
607 STA RCKXS,X
|
|
608 LDA DICKX,X
|
|
609 STA DCHXS,X
|
|
610 LDA DICKY,X
|
|
611 STA DCHYS,X
|
|
612 LDA DICKN,X
|
|
613 STA DCHNUMS,X
|
|
614 LDA DICKA,X
|
|
615 STA DCHADD,X
|
|
616 DEX
|
|
617 BPL <4
|
|
618 LDA #0
|
|
619 STA XSPEED
|
|
620 LDA WHEEL3XO
|
|
621 ORA LEVEL
|
|
622 TAX
|
|
623 LDA #WHLSS
|
|
624 LDY WHEEL3YO
|
|
625 JSR ERASE1 ; ERASE WHEEL3
|
|
626 LDA WHEEL2XO
|
|
627 ORA LEVEL
|
|
628 TAX
|
|
629 LDA #WHLSS
|
|
630 LDY WHEEL2YO
|
|
631 JSR ERASE1 ; ERASE WHEEL2
|
|
632 LDA WHEEL1XO
|
|
633 ORA LEVEL
|
|
634 TAX
|
|
635 LDY WHEEL1YO
|
|
636 LDA #WHLSS
|
|
637 JSR ERASE1 ; ERASE WHEEL1
|
|
638 LDA CARXO
|
|
639 ORA LEVEL
|
|
640 TAX
|
|
641 LDA #CARSS
|
|
642 LDY CARYO
|
|
643 JSR ERASE1 ; ERASE CAR
|
|
644 LDA #3 ; SET UP PARABOLA CONSTANT AND VARIABLE
|
|
645 * ; ACCELERATION
|
|
646 STA NWEL1 ; THIS IS THE ONES PLACE
|
|
647 STA SWEL1
|
|
648 LDA #0
|
|
649 STA WOFFLAG ; SET UP WHEEL OFF SCREEN FLAG
|
|
650 LDA #2
|
|
651 STA NWEL0 ; THIS IS THE TENTHS PLACE
|
|
652 STA SWEL0
|
|
653 JSR FLYWHEEL
|
|
654 LDA #CEXSS
|
|
655 STA EXSHP
|
|
656 LDA #4
|
|
657 STA TAME2
|
|
658 NXTPOW LDA EXSHP
|
|
659 LDX CARXO
|
|
660 INX
|
|
661 INX
|
|
662 LDY CARYO
|
|
663 INY
|
|
664 JSR DRAW0 ; DRAW CAR EXPLOSION SHAPE
|
|
665 LDA #7
|
|
666 STA SCR6
|
|
667 LDX #50
|
|
668 LDY #1
|
|
669 JSR WNOISE2
|
|
670 JSR FLYWHEEL
|
|
671 JSR FLYWHEEL
|
|
672 JSR FLYWHEEL
|
|
673 JSR FLYWHEEL
|
|
674 JSR FLYWHEEL
|
|
675 JSR DRAWFLY
|
|
676 LDA #10
|
|
677 JSR DELAY
|
|
678 JSR TEMPORI
|
|
679 LDA TAME2
|
|
680 BEQ >4
|
|
681 LDA EXSHP
|
|
682 LDX CARXO
|
|
683 INX
|
|
684 INX
|
|
685 LDY CARYO
|
|
686 INY
|
|
687 JSR ERASE0 ; ERASE CAR EXPLOSION SHAPE
|
|
688 LDA EXSHP
|
|
689 CMP #CEXSS
|
|
690 BEQ >9
|
|
691 LDA #CEXSS
|
|
692 STA EXSHP
|
|
693 JMP >8
|
|
694 ^9 LDA #CEXSS+1
|
|
695 STA EXSHP
|
|
696 ^8 DEC TAME2
|
|
697 JMP NXTPOW
|
|
698 ^4 LDA #7
|
|
699 STA SCR6
|
|
700 LDX #0
|
|
701 LDY #7
|
|
702 JSR WNOISE2
|
|
703 JSR FLYWHEEL
|
|
704 JSR DRAWFLY
|
|
705 LDA #CEXSS
|
|
706 STA EXSHP
|
|
707 ^1 LDA EXSHP
|
|
708 LDX CARXO
|
|
709 INX
|
|
710 INX
|
|
711 LDY CARYO
|
|
712 INY
|
|
713 JSR DRAW0 ; DRAW CAR EXPLOSION SHAPE
|
|
714 LDA EXSHP
|
|
715 CMP #CEXSS+2
|
|
716 BEQ >1
|
|
717 LDA #3
|
|
718 STA XCOUNTER
|
|
719 ^8 JSR TEMPORI
|
|
720 JSR FLYWHEEL
|
|
721 JSR FLYWHEEL
|
|
722 JSR DRAWFLY
|
|
723 DEC XCOUNTER
|
|
724 BPL <8
|
|
725 LDA EXSHP
|
|
726 LDX CARXO
|
|
727 INX
|
|
728 INX
|
|
729 LDY CARYO
|
|
730 INY
|
|
731 JSR ERASE0 ; ERASE CAR EXPLOSION SHAPE
|
|
732 INC EXSHP
|
|
733 JMP <1
|
|
734 ^1 JSR TEMPORI
|
|
735 LDA EXSHP
|
|
736 LDX CARXO
|
|
737 INX
|
|
738 INX
|
|
739 LDY CARYO
|
|
740 INY
|
|
741 JSR ERASE0 ; ERASE CAR EXPLOSION SHAPE
|
|
742 LDA #0
|
|
743 STA CARHROCK
|
|
744 LDA #30
|
|
745 CJ0 PHA
|
|
746 JSR TEMPORI
|
|
747 JSR FLYWHEEL
|
|
748 JSR FLYWHEEL
|
|
749 JSR DRAWFLY
|
|
750 LDA #20
|
|
751 JSR DELAY
|
|
752 PLA
|
|
753 SEC
|
|
754 SBC #1
|
|
755 BCS CJ0
|
|
756 JSR MAKESON
|
|
757 LDA #$FF
|
|
758 JSR DELAY
|
|
759 LDA #$FF
|
|
760 JSR DELAY
|
|
761 JSR SAVEPLY
|
|
762 LDA MEN
|
|
763 BNE >6
|
|
764 JMP GAMEOVER
|
|
765 ^6 LDA PLAYERS
|
|
766 BEQ CONTGME
|
|
767 LDA ONEPGONE
|
|
768 BNE CONTGME
|
|
769 LDA PLAYERN
|
|
770 EOR #1
|
|
771 STA PLAYERN
|
|
772 CONTGME:
|
|
773 ^6 BIT PAGE1 ; TURN ON GRAPHICS PAGE 1
|
|
774 BIT $C051
|
|
775 LDA #BACKMSFR
|
|
776 STA FREQ
|
|
777 LDA /BACKMSFR
|
|
778 STA FREQ+1
|
|
779 LDA #BACKMSDR
|
|
780 STA DURT
|
|
781 LDA /BACKMSDR
|
|
782 STA DURT+1
|
|
783 LDA #0
|
|
784 STA STATE
|
|
785 LDA DEMOMODE
|
|
786 BEQ >1
|
|
787 JMP INTERP
|
|
788 ^1 JSR NEWSCRN
|
|
789 JSR SELECTP
|
|
790 NEWPNTR JSR MIDDLE ; RESET ALL VARIABLES AND SCREEN
|
|
791 JSR GRAPHON ; TURN ON GRAPHICS
|
|
792 JSR PRMPT2P
|
|
793 JMP MAINLOOP ; BRANCH INTO THE MAIN PROGRAM LOOP
|
|
794 TEMPORI INC MOUNCNT
|
|
795 LDA MOUNCNT
|
|
796 AND #$01
|
|
797 BNE >1
|
|
798 DEC YINDEX
|
|
799 DEC CUONT2
|
|
800 JSR NEWROUND
|
|
801 ^1 LDA MOUNCNT
|
|
802 AND #$F
|
|
803 BNE RANOUT3
|
|
804 JSR PULSATE
|
|
805 RANOUT3 JSR DRAWBLTS ; DRAW ANY BULLETS THAT ARE ON THE SCREEN
|
|
806 JSR DRAWALN ; COMPLETE ALIEN ROUTINE
|
|
807 JSR SHIPCHCK
|
|
808 JSR SHIPFIRN
|
|
809 JSR PLOTDCH
|
|
810 JSR ROCKS
|
|
811 JSR TANKBUL
|
|
812 JSR ROCKCOL ; COLLISON ROUTINE FOR ROCKS
|
|
813 JSR COLISION ; CHECK COLLISION FOR SHIPS
|
|
814 LDA #$50
|
|
815 JSR DELAY
|
|
816 RTS
|
|
817 ;
|
|
818 ;
|
|
819 ;
|
|
820 ;
|
|
821 ;
|
|
822 ; ================ SHIFT SHAPES ROUTINE =================
|
|
823 ;
|
|
824 SHIFT:
|
|
825 ;
|
|
826 LDA #$00
|
|
827 STA SHAPENUM ; START WITH SHAPE ZERO
|
|
828 STA SHIFBYT1
|
|
829 STA SHIFBYT2
|
|
830 LDA #$02 ; START WITH SHAPE 1 - SHIFT 0
|
|
831 STA SHFINDX
|
|
832 LDA #INFOTEC ; SET UP ADDRESS OF FIRST INFO BLOCK
|
|
833 STA BLOCK ; SET UP ADDRESS OF FIRST INFO BLOCK
|
|
834 LDA /INFOTEC ; SET UP FOR INDIRECT ADDRESSING
|
|
835 STA BLOCK+1
|
|
836 LDY #$04 ; GET BUFFER TO THROW ALL SHIFTED SHAPES
|
|
837 LDA (BLOCK),Y ; GET LOW ADDRESS OF SHAPE BUFFER
|
|
838 STA NEXTBUF ; KEEP TRACK OF NEXT SHAPE
|
|
839 INY
|
|
840 LDA (BLOCK),Y ; GET HIGH ADDRESS OF SHAPE BUFFER
|
|
841 STA NEXTBUF+1
|
|
842 ^3 LDY SHFINDX ; GET INDEX FOR WHICH SHAPE TO SHIFT
|
|
843 LDA (BLOCK),Y ; GET SHAPE TO SHIFT NEXT ONE FROM
|
|
844 STA OLDSHP
|
|
845 INY
|
|
846 LDA (BLOCK),Y ; GET SHAPE TO SHIFT NEXT ONE FROM
|
|
847 STA OLDSHP+1
|
|
848 LDY #$00 ; GET WITH OF SHAPE
|
|
849 LDA (BLOCK),Y
|
|
850 TAX ; KEEP IT IN THE X REGISTER
|
|
851 CMP #$FF ; CHECK TO SEE IF AT END OF TABLE
|
|
852 BNE SNAKE
|
|
853 JMP FINISHED
|
|
854 SNAKE STA WIDTH ; STORE IT AT WIDTH LOCATION
|
|
855 INY
|
|
856 LDA (BLOCK),Y ; GET LENGTH OF SHAPE
|
|
857 STA LENGTH
|
|
858 JSR MULTIPLY ; COMBINE WIDTH AND LENGTH TO GET THE
|
|
859 STX AREA ; STORE TOTAL LENGTH IN BYTES OF SHAPE
|
|
860 ^1 CLC
|
|
861 LDY SHFINDX
|
|
862 INY
|
|
863 INY
|
|
864 LDA NEXTBUF ; GET LOW ADDRESS OF SHIFT
|
|
865 STA (BLOCK),Y ; STORE IN INFO BLOCK
|
|
866 INY
|
|
867 LDA NEXTBUF+1 ; GET HIGH ADDRESS OF SHIFT
|
|
868 STA (BLOCK),Y ; STORE IN INFO BLOCK
|
|
869 JSR SHIFTONE ; SHIFT THAT ONE SHAPE
|
|
870 ASL SHIFBYT1 ; PREPARE FOR NEXT BIT TO SHIFT IN
|
|
871 ASL SHIFBYT2 ; PREPARE FOR NEXT BIT TO SHIFT IN
|
|
872 LDA AREA
|
|
873 CLC
|
|
874 ADC NEXTBUF ; CALCULATE NEW SHAPE BUFFER
|
|
875 BCC FOOD
|
|
876 INC NEXTBUF+1
|
|
877 FOOD STA NEXTBUF
|
|
878 INC SHFINDX ; INCREMENT SHIFT INDEX
|
|
879 INC SHFINDX ; INCREMENT SHIFT INDEX
|
|
880 LDA SHFINDX
|
|
881 CMP #14 ; ON LAST SHAPE ?
|
|
882 BNE <3
|
|
883 LDA #$10 ; ADD 16 TO INFORMATION BLOCK ADDRESS TO GET
|
|
884 CLC ; ADDRESS OF NEXT BLOCK AVAILABLE
|
|
885 ADC BLOCK
|
|
886 STA BLOCK ; STORE RESULT IN Z-PAGE LOOKUP
|
|
887 LDA #$00 ; DONT'T FORGET THE GOOD OLD CARRY
|
|
888 ADC BLOCK+1
|
|
889 STA BLOCK+1 ; STORE RESULT IN Z-PAGE LOOKUP
|
|
890 LDA #$02 ; RESET POINTER TO BEGINING OF INFO BLOCK
|
|
891 STA SHFINDX
|
|
892 INC SHAPENUM ; INCREMENT FOR NEXT SHAPE
|
|
893 LDA SHAPENUM
|
|
894 CMP #DC1SS
|
|
895 BEQ BRAXON
|
|
896 CMP #DC2SS
|
|
897 BEQ BRAXON
|
|
898 CMP #DC3SS
|
|
899 BEQ BRAXON
|
|
900 CMP #DC4SS
|
|
901 BEQ BRAXON
|
|
902 CMP #DC5SS
|
|
903 BEQ BRAXON
|
|
904 LDA #$00
|
|
905 STA SHIFBYT1
|
|
906 STA SHIFBYT2
|
|
907 JMP XENON
|
|
908 *******************************
|
|
909 BRAXON LDA #$D5 ; GET SHIFTIN BYTE
|
|
910 ASL ; CLEAR OUT COLOR BIT
|
|
911 STA SHIFBYT1 ; STORE AT SHIFTIN BYTE LOCATION
|
|
912 LDA #$D5 ; GET SHIFTIN BYTE 2
|
|
913 ASL ; CLEAR OUT COLOR BIT
|
|
914 STA SHIFBYT2
|
|
915 *******************************
|
|
916 XENON JMP <3
|
|
917 FINISHED RTS ; RETURN TO CALLER
|
|
918 ;
|
|
919 ;
|
|
920 ; ===== WHITE NOISE ROUTINE DRIVEN BY RANDOM TABLE =====
|
|
921 ;
|
|
922 WNOISE LDA RANDAT,X
|
|
923 ^2 CLC
|
|
924 ADC SCR6
|
|
925 BCC <2
|
|
926 JSR TWEEK
|
|
927 INX
|
|
928 BNE WNOISE
|
|
929 RTS
|
|
930 ;
|
|
931 ;
|
|
932 ;;
|
|
933 ; ===== MULTIPLY ROUTINE =====
|
|
934 ;
|
|
935 MULTIPLY:
|
|
936 ;
|
|
937 STA SCR0 ; MULTIPLY (A) AND (X)
|
|
938 STX SCR1 ; RETURN WITH A=HIGH / X=LOW
|
|
939 LDA #$00
|
|
940 LDX #$08 ; SET COUNTER FOR ALL EIGHT BITS
|
|
941 ^1 ASL
|
|
942 ROL SCR2 ; ROTATE BIT INTO NUMBER
|
|
943 ASL SCR0 ; MULTIPLY BY TWO
|
|
944 BCC >2 ; CHECK FOR OVERFLOW
|
|
945 CLC
|
|
946 ADC SCR1 ; CHECK FOR OTHER OVERFLOW
|
|
947 BCC >2
|
|
948 INC SCR2 ; INCREMENT HIGH BYTE OF ANSWER
|
|
949 ^2 DEX ; MAKE SYRE THAT YOU DO IT EIGHT TIMES
|
|
950 BNE <1
|
|
951 TAX ; PUT LOW PART OF ANSWER IN (X)
|
|
952 LDA SCR2 ; PUT HIGH PART OF ANSWER IN (A)
|
|
953 RTS ; RETURN WITH ANSWER
|
|
954 ;
|
|
955 ;
|
|
956 ; ===== SHIFT ROUTINE SHIFTS SHIFT0 TO OTHER SHIFTS =====
|
|
957 ;
|
|
958 SHIFTONE:
|
|
959 ;
|
|
960 LDA SHIFBYT1
|
|
961 PHA
|
|
962 LDA SHIFBYT2
|
|
963 PHA
|
|
964 LDA #$00 ; RESET INDEX COUNTER TO ZERO
|
|
965 STA COUNT3
|
|
966 TAY
|
|
967 ^2 LDA WIDTH ; GET WIDTH OF SHAPE
|
|
968 STA COUNT2 ; USE THAT LOCATION AS A COUNTER
|
|
969 LDA (OLDSHP),Y ; GET BYTE FORM SHAPE
|
|
970 AND #3 ; TAKE OUT EVERYTHING BUT FIRST 2 BITS
|
|
971 BNE >1
|
|
972 LDA #0
|
|
973 STA SHIFBYT1
|
|
974 STA SHIFBYT2
|
|
975 ^1 LDA (OLDSHP),Y ; GET BYTE FORM SHAPE
|
|
976 AND #$80 ; TAKE OUT EVERYTHING BUT COLOR BIT
|
|
977 STA COLR ; STORE IT TEMPORARILY
|
|
978 LDA SHIFBYT1 ; SHIFT BIT IN FROM SHIFTIN BYTE
|
|
979 ASL
|
|
980 PHP
|
|
981 ^1 LDA (OLDSHP),Y ; GET BYTE FROM PREVIOUS SHAPE
|
|
982 AND #$7F
|
|
983 PLP ; GET BIT FROM PREVIOUS SHAPE AND SPLERGE
|
|
984 ROL ; ROTATE BYTE RIGHT
|
|
985 ASL ; MOVE IT BACK LEFT AGAIN
|
|
986 PHP ; SAVE PROCESSOR STATUS
|
|
987 LSR ; SHIFT IT BACK IN AGAIN
|
|
988 ORA COLR ; PUT BACK THE COLOR BIT
|
|
989 STA (NEXTBUF),Y ; STORE SHIFTED BYTE IN NEXT SHAPE
|
|
990 INY
|
|
991 BNE UPOL
|
|
992 INC OLDSHP+1
|
|
993 INC NEXTBUF+1
|
|
994 UPOL DEC COUNT2 ; DECREMENT BYTE COUNTER
|
|
995 BNE <1
|
|
996 INC COUNT3
|
|
997 LDA COUNT3
|
|
998 CMP LENGTH ; CHECK TO SEE IF DONE WITH WHOLE SHAPE
|
|
999 BEQ >2
|
|
1000 PLP ; SWAP SHIFTIN BYTE FOR BACKGROUND PATTERN
|
|
1001 LDA SHIFBYT1
|
|
1002 PHA
|
|
1003 LDA SHIFBYT2
|
|
1004 STA SHIFBYT1
|
|
1005 PLA
|
|
1006 STA SHIFBYT2
|
|
1007 JMP <2 ; JUMP BACK FOR NEXT LINE
|
|
1008 ^2 PLP ; PULL STACK OFF AND EXIT ROUTINE
|
|
1009 PLA
|
|
1010 STA SHIFBYT2
|
|
1011 PLA
|
|
1012 STA SHIFBYT1
|
|
1013 RTS ; RETURN TO CALLER
|
|
1014 ;
|
|
1015 ;
|
|
1016 ;
|
|
1017 ;
|
|
1018 ;
|
|
1019 WNOISE2 INY
|
|
1020 INX
|
|
1021 ^1 LDA RANDAT,X
|
|
1022 ^2 CLC
|
|
1023 ADC SCR6
|
|
1024 BCC <2
|
|
1025 JSR TWEEK
|
|
1026 DEX
|
|
1027 BEQ >2
|
|
1028 LDA SCR0
|
|
1029 JMP <1
|
|
1030 ^2 DEY
|
|
1031 BNE <1
|
|
1032 RTS
|
|
1033 ;
|
|
1034 ;
|
|
1035 ;
|
|
1036 ;
|
|
1037 ; ===== ROUTINE TO PLAY SHORT FREQ BLEEPS =====
|
|
1038 ;
|
|
1039 ;
|
|
1040 UPTHEA:
|
|
1041 ;
|
|
1042 STA SCR3
|
|
1043 LDX #30
|
|
1044 ^1 LDA SCR3
|
|
1045 JSR DELAY
|
|
1046 JSR TWEEK
|
|
1047 DEX
|
|
1048 BPL <1
|
|
1049 RTS
|
|
1050 ;
|
|
1051 ; ===== ROCK BOOM SOUND WHEN YOU HIT ROCK =====
|
|
1052 ;
|
|
1053 ROCKBOOM:
|
|
1054 ;
|
|
1055 LDA #1
|
|
1056 STA SCR6
|
|
1057 LDX #210
|
|
1058 JSR WNOISE
|
|
1059 RTS
|
|
1060 ;
|
|
1061 ; ===== ROUTINE TO PLAY BACKGROUND MUSIC AT $300 INTERVALS =====
|
|
1062 ;
|
|
1063 ;
|
|
1064 PLAYBACK LDA STATE
|
|
1065 BNE CLICK2
|
|
1066 LDX #0
|
|
1067 LDA (DURT,X)
|
|
1068 ASL
|
|
1069 STA LSTDURT
|
|
1070 LDA (FREQ,X)
|
|
1071 BNE >1
|
|
1072 LDA #BACKMSFR
|
|
1073 STA FREQ
|
|
1074 LDA /BACKMSFR
|
|
1075 STA FREQ+1
|
|
1076 LDA #BACKMSDR
|
|
1077 STA DURT
|
|
1078 LDA /BACKMSDR
|
|
1079 STA DURT+1
|
|
1080 LDA #0
|
|
1081 STA STATE
|
|
1082 RTS
|
|
1083 ^1 STA LSTFREQ
|
|
1084 CLICK2 LDX #$FF
|
|
1085 LDY #3
|
|
1086 NXTPCE LDA LSTFREQ ; GET FREQUENCY OF NOTE
|
|
1087 WAIT1 NOP
|
|
1088 DEX
|
|
1089 BEQ >1
|
|
1090 NOP
|
|
1091 JMP >2
|
|
1092 ^1 DEY
|
|
1093 BEQ >3
|
|
1094 ^2 SEC
|
|
1095 SBC #$01 ; USE AS DELAY BETWEEN CLICKS
|
|
1096 BCS WAIT1 ; IF NOT DONE CONTINUE DELAY
|
|
1097 JSR TWEEK
|
|
1098 DEX
|
|
1099 BEQ >1
|
|
1100 NOP
|
|
1101 JMP >2
|
|
1102 ^1 DEY
|
|
1103 BEQ >3
|
|
1104 ^2 JMP NXTPCE
|
|
1105 ^3 DEC LSTDURT
|
|
1106 BEQ >1
|
|
1107 LDA #1
|
|
1108 STA STATE
|
|
1109 JMP >3
|
|
1110 ^1 INC DURT
|
|
1111 BNE >1
|
|
1112 INC DURT+1
|
|
1113 ^1 INC FREQ
|
|
1114 BNE >2
|
|
1115 INC FREQ+1
|
|
1116 ^2 LDA #0
|
|
1117 STA STATE
|
|
1118 ^3 RTS
|
|
1119 ;
|
|
1120 ;
|
|
1121 GOALZDO:
|
|
1122 ;
|
|
1123 BIT PAGE1
|
|
1124 BIT $C051
|
|
1125 JSR NEWSCRN
|
|
1126 LDA OLDCRSL
|
|
1127 STA COURSEL
|
|
1128 LDA OLDCRSH
|
|
1129 STA COURSEH
|
|
1130 LDA #$FF
|
|
1131 JSR DELAY
|
|
1132 JSR READBASE
|
|
1133 LDA #1
|
|
1134 STA LEVEL
|
|
1135 JSR SETUP2
|
|
1136 JSR JSTDRAW
|
|
1137 JSR NEWROUND
|
|
1138 JSR READYSGN
|
|
1139 JMP BASEPART
|
|
1140 ;
|
|
1141 ;
|
|
1142 ;
|
|
1143 ;
|
|
1144 ;
|
|
1145 ; ===== SONG ROUTINE THAT PLAYS TWO VOICE MUSIC =====
|
|
1146 ;
|
|
1147 PLAYTWOV:
|
|
1148 ;
|
|
1149 STX MUSIC
|
|
1150 STA MUSIC+1
|
|
1151 LDA #0
|
|
1152 STA SPKRUP
|
|
1153 STA PITCHCUT
|
|
1154 STA PITCHCUT+1
|
|
1155 PLAYNOTE LDY #0
|
|
1156 LDA (MUSIC),Y
|
|
1157 BNE >1
|
|
1158 RTS
|
|
1159 ^1 STA DUR
|
|
1160 LDX #0
|
|
1161 JSR GETNOTE
|
|
1162 STA SPKRVEC0+1
|
|
1163 STA SPKRVEC1+1
|
|
1164 STX FLIPVEC0+1
|
|
1165 STX FLIPVEC1+1
|
|
1166 LDX #1
|
|
1167 JSR GETNOTE
|
|
1168 STA SPKVEC10+1
|
|
1169 STA SPKVEC11+1
|
|
1170 STX FLPVEC10+1
|
|
1171 STX FLPVEC11+1
|
|
1172 LDA PITCH+1
|
|
1173 BNE >1
|
|
1174 ASL PITCHCUT
|
|
1175 ASL PITCHCUT
|
|
1176 ASL PITCHCUT
|
|
1177 ^1 LDA #0
|
|
1178 LDX #$8A
|
|
1179 LDY #$40
|
|
1180 STA DUR+1
|
|
1181 MUSICM:
|
|
1182 STA SPKRUP
|
|
1183 DEY
|
|
1184 BNE L0
|
|
1185 LDY PITCH
|
|
1186 BIT SPKRUP
|
|
1187 BMI L3
|
|
1188 SPKRVEC0 BIT $C030
|
|
1189 FLIPVEC0 EOR #$80
|
|
1190 JMP L7
|
|
1191 L0 CPY PITCHCUT
|
|
1192 BNE L2
|
|
1193 BIT SPKRUP
|
|
1194 BPL L4
|
|
1195 SPKRVEC1 BIT $C030
|
|
1196 FLIPVEC1 EOR #$80
|
|
1197 JMP L1
|
|
1198 L2 NOP
|
|
1199 L3 NOP
|
|
1200 L4 NOP
|
|
1201 L5 NOP
|
|
1202 L6 NOP
|
|
1203 L7 NOP
|
|
1204 L1:
|
|
1205 STA SPKRUP
|
|
1206 DEX
|
|
1207 BNE L10
|
|
1208 LDX PITCH+1
|
|
1209 BIT SPKRUP
|
|
1210 BMI L13
|
|
1211 SPKVEC10 BIT $C030
|
|
1212 FLPVEC10 EOR #$80
|
|
1213 JMP L17
|
|
1214 L10 CPX PITCHCUT+1
|
|
1215 BNE L12
|
|
1216 BIT SPKRUP
|
|
1217 BPL L14
|
|
1218 SPKVEC11 BIT $C030
|
|
1219 FLPVEC11 EOR #$80
|
|
1220 JMP L11
|
|
1221 L12 NOP
|
|
1222 L13 NOP
|
|
1223 L14 NOP
|
|
1224 L15 NOP
|
|
1225 L16 NOP
|
|
1226 L17 NOP
|
|
1227 L11:
|
|
1228 DEC DUR+1
|
|
1229 BNE L20
|
|
1230 DEC DUR
|
|
1231 BEQ NEXTN
|
|
1232 JMP MUSICM
|
|
1233 L20 NOP
|
|
1234 NOP
|
|
1235 NOP
|
|
1236 JMP MUSICM
|
|
1237 NEXTN:
|
|
1238 LDA MUSIC
|
|
1239 CLC
|
|
1240 ADC #3
|
|
1241 STA MUSIC
|
|
1242 BCC >0
|
|
1243 INC MUSIC+1
|
|
1244 ^0 JMP PLAYNOTE
|
|
1245 GETNOTE:
|
|
1246 INY
|
|
1247 LDA (MUSIC),Y
|
|
1248 PHP
|
|
1249 STA PITCH,X
|
|
1250 LSR
|
|
1251 LSR
|
|
1252 LSR
|
|
1253 LSR
|
|
1254 STA PITCHCUT,X
|
|
1255 PLP
|
|
1256 BEQ >3
|
|
1257 LDA SOUNDTY
|
|
1258 BEQ >1
|
|
1259 LDA #$20
|
|
1260 JMP >2
|
|
1261 ^1 LDA #$30
|
|
1262 ^2 LDX #$A0
|
|
1263 ^3 RTS
|
|
1264 ;
|
|
1265 ;
|
|
1266 SCRLGOAL:
|
|
1267 ;
|
|
1268 ;
|
|
1269 LDA ASCONL
|
|
1270 STA VASCRL2+1
|
|
1271 LDA ASCONH
|
|
1272 STA VASCRL2+2
|
|
1273 LDA #186
|
|
1274 STA BSSCROLL
|
|
1275 LDX #0
|
|
1276 STX XSAVE
|
|
1277 ^4 LDX BSSCROLL
|
|
1278 LDA LOWADR,X
|
|
1279 STA VASCRL3+1
|
|
1280 STA VASCRL4+1
|
|
1281 STA HOMOG1+1
|
|
1282 LDA HGHADR,X
|
|
1283 STA VASCRL3+2
|
|
1284 STA VASCRL4+2
|
|
1285 STA HOMOG1+2
|
|
1286 LDA #$55
|
|
1287 STA SCR5
|
|
1288 LDA #$55
|
|
1289 STA SCR6
|
|
1290 LDX XSAVE
|
|
1291 VASCRL2 LDA $FFFF,X ; GET BYTE THESE BITS GOTO
|
|
1292 STX ZSAVE
|
|
1293 ASL
|
|
1294 LDX ASCBI
|
|
1295 INX
|
|
1296 GPX8 DEX
|
|
1297 BEQ GPX9
|
|
1298 ROL SCR5
|
|
1299 ROL
|
|
1300 ROL SCR6
|
|
1301 JMP GPX8
|
|
1302 GPX9 LSR
|
|
1303 ORA #$80
|
|
1304 LDX ZSAVE
|
|
1305 LDY ASCBT
|
|
1306 CPY #0
|
|
1307 BMI G46T
|
|
1308 CPY #40
|
|
1309 BGE G46T
|
|
1310 VASCRL3 STA $FFFF,Y
|
|
1311 G46T LDA SCR6
|
|
1312 INY
|
|
1313 CPY #0
|
|
1314 BMI G47T
|
|
1315 CPY #40
|
|
1316 BGE G47T
|
|
1317 ORA #$80
|
|
1318 VASCRL4 STA $FFFF,Y
|
|
1319 G47T INY
|
|
1320 TYA
|
|
1321 AND #1
|
|
1322 BEQ G40T
|
|
1323 LDA #$D5
|
|
1324 JMP G41T
|
|
1325 G40T LDA #$AA
|
|
1326 G41T CPY #0
|
|
1327 BMI G1T
|
|
1328 CPY #$28
|
|
1329 BGE G1T
|
|
1330 HOMOG1 STA $FFFF,Y
|
|
1331 G1T DEC BSSCROLL
|
|
1332 INC XSAVE
|
|
1333 LDA BSSCROLL
|
|
1334 CMP #179
|
|
1335 BNE <4
|
|
1336 LDA ASCBI
|
|
1337 SEC
|
|
1338 SBC XSPEED
|
|
1339 BCS G2T
|
|
1340 CLC
|
|
1341 ADC #7
|
|
1342 DEC ASCBT
|
|
1343 G2T STA ASCBI
|
|
1344 RTS
|
|
1345 ;
|
|
1346 ; ===== PLAY ELECTRIC DUET TYPE MUSIC ROUTINE =====
|
|
1347 ;
|
|
1348 PLAYGOAL:
|
|
1349 ;
|
|
1350 LDX #GLMUSIC
|
|
1351 LDA /GLMUSIC
|
|
1352 JMP PLAYTWOV
|
|
1353 ;
|
|
1354 ;
|
|
1355 ;
|
|
1356 ; ===== PLAY ELECTRIC DUET TYPE MUSIC ROUTINE =====
|
|
1357 ;
|
|
1358 PLAYGLZ:
|
|
1359 ;
|
|
1360 LDX #GZMUSIC
|
|
1361 LDA /GZMUSIC
|
|
1362 JMP PLAYTWOV
|
|
1363 ;
|
|
1364 ;
|
|
1365 ;
|
|
1366 READYSGN:
|
|
1367 ;
|
|
1368 LDA LEVEL
|
|
1369 BNE >1
|
|
1370 LDX #8
|
|
1371 LDY #78
|
|
1372 LDA #1
|
|
1373 STA DOOBIE
|
|
1374 JSR PRINTXT
|
|
1375 ASC " BEGINNER COURSE GO ! @"
|
|
1376 RTS
|
|
1377 ^1 LDX #8
|
|
1378 LDY #78
|
|
1379 LDA #1
|
|
1380 STA DOOBIE
|
|
1381 JSR PRINTXT
|
|
1382 ASC " CHAMPION COURSE GO ! @"
|
|
1383 RTS
|
|
1384 ;
|
|
1385 ;
|
|
1386 ;
|
|
1387 ;
|
|
1388 ;
|
|
1389 UNCOMPR LDA SCR5 ; START SCANNING AT LINE 0
|
|
1390 SEC
|
|
1391 SBC #1
|
|
1392 STA VLINE
|
|
1393 LDA #0
|
|
1394 STA BYTEL ; START AT BYTE 0
|
|
1395 ;
|
|
1396 ;
|
|
1397 JSR INCHPOS ; SET HIRES CURSOR FOR FIRST POSITION
|
|
1398 ^3 LDX #0
|
|
1399 LDA (SCR2,X)
|
|
1400 BPL >1
|
|
1401 STA SCR0
|
|
1402 JSR INCBUFER
|
|
1403 LDA (SCR2,X)
|
|
1404 STA PATTERNC
|
|
1405 ^2 LDA SCR0
|
|
1406 LDY BYTEL ; GET BYTE OF CURRENT LINE
|
|
1407 ORA #$80
|
|
1408 CMP #$80
|
|
1409 BEQ >7
|
|
1410 STA (BASL),Y ; GET NEXT BYTE FROM HIRES SCREEN
|
|
1411 ^7 JSR INCHPOS
|
|
1412 DEC PATTERNC
|
|
1413 BNE <2
|
|
1414 JSR INCBUFER
|
|
1415 JMP <3
|
|
1416 ^1 LDY BYTEL
|
|
1417 ORA #$80
|
|
1418 CMP #$80
|
|
1419 BEQ >7
|
|
1420 STA (BASL),Y
|
|
1421 ^7 JSR INCHPOS
|
|
1422 JSR INCBUFER
|
|
1423 JMP <3
|
|
1424 ;
|
|
1425 ;
|
|
1426 INCBUFER INC SCR2
|
|
1427 BNE >1
|
|
1428 INC SCR3 ; IF OVERFLOW THEN INCREMENT MSB OF BUFFER
|
|
1429 ^1 RTS ; RETURN TO CALLER
|
|
1430 ;
|
|
1431 ;
|
|
1432 INCHPOS INC VLINE ; INCREMENT VERTICAL POSITION OF HIRES CURSOR
|
|
1433 LDA VLINE ; IF LAST LINE WAS ALREADY DONE, THEN START
|
|
1434 ; ; NEXT VERTICAL PASS WITH NEXT BYTE
|
|
1435 CMP SCR6
|
|
1436 BNE GETADDR ; IF NOT DONE VERTICALLY, THEN CONTINUE
|
|
1437 LDA SCR5
|
|
1438 STA VLINE ; RESET VERTICAL LINE ADDRESS
|
|
1439 INC BYTEL ; INCREMENT BYTE NUMBER
|
|
1440 LDA BYTEL ; CHECK TO SEE IF COMPLETELY DONE
|
|
1441 CMP #$28
|
|
1442 BEQ FINISHEB ; GOT TO FINAL END OF ROUTINE
|
|
1443 GETADDR LDX VLINE
|
|
1444 LDA HGHADR,X
|
|
1445 STA BASH
|
|
1446 LDA LOWADR,X
|
|
1447 STA BASL
|
|
1448 LDA #10
|
|
1449 JSR DELAY
|
|
1450 RTS
|
|
1451 ;
|
|
1452 FINISHEB PLA ; POP OFF RETURN ADDRESS
|
|
1453 PLA
|
|
1454 RTS ; RETURN TO CALLER
|
|
1455 ;
|
|
1456 ;
|
|
1457 ;
|
|
1458 LST
|
|
1459 NLS
|
|
1460 DCM "BSAVE OBJ4,A$800,L$1000,D1,S5"
|
|
1461 ;
|
|
1462 ICL "MOON PATROL5,D2,S6"
|
|
: |