home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1987 May
/
64er_Magazin_87-05_1987_Markt__Technik_de.d64
/
sprite-irq
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
2KB
|
100 lines
0 sys32768:.opt p,oo
10 .tit "sprite-interrupt"
11 .pag 255
12 *= $c04d
13 vic = $d000
15 irqalt = $ea31
17 mask = $d01a
18 request = $d019
22 ;
23 ;initialisierung
24 ;===============
25 ;
26 sei ;interrrupt verhindern
27 lda #<irqneu
28 ldx #>irqneu
29 sta $0314 ;irq-vektor auf neue
30 stx $0315 ;routine setzen
36 lda #%10000110 ;irq durch sprite-
37 sta mask ;kollision festlegen
38 cli ;irq freigeben
39 rts
40 ;
41 ;neue interruptroutine
42 ;=====================
43 ;
44 irqneu lda request ;irq-register
45 sta request ;loeschen
46 bmi raster ;zum raster - irq
47 ;
48 ;timer-interrupt
49 ;===============
50 ;
51 lda $dc0d ;irq-reg. loeschen
52 cli ;irq zulassen
53 jmp irqalt ;timer-irq-routine
54 ;
55 ;rasterzeilen-interrupt
56 ;======================
57 ;
58 raster lda vic+31 ;spr-hintergr
59 cmp #00:bne back
60 ;
61 ;sprite-sprite kollision
62 ;=======================
63 ;
66 ldx #35
67 l1 ldy #00
68 l2 tya
69 sta vic+39+1 ;sprite1 farbe
70 eor #15
71 sta vic+39+2 ;sprite2 farbe
72 iny
73 bne l2
74 dex
75 bne l1
76 l3 inc vic+3 ;sprite1 absturz
77 ldx #13
78 lp1 ldy #00
79 lp2 iny
80 bne lp2
81 dex
82 bne lp1
87 lda vic+3
88 cmp #220
89 bne l3
100 lda vic+21
101 and #%11111101 ;sprite1 aus
102 sta vic+21
103 lda #00
104 sta vic+30 ;kollision loeschen
105 jmp $febc ;irq beenden
106 ;
107 ;sprite-hintergrung kollision
108 ;============================
109 ;
110 back ldx #35
111 l4 ldy #00
112 l5 tya
113 sta vic+39+2 ;sprite2 farbe
114 iny
115 bne l5
116 dex
117 bne l4
118 l6 inc vic+5 ;sprite2 absturz
119 ldx #13
120 lp3 ldy #00
121 lp4 iny
122 bne lp4
123 dex
124 bne lp3
125 lda vic+5
126 cmp #220
130 bne l6
131 lda vic+21
132 and #%11111011 ;sprite2 aus
133 sta vic+21
134 lda #00
135 sta vic+31 ;kollision loeschen
136 jmp $febc ;irq beenden