home *** CD-ROM | disk | FTP | other *** search
- 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
-