(c) 1998 by Enrico Bauermeister
;Datei : listing11.asm
;Beschreibung: Der Schmelzeffekt.
;Autor : Enrico Bauermeister
;Datum : 11.02.1998
;Assembler : TFA AsmOne v1.30
;=================================
;Interrupts sperren - Betriebssystem ausschalten
;-----------------------------------------------
move.w #$4000,$dff09a
;Sprites ausschalten (sonst stören die nur)
;------------------------------------------
move.w #$0020,$dff096
;Bitplanepointer auf unser Bild zeigen lassen
;--------------------------------------------
move.l #picture,d0 ;Adresse des Bildes nach D0
lea bitplanepointer,a1 ;Adresse der Bitplanepointer nach A1
moveq #4,d1 ;Anzahl der Bitplanes -1 (hier sind es 5)
pointbitplanes:
move.w d0,6(a1) ;Low-Word kopieren
swap d0 ;Words in d0 vertauschen
move.w d0,2(a1) ;High-Word kopieren
swap d0 ;Words in d0 wieder vertauschen
add.l #40*256,d0 ;10240 zu D0 dazu zählen (auf nächste
;Bitplane zeigen)
addq.w #8,a1 ;auf Adresse des nächsten Bitplanepointers
;zeigen
dbra d1,pointbitplanes ;Schleife zum eintragen der Adressen in
;die Bitplanepointer
;Copperliste aktivieren
;----------------------
move.l #Copperliste,$dff084
;Warten auf Rasterstrahl (eine 1/50 Sekunde)
;-------------------------------------------
wait:
move.l $dff004,d0
and.l #$fff00,d0
cmp.l #$00003000,d0
bne.s wait
;Schmelzeffekt starten
;---------------------
bsr.w flood
;Linke Maustaste gedrückt ?
;--------------------------
btst #6,$bfe001
bne.s wait
;Sprites wieder einschalten
;--------------------------
move.w #$8020,$dff096
;Interrupts wieder erlauben
;--------------------------
move.w #$c000,$dff09a
;Programmende
;------------
moveq #0,d0
rts
;Schmelzeffekt
;-------------
flood:
tst.b RaufRunter ;Müssen wir rauf oder runter?
beq.w GehRunter
cmp.b #$30,FWAIT ;Sind wir weit genug oben?
beq.s SetzRunter ;Wenn ja, sind wir oben und müssen runter.
subq.b #1,FWAIT ;Runter bewegen.
rts
SetzRunter:
clr.b RaufRunter
rts
GehRunter:
cmp.b #$ff,FWAIT ;Sind wir weit genug unten?
beq.s SetzRauf ;Wenn ja, müssen wir rauf gehen.
addq.b #1,FWAIT ;Rauf bewegen.
rts
SetzRauf:
move.b #$ff,RaufRunter
rts
;Datenbereich
;------------
RaufRunter:
dc.b 0,0
;Copperliste
;-----------
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,$5200 ;BPLCON0
dc.w $0108 ;BPL1MOD
mod1:
dc.w $0000
dc.w $010a ;BPL2MOD
mod2:
dc.w $0000
bitplanepointer:
dc.w $00e0,$0000 ;BPL1PTH
dc.w $00e2,$0000 ;BPL1PTL
dc.w $00e4,$0000 ;BPL2PTH
dc.w $00e6,$0000 ;BPL2PTL
dc.w $00e8,$0000 ;BPL3PTH
dc.w $00ea,$0000 ;BPL3PTL
dc.w $00ec,$0000 ;BPL4PTH
dc.w $00ee,$0000 ;BPL4PTL
dc.w $00f0,$0000 ;BPL5PTH
dc.w $00f2,$0000 ;BPL5PTL
;hier setzt ihr eure Farbpalette aus ArtPRO ein
; | |
; | |
; /
; /
; | |
; | |
FWAIT:
dc.w $3007,$FFFE ;WAIT das dem negativen Modulo vorangeht.
dc.w $108,-40
dc.w $10a,-40
dc.w $ffff,$fffe ;Copperlistenende
;unser Bild
;----------
picture:
incbin "bild.raw" ;statt "bild.raw" setzt ihr den Dateinamen
;eurer RAW-Datei ein
END
Wir nutzen hier "RaufRunter" als Flag, um zu merken ob der Effekt hoch oder
runter "geht". Damit der ganze Effekt überhaupt funktioniert, müssen wir
nur ein WAIT vor die negativen Modulo setzen und diese WAIT bewegen. Um
diesen Effekt "reizvoller" zu gestalten solltet ihr ein Bild nehmen, was
nicht so eintönig ist (am besten siehts bei Fotos aus).
-eb-