(c) 1998 by Enrico Bauermeister
;Datei : listing14.asm ;Beschreibung: Ein Sprite wird angezeigt und bewegt. ;Autor : Enrico Bauermeister ;Datum : 12.02.1998 ;Assembler : TFA AsmOne v1.30 ;=================================================== ;Interrupts sperren - Betriebssystem ausschalten ;----------------------------------------------- move.w #$4000,$dff09a ;Bitplanepointer in Copperliste eintragen ;---------------------------------------- move.l #bitplane,d0 lea bitplanepointer,a1 move.w d0,6(a1) swap d0 move.w d0,2(a1) ;Spritepointer in Copperliste eintragen ;-------------------------------------- move.l #sprite,d0 lea spritepointer,a1 move.w d0,6(a1) swap d0 move.w d0,2(a1) ;Copperliste aktivieren ;---------------------- move.l #Copperliste,$dff084 ;pruefen ob wir schon an Zeile 255 angekommen sind ;------------------------------------------------- pruefe: cmpi.b #$ff,$dff006 bne.s pruefe ;Sprite bewegen ;-------------- bsr.w MoveSprite ;pruefen on wir noch auf Zeile 255 sind, und auf Zeile 0 warten ;-------------------------------------------------------------- warte: cmpi.b #$ff,$dff006 beq.s warte ;Linke Maustaste gedrueckt ? ;--------------------------- btst #6,$bfe001 bne.s pruefe ;Interrupts wieder erlauben ;-------------------------- move.w #$c000,$dff09a ;Programmende ;------------ moveq #0,d0 rts ;Routine um den Sprite zu bewegen ;-------------------------------- MoveSprite: tst.b richtung beq.w nach_rechts lea hstart,a0 cmpi.b #$40,(a0) ;Sprite schon ganz links? beq rechts subq.b #1,hstart ;Sprite nach links bewegen. rts rechts: clr.b richtung rts nach_rechts: lea hstart,a0 cmpi.b #$d8,(a0) ;Sprite schon ganz rechts? beq links addq.b #1,hstart ;Sprite nach rechts bewegen. rts links: move.b #$ff,richtung rts ;Datenbereich ;------------ richtung: dc.b 0,0 ;Copperliste definieren ;---------------------- SECTION Cl,CODE_C Copperliste: dc.w $008e,$2c81 ;DIWSTRT dc.w $0090,$2cc1 ;DIWSTOP dc.w $0092,$0038 ;DDFSTRT dc.w $0094,$00d0 ;DDFSTOP dc.w $0100,$1200 ;BPLCON0 dc.w $0108,$0000 ;BPL1MOD dc.w $010a,$0000 ;BPL2MOD bitplanepointer: dc.w $00e0,$0000 ;BPL1PTH dc.w $00e2,$0000 ;BPL1PTL spritepointer: dc.w $0120,$0000 ;SPR0PTH dc.w $0122,$0000 ;SPR0PTL dc.w $0124,$0000 ;SPR1PTH dc.w $0126,$0000 ;SPR1PTL dc.w $0128,$0000 ;SPR2PTH dc.w $012a,$0000 ;SPR2PTL dc.w $012c,$0000 ;SPR3PTH dc.w $012e,$0000 ;SPR3PTL dc.w $0130,$0000 ;SPR4PTH dc.w $0132,$0000 ;SPR4PTL dc.w $0134,$0000 ;SPR5PTH dc.w $0136,$0000 ;SPR5PTL dc.w $0138,$0000 ;SPR6PTH dc.w $013a,$0000 ;SPR6PTL dc.w $013c,$0000 ;SPR7PTH dc.w $013e,$0000 ;SPR7PTL dc.w $0180,$0000 ;COLOR00 dc.w $0182,$0000 ;COLOR01 dc.w $0102,$0000 ;COLOR16 dc.w $01a2,$0fed ;COLOR17 dc.w $01a4,$0fa0 ;COLOR18 dc.w $01a6,$0820 ;COLOR19 dc.w $ffff,$fffe ;Ende der Copperliste ;Spritedefinition ;---------------- sprite: ; ;Sprite hat eine Höhe von 15 Punkten ; dc.b $64 ;VSTART - von $2c bis $f2 hstart: dc.b $87 ;HSTART - von $40 bis $d8 dc.b $73 ;VSTOP - $64+15=$73 dc.b $00 ;control bits ; ;Spritedaten aus ArtPRO ; dc.w $0820,$0FE0 dc.w $2FC8,$3038 dc.w $5304,$609C dc.w $2C60,$410C dc.w $E822,$810E dc.w $6820,$810E dc.w $6000,$939E dc.w $6000,$9FFE dc.w $4000,$AFEE dc.w $4000,$B39E dc.w $C002,$B83E dc.w $0000,$7C7C dc.w $4004,$7FFC dc.w $2008,$3FF8 dc.w $0830,$0FF0 dc.w $0000,$0000 ;Ende des Sprites ;Bitplane definieren ;------------------- SECTION ZielBitplane,BSS_C bitplane: ds.b 40*256 END In diesem Listing wird wieder Sprite "sprite.iff" benutzt.
-eb-