This is one of the most important decisions. Reduce the scroller height from
the classic 32 pixel height to 26, because there is not enough CPU time left to do 32 pixel! We can do this because there is no 8 lines/scroll limit when using the hardscroller.master
parent
614af0fc1a
commit
9a76b1d84d
367
PARADIST.S
367
PARADIST.S
|
@ -99,8 +99,6 @@ alles:
|
||||||
bsr.s waitvbl
|
bsr.s waitvbl
|
||||||
move.b #2,$ffff820a.w
|
move.b #2,$ffff820a.w
|
||||||
bsr.s waitvbl
|
bsr.s waitvbl
|
||||||
move.b #0,$ffff820a.w
|
|
||||||
bsr.s waitvbl
|
|
||||||
move.b #2,$ffff820a.w
|
move.b #2,$ffff820a.w
|
||||||
move.b oldres,$ffff8260.w
|
move.b oldres,$ffff8260.w
|
||||||
lea $ffff8201.w,a0
|
lea $ffff8201.w,a0
|
||||||
|
@ -123,6 +121,9 @@ alles:
|
||||||
movem.l (a0),d0-d7
|
movem.l (a0),d0-d7
|
||||||
movem.l d0-d7,(a1)
|
movem.l d0-d7,(a1)
|
||||||
|
|
||||||
|
bsr.s waitvbl
|
||||||
|
move.b #0,$ffff820a.w
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
waitvbl:
|
waitvbl:
|
||||||
|
@ -159,74 +160,79 @@ screen2:
|
||||||
;**********************************************************
|
;**********************************************************
|
||||||
; Distorted scroller by Gunstick
|
; Distorted scroller by Gunstick
|
||||||
lea linebuffbegin,a0
|
lea linebuffbegin,a0
|
||||||
moveq #31,d0
|
moveq #25,d0 ;26 lines are scrolled
|
||||||
initdist:
|
initdist:
|
||||||
move.l #scrolltext,textptr-linebuffbegin(a0)
|
move.l #scrolltext,textptr-linebuffbegin(a0)
|
||||||
move.l a0,a1
|
move.l a0,a1
|
||||||
lea buffer-linebuffbegin(a1),a1
|
lea buffer-linebuffbegin(a1),a1
|
||||||
move.l a1,bufptr-linebuffbegin(a0)
|
move.l a1,bufptr-linebuffbegin(a0)
|
||||||
move.l a1,bufptrinit-linebuffbegin(a0)
|
|
||||||
clr.w bufcnt-linebuffbegin(a0)
|
clr.w bufcnt-linebuffbegin(a0)
|
||||||
clr.w shift-linebuffbegin(a0)
|
clr.w shift-linebuffbegin(a0)
|
||||||
lea linebuffend-linebuffbegin(a0),a0
|
lea linebuffend-linebuffbegin(a0),a0
|
||||||
dbf d0,initdist
|
dbf d0,initdist
|
||||||
|
lea wavetab,a0
|
||||||
|
move.l a0,wavetabptr
|
||||||
|
move.l (a0),a0
|
||||||
|
move.l a0,distwaveptr
|
||||||
|
move.l #megadistadjusttable,megadistadjust
|
||||||
|
|
||||||
|
|
||||||
lea font,a0
|
lea font,a0
|
||||||
lea buffer,a1
|
lea buffer,a1
|
||||||
moveq #31,d0 ;init all unshiftet linebuffers
|
moveq #25,d0 ;init all unshiftet linebuffers
|
||||||
testinitbuff:
|
testinitbuff:
|
||||||
move.l (a0),(a1)+
|
move.l (a0),(a1)+
|
||||||
move.l 2(a0),(a1)+
|
move.l 4(a0),(a1)+
|
||||||
move.l 26*8(a0),(a1)+
|
move.l 32*8(a0),(a1)+
|
||||||
move.l 26*8+4(a0),(a1)+
|
move.l 32*8+4(a0),(a1)+
|
||||||
move.l 26*8*2(a0),(a1)+
|
move.l 32*8*2(a0),(a1)+
|
||||||
move.l 26*8*2+4(a0),(a1)+
|
move.l 32*8*2+4(a0),(a1)+
|
||||||
move.l 26*8*3(a0),(a1)+
|
move.l 32*8*3(a0),(a1)+
|
||||||
move.l 26*8*3+4(a0),(a1)+
|
move.l 32*8*3+4(a0),(a1)+
|
||||||
move.l 26*8*4(a0),(a1)+
|
move.l 32*8*4(a0),(a1)+
|
||||||
move.l 26*8*4+4(a0),(a1)+
|
move.l 32*8*4+4(a0),(a1)+
|
||||||
move.l 26*8*5(a0),(a1)+
|
move.l 32*8*5(a0),(a1)+
|
||||||
move.l 26*8*5+4(a0),(a1)+
|
move.l 32*8*5+4(a0),(a1)+
|
||||||
move.l 26*8*6(a0),(a1)+
|
move.l 32*8*6(a0),(a1)+
|
||||||
move.l 26*8*6+4(a0),(a1)+
|
move.l 32*8*6+4(a0),(a1)+
|
||||||
move.l 26*8*7(a0),(a1)+
|
move.l 32*8*7(a0),(a1)+
|
||||||
move.l 26*8*7+4(a0),(a1)+
|
move.l 32*8*7+4(a0),(a1)+
|
||||||
move.l 26*8*8(a0),(a1)+
|
move.l 32*8*8(a0),(a1)+
|
||||||
move.l 26*8*8+4(a0),(a1)+
|
move.l 32*8*8+4(a0),(a1)+
|
||||||
move.l 26*8*9(a0),(a1)+
|
move.l 32*8*9(a0),(a1)+
|
||||||
move.l 26*8*9+4(a0),(a1)+
|
move.l 32*8*9+4(a0),(a1)+
|
||||||
move.l 26*8*10(a0),(a1)+
|
move.l 32*8*10(a0),(a1)+
|
||||||
move.l 26*8*10+4(a0),(a1)+
|
move.l 32*8*10+4(a0),(a1)+
|
||||||
move.l 26*8*11(a0),(a1)+
|
move.l 32*8*11(a0),(a1)+
|
||||||
move.l 26*8*11+4(a0),(a1)+
|
move.l 32*8*11+4(a0),(a1)+
|
||||||
move.l 26*8*12(a0),(a1)+
|
move.l 32*8*12(a0),(a1)+
|
||||||
move.l 26*8*12+4(a0),(a1)+
|
move.l 32*8*12+4(a0),(a1)+
|
||||||
move.l 26*8*13(a0),(a1)+
|
move.l 32*8*13(a0),(a1)+
|
||||||
move.l 26*8*13+4(a0),(a1)+
|
move.l 32*8*13+4(a0),(a1)+
|
||||||
move.l 26*8*14(a0),(a1)+
|
move.l 32*8*14(a0),(a1)+
|
||||||
move.l 26*8*14+4(a0),(a1)+
|
move.l 32*8*14+4(a0),(a1)+
|
||||||
move.l 26*8*15(a0),(a1)+
|
move.l 32*8*15(a0),(a1)+
|
||||||
move.l 26*8*15+4(a0),(a1)+
|
move.l 32*8*15+4(a0),(a1)+
|
||||||
move.l 26*8*16(a0),(a1)+
|
move.l 32*8*16(a0),(a1)+
|
||||||
move.l 26*8*16+4(a0),(a1)+
|
move.l 32*8*16+4(a0),(a1)+
|
||||||
move.l 26*8*17(a0),(a1)+
|
move.l 32*8*17(a0),(a1)+
|
||||||
move.l 26*8*17+4(a0),(a1)+
|
move.l 32*8*17+4(a0),(a1)+
|
||||||
move.l 26*8*18(a0),(a1)+
|
move.l 32*8*18(a0),(a1)+
|
||||||
move.l 26*8*18+4(a0),(a1)+
|
move.l 32*8*18+4(a0),(a1)+
|
||||||
move.l 26*8*19(a0),(a1)+
|
move.l 32*8*19(a0),(a1)+
|
||||||
move.l 26*8*19+4(a0),(a1)+
|
move.l 32*8*19+4(a0),(a1)+
|
||||||
move.l 26*8*20(a0),(a1)+
|
move.l 32*8*20(a0),(a1)+
|
||||||
move.l 26*8*20+4(a0),(a1)+
|
move.l 32*8*20+4(a0),(a1)+
|
||||||
move.l 26*8*21(a0),(a1)+
|
move.l 32*8*21(a0),(a1)+
|
||||||
move.l 26*8*21+4(a0),(a1)+
|
move.l 32*8*21+4(a0),(a1)+
|
||||||
move.l 26*8*22(a0),(a1)+
|
move.l 32*8*22(a0),(a1)+
|
||||||
move.l 26*8*22+4(a0),(a1)+
|
move.l 32*8*22+4(a0),(a1)+
|
||||||
move.l 26*8*23(a0),(a1)+
|
move.l 32*8*23(a0),(a1)+
|
||||||
move.l 26*8*23+4(a0),(a1)+
|
move.l 32*8*23+4(a0),(a1)+
|
||||||
move.l 26*8*24(a0),(a1)+
|
move.l 32*8*24(a0),(a1)+
|
||||||
move.l 26*8*24+4(a0),(a1)+
|
move.l 32*8*24+4(a0),(a1)+
|
||||||
move.l 26*8*25(a0),(a1)+
|
move.l 32*8*25(a0),(a1)+
|
||||||
move.l 26*8*25+4(a0),(a1)+
|
move.l 32*8*25+4(a0),(a1)+
|
||||||
addq.l #8,a0
|
addq.l #8,a0
|
||||||
lea linebuffend-linebuffbegin-208(a1),a1
|
lea linebuffend-linebuffbegin-208(a1),a1
|
||||||
dbf d0,testinitbuff
|
dbf d0,testinitbuff
|
||||||
|
@ -235,9 +241,6 @@ testinitbuff:
|
||||||
|
|
||||||
lea screenadr,a3
|
lea screenadr,a3
|
||||||
; move.b lowbyte,3(a3)
|
; move.b lowbyte,3(a3)
|
||||||
add.l #0,(a3) ;overscan begins 26 bytes earlier
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bsr waitvbl ;lower border
|
bsr waitvbl ;lower border
|
||||||
move.w #4000,d0
|
move.w #4000,d0
|
||||||
|
@ -245,9 +248,6 @@ firsttopwait:
|
||||||
dbf d0,firsttopwait
|
dbf d0,firsttopwait
|
||||||
;move.b #0,$ffff820a.w
|
;move.b #0,$ffff820a.w
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
loop:
|
loop:
|
||||||
;ULM Hardware Scrolling PART 1
|
;ULM Hardware Scrolling PART 1
|
||||||
;THIS PART IS TO BE STARTED BEFORE THE BEGINNING OF THE VBL
|
;THIS PART IS TO BE STARTED BEFORE THE BEGINNING OF THE VBL
|
||||||
|
@ -405,6 +405,8 @@ overscanloop:
|
||||||
|
|
||||||
;***** Do the 8 following distorter entrys ****
|
;***** Do the 8 following distorter entrys ****
|
||||||
;; first copy the wave to the megadistadjusttable
|
;; first copy the wave to the megadistadjusttable
|
||||||
|
|
||||||
|
;Registerdefs: take care of the order. Modify also the addx.l !!!!
|
||||||
d_0 equr d0
|
d_0 equr d0
|
||||||
d_1 equr d1
|
d_1 equr d1
|
||||||
d_2 equr d2
|
d_2 equr d2
|
||||||
|
@ -420,44 +422,56 @@ a_3 equr a3
|
||||||
moveq #7,d_0 ;read 8
|
moveq #7,d_0 ;read 8
|
||||||
distwaveread:
|
distwaveread:
|
||||||
move.w (a_0)+,d_1
|
move.w (a_0)+,d_1
|
||||||
cmp.w #$8000,d_1
|
cmp.w #128,d_1
|
||||||
bne.s notnextwavetab
|
bne.s notnextwavetab
|
||||||
move.l wavetabptr,a_1 ;next wave to be read
|
move.l wavetabptr,a_1 ;next wave to be read
|
||||||
|
bne.s notendwavetab
|
||||||
|
lea wavetab,a_1 ;reset wavetabptr
|
||||||
|
notendwavetab:
|
||||||
move.l (a_1)+,a_0
|
move.l (a_1)+,a_0
|
||||||
move.w (a_0)+,d_1
|
move.w (a_0)+,d_1
|
||||||
move.l a_1,wavetabptr
|
move.l a_1,wavetabptr
|
||||||
_notnextwavetab:
|
_notnextwavetab:
|
||||||
move.w d_1,-274-8(a_3) ;before
|
move.w d_1,(-274-8)*2(a_3) ;before
|
||||||
move.w d_1,(a_3)+ ;behind
|
move.w d_1,(a_3)+ ;behind
|
||||||
dbf d_0,distwaveread
|
dbf d_0,distwaveread
|
||||||
move.l a_0,distwaveptr
|
move.l a_0,distwaveptr
|
||||||
|
; add.w #8*2,a_3
|
||||||
|
cmp.l #megadistadjusttable+276*4,a_3
|
||||||
|
bmi.s ok
|
||||||
|
; lea (-274-8)*2(a_3),a_3
|
||||||
|
ok:
|
||||||
|
; move.l a_3,megadistadjust
|
||||||
|
|
||||||
;=-| read the new distortions and shift the buffers
|
;=-| read the new distortions and shift the buffers
|
||||||
; letters of font must be 256 bytes !!!!!!!!
|
; letters of font must be 256 bytes !!!!!!!!
|
||||||
lea -32(a_3),a_3 ;scroll begins 32 lines before end of screen
|
lea -12*2(a_3),a_3 ;scroll begins 32 lines before end of screen
|
||||||
lea shift,a_0 ;pointer to the shifts
|
lea shift,a_0 ;pointer to the shifts
|
||||||
move.w #26,count ;scroll has 26 lines
|
move.w #-(26*8),count ;scroll has 26 lines
|
||||||
distcalcloop:
|
distcalcloop:
|
||||||
move.w (a_3)+,d_1
|
move.w (a_3)+,d_1
|
||||||
move.w (a_0),d_2 ;read shift
|
move.w (a_0),d_2 ;read shift
|
||||||
add.w d_1,d_2
|
add.w d_1,d_2
|
||||||
blo.s vorwaerts
|
bmi rueckwaerts
|
||||||
sub.w #16,d_2
|
sub.w #16,d_2
|
||||||
bhs.s rueckwaerts
|
bhs vorwaerts
|
||||||
add.w #16,d_2 ;plenty of time here
|
add.w #16,d_2 ;plenty of time here
|
||||||
move.w d_2,(a_0) ;write back new shift
|
move.w d_2,(a_0) ;write back new shift
|
||||||
indistcalcloop:
|
indistcalcloop:
|
||||||
subq.w #1,count
|
lea linebuffend-linebuffbegin(a_0),a_0 ;next line
|
||||||
|
addq.w #8,count
|
||||||
bne.s distcalcloop
|
bne.s distcalcloop
|
||||||
bra.s copydistscroll
|
bra copydistscroll
|
||||||
notnextwavetab: ;time adjust
|
notnextwavetab: ;time adjust
|
||||||
dcb $4e71,1
|
dcb $4e71,1
|
||||||
bra.s _notnextwavetab
|
bra.s _notnextwavetab
|
||||||
|
|
||||||
|
nottextend:
|
||||||
|
lea 1(a_1),a_1
|
||||||
|
bra.s _nottextend
|
||||||
|
|
||||||
;-> advance this line by one word
|
;-> advance this line by one word
|
||||||
vorwaerts:
|
vorwaerts:
|
||||||
|
|
||||||
move.w d_2,(a_0) ;write back new shift
|
move.w d_2,(a_0) ;write back new shift
|
||||||
move.l textptr-shift(a_0),a_1
|
move.l textptr-shift(a_0),a_1
|
||||||
;movep : 5 nops weniger
|
;movep : 5 nops weniger
|
||||||
|
@ -468,49 +482,72 @@ vorwaerts:
|
||||||
;now we have to write a bit of K and C
|
;now we have to write a bit of K and C
|
||||||
movep.w 0(a_1),d_1 ;previous letter : C
|
movep.w 0(a_1),d_1 ;previous letter : C
|
||||||
movep.w 1(a_1),d_2 ;act letter : K
|
movep.w 1(a_1),d_2 ;act letter : K
|
||||||
lea 1(a_1),a_1
|
tst.b d_1 ;test letter after act : S
|
||||||
|
bne.s nottextend
|
||||||
|
lea scrolltext,a_1
|
||||||
|
_nottextend:
|
||||||
move.l a_1,textptr-shift(a_0) ;textptr points to K
|
move.l a_1,textptr-shift(a_0) ;textptr points to K
|
||||||
clr.b d_1 ;C
|
clr.b d_1 ;C
|
||||||
clr.b d_2 ;K
|
clr.b d_2 ;K
|
||||||
lea font,a_1
|
lea font+(26*8),a_1
|
||||||
movem.w (a_1,d_2),d_0/d_1/d_2/d_3 ;K
|
add.w count,a_1
|
||||||
lea (a_1,d_1),a_1 ;C
|
lea (a_1,d_1),a_2 ;C
|
||||||
;write first buffer
|
; lea (a_1),a_2 ;C
|
||||||
move.l bufptr-shift(a_0),a_2
|
movem.l (a_1,d_2),d_1/d_3 ;K
|
||||||
movem.w d_0/d_1/d_2/d_3,(a_2)
|
; movem.w 256(a_1),d_0/d_1/d_2/d_3 ;K
|
||||||
;prepare shifter
|
;d0:xxxxxxxxxxxxxxxx
|
||||||
|
;d1:aaaaaaaabbbbbbbb
|
||||||
|
;d2:xxxxxxxxxxxxxxxx
|
||||||
|
;d3:ccccccccdddddddd
|
||||||
|
move.w d_1,d_2
|
||||||
|
move.w d_3,d_0
|
||||||
|
;d0:xxxxxxxxdddddddd
|
||||||
|
;d1:aaaaaaaabbbbbbbb
|
||||||
|
;d2:xxxxxxxxbbbbbbbb
|
||||||
|
;d3:ccccccccdddddddd
|
||||||
swap d_0
|
swap d_0
|
||||||
swap d_1
|
|
||||||
swap d_2
|
swap d_2
|
||||||
swap d_3
|
;d0:ddddddddxxxxxxxxx
|
||||||
move.w (a_1)+,d_3 ;C
|
;d1:aaaaaaaabbbbbbbbb
|
||||||
move.w (a_1)+,d_0
|
;d2:bbbbbbbbxxxxxxxxx
|
||||||
move.w (a_1)+,d_1
|
;d3:ccccccccddddddddd
|
||||||
move.w (a_1)+,d_2
|
move.l bufptr-shift(a_0),a_1
|
||||||
|
;prepare shifter
|
||||||
|
move.w (a_2)+,d_0
|
||||||
|
move.w (a_2)+,d_1
|
||||||
|
move.w (a_2)+,d_2
|
||||||
|
move.w (a_2)+,d_3 ;C
|
||||||
;uff one line of the 2 letters is in d0-d3
|
;uff one line of the 2 letters is in d0-d3
|
||||||
;d0 bbbbbbbb|AAAAAAAA
|
;d0 dddddddd|AAAAAAAA
|
||||||
;d1 cccccccc|BBBBBBBB
|
;d1 aaaaaaaa|BBBBBBBB
|
||||||
;d2 dddddddd|CCCCCCCC
|
;d2 bbbbbbbb|CCCCCCCC
|
||||||
;d3 aaaaaaaa|DDDDDDDD
|
;d3 cccccccc|DDDDDDDD
|
||||||
|
;write first buffer
|
||||||
|
movem.w d_0/d_1/d_2/d_3,(a_1)
|
||||||
|
lea 26*8(a_1),a_1 ;~8
|
||||||
|
|
||||||
rept 15
|
rept 15
|
||||||
swap d_3 ;~4
|
move #0,ccr
|
||||||
addx.w d3,d3 ;~4 ;got a bit for A
|
swap d_1 ;~4
|
||||||
swap d_3 ;~4
|
addx.w d1,d1 ;~4 ;a out
|
||||||
addx.l d0,d0 ;~8 ;a in and b out
|
swap d_1 ;~4
|
||||||
addx.l d1,d1 ;~8 ;b in and c out
|
addx.l d0,d0 ;~8 ;a in and d out
|
||||||
addx.l d2,d2 ;~8 ;c in and d out
|
addx.l d3,d3 ;~8 ;d in and c out
|
||||||
addx.w d3,d3 ;~4 ;d in
|
addx.l d2,d2 ;~8 ;c in and b out
|
||||||
movem.w d_0/d_1/d_2/d_3,(a_2) ;~28
|
addx.w d1,d1 ;~4 ;b in
|
||||||
lea 26*8(a_2),a_2 ;~8
|
movem.w d_0/d_1/d_2/d_3,(a_1) ;~28
|
||||||
|
lea 26*8(a_1),a_1 ;~8
|
||||||
endr
|
endr
|
||||||
cmp.w #25,bufcnt-shift(a_0)
|
asd:
|
||||||
bls.s vorbufok
|
cmp.w #25*4,bufcnt-shift(a_0)
|
||||||
move.w #-1,bufcnt-shift(a_0) ;screenwidth = 26 words
|
blo.s vorbufok
|
||||||
|
move.w #0,bufcnt-shift(a_0) ;screenwidth = 26 words
|
||||||
sub.l #25*8,bufptr-shift(a_0)
|
sub.l #25*8,bufptr-shift(a_0)
|
||||||
bra.s indistcalcloop
|
bra indistcalcloop
|
||||||
vorbufok:
|
vorbufok:
|
||||||
addq.w #1,bufcnt-shift(a_0)
|
addq.w #4,bufcnt-shift(a_0)
|
||||||
bra.s indistcalcloop
|
add.l #8,bufptr-shift(a_0)
|
||||||
|
bra indistcalcloop
|
||||||
|
|
||||||
|
|
||||||
;-< back this line by one word
|
;-< back this line by one word
|
||||||
|
@ -518,10 +555,11 @@ rueckbufok:
|
||||||
dcb $4e71,1
|
dcb $4e71,1
|
||||||
bra.s _rueckbufok
|
bra.s _rueckbufok
|
||||||
rueckwaerts:
|
rueckwaerts:
|
||||||
|
add.w #16,d_2
|
||||||
move.w d_2,(a_0) ;write back new shift
|
move.w d_2,(a_0) ;write back new shift
|
||||||
subq.w #1,bufcnt-shift(a_0)
|
subq.w #4,bufcnt-shift(a_0)
|
||||||
bhs.s rueckbufok
|
bhs.s rueckbufok
|
||||||
move.w #25,bufcnt-shift(a_0) ;screenwidth = 26 words
|
move.w #25*4,bufcnt-shift(a_0) ;screenwidth = 26 words
|
||||||
add.l #25*8,bufptr-shift(a_0)
|
add.l #25*8,bufptr-shift(a_0)
|
||||||
_rueckbufok:
|
_rueckbufok:
|
||||||
move.l textptr-shift(a_0),a_1
|
move.l textptr-shift(a_0),a_1
|
||||||
|
@ -539,20 +577,20 @@ _rueckbufok:
|
||||||
clr.b d_1 ;E
|
clr.b d_1 ;E
|
||||||
clr.b d_2 ;A
|
clr.b d_2 ;A
|
||||||
lea font,a_1
|
lea font,a_1
|
||||||
|
lea (a_1,d_1),a_2 ;E
|
||||||
movem.w (a_1,d_2),d_0/d_1/d_2/d_3 ;A
|
movem.w (a_1,d_2),d_0/d_1/d_2/d_3 ;A
|
||||||
lea (a_1,d_1),a_1 ;E
|
|
||||||
;write first buffer
|
;write first buffer
|
||||||
move.l bufptr-shift(a_0),a_2
|
move.l bufptr-shift(a_0),a_1
|
||||||
movem.w d_0/d_1/d_2/d_3,(a_2)
|
movem.w d_0/d_1/d_2/d_3,(a_1)
|
||||||
;prepare shifter
|
;prepare shifter
|
||||||
swap d_0
|
swap d_0
|
||||||
swap d_1
|
swap d_1
|
||||||
swap d_2
|
swap d_2
|
||||||
swap d_3
|
swap d_3
|
||||||
move.w (a_1)+,d_3 ;E
|
move.w (a_2)+,d_3 ;E
|
||||||
move.w (a_1)+,d_0
|
move.w (a_2)+,d_0
|
||||||
move.w (a_1)+,d_1
|
move.w (a_2)+,d_1
|
||||||
move.w (a_1)+,d_2
|
move.w (a_2)+,d_2
|
||||||
;uff one line of the 2 letters is in d0-d3
|
;uff one line of the 2 letters is in d0-d3
|
||||||
; A E
|
; A E
|
||||||
;d0 bbbbbbbb|AAAAAAAA
|
;d0 bbbbbbbb|AAAAAAAA
|
||||||
|
@ -567,48 +605,48 @@ _rueckbufok:
|
||||||
addx.l d1,d1 ;~8 ;b in and c out
|
addx.l d1,d1 ;~8 ;b in and c out
|
||||||
addx.l d2,d2 ;~8 ;c in and d out
|
addx.l d2,d2 ;~8 ;c in and d out
|
||||||
addx.w d3,d3 ;~4 ;d in
|
addx.w d3,d3 ;~4 ;d in
|
||||||
movem.w d_0/d_1/d_2/d_3,(a_2) ;~28
|
movem.w d_0/d_1/d_2/d_3,(a_1) ;~28
|
||||||
lea 26*8(a_2),a_2 ;~8
|
lea 26*8(a_1),a_1 ;~8
|
||||||
endr
|
endr
|
||||||
bra.s indistcalcloop
|
bra indistcalcloop
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
notnextwavetab: ;time adjust
|
|
||||||
dcb $4e71,1
|
|
||||||
bra.s _notnextwavetab
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
copydistscroll:
|
copydistscroll:
|
||||||
;**** Copy all the buffers to the screen ****
|
;**** Copy all the buffers to the screen ****
|
||||||
move.l screenadr,a6 ;put it there
|
move.l screenadr,a6 ;put it there
|
||||||
add.l #6*160,a6 ;for hwscroll
|
add.l #6*160,a6 ;for hwscroll
|
||||||
lea buffer,a5
|
lea buffer,a4
|
||||||
moveq #25,d0 ;scrollhigh:26
|
moveq #25,d0 ;scrollhigh:26
|
||||||
not $ffff8240.w
|
; not $ffff8240.w
|
||||||
scrollcpy:
|
scrollcpy:
|
||||||
move.w bufcnt-buffer(a5),d1
|
move.w shift-buffer(a4),d1
|
||||||
|
mulu #208,d1
|
||||||
|
; lea 208*15(a4),a5
|
||||||
|
lea (a4,d1),a5
|
||||||
|
; move.w #0,d1
|
||||||
|
move.w bufcnt-buffer(a4),d1
|
||||||
lea cpyjsr,a0
|
lea cpyjsr,a0
|
||||||
move.l (a0,d1),a0
|
move.l (a0,d1),a0
|
||||||
jsr (a0) ;(a5)+ -> (a6)
|
jsr (a0) ;(a5)+ -> (a6)
|
||||||
lea 230(a6),a6
|
lea 230(a6),a6
|
||||||
lea linebuffend-linebuffbegin-208(a5),a5
|
lea linebuffend-linebuffbegin(a4),a4
|
||||||
dbf d0,scrollcpy
|
dbf d0,scrollcpy
|
||||||
not $ffff8240.w
|
; not $ffff8240.w
|
||||||
|
|
||||||
|
|
||||||
lea bufcnt,a5
|
; lea bufcnt,a5
|
||||||
moveq #25,d0 ;scrollhigh:26
|
; moveq #25,d0 ;scrollhigh:26
|
||||||
wordscroll:
|
;wordscroll:
|
||||||
add.w #4,(a5)
|
; add.w #4,(a5)
|
||||||
cmp.w #4*26,(a5)
|
; cmp.w #4*26,(a5)
|
||||||
bne.s notend
|
; bne.s notend
|
||||||
clr.w (a5)
|
; clr.w (a5)
|
||||||
notend:
|
;notend:
|
||||||
lea linebuffend-linebuffbegin(a5),a5
|
; lea linebuffend-linebuffbegin(a5),a5
|
||||||
dbf d0,wordscroll
|
; dbf d0,wordscroll
|
||||||
|
|
||||||
; lea font,a0
|
; lea font,a0
|
||||||
; move.l screenadr,a1 ;put it there
|
; move.l screenadr,a1 ;put it there
|
||||||
|
@ -1241,20 +1279,67 @@ cpy25: ;9,9,9,9,9,5+2
|
||||||
|
|
||||||
;**********************************************************
|
;**********************************************************
|
||||||
; Distorted scroller by Gunstick
|
; Distorted scroller by Gunstick
|
||||||
|
font equ *-32*8
|
||||||
|
incbin "font.bin"
|
||||||
|
even
|
||||||
count:
|
count:
|
||||||
dc.l 0 ;for some dbf without register
|
dc.l 0 ;for some dbf without register
|
||||||
|
distwaveptr:
|
||||||
;Panic buffer for scrolltext
|
dc.l 0 ;pointer in one distwave
|
||||||
|
wavetabptr:
|
||||||
|
dc.l 0 ;pointer to the next wave to be played
|
||||||
|
megadistadjust:
|
||||||
|
dc.l 0 ;pointer to the distorter adjust table
|
||||||
|
ds.w 1600 ;panic for table
|
||||||
|
megadistadjusttable:
|
||||||
|
dcb 3,274*2+100 ;adjusttable for the two distorters
|
||||||
|
ds.w 1600 ;panic for table
|
||||||
|
wavetab:
|
||||||
|
dc.l dreieck
|
||||||
|
dc.l 0 ;end
|
||||||
|
; !!!!!! negativ = normal scroll direction !!!!!!
|
||||||
|
dreieck:
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 2,2,2,2,2,2,2,2
|
||||||
|
dc.w 2,2,2,2,2,2,2,2
|
||||||
|
dc.w 3,3,3,3,3,3,3,3
|
||||||
|
dc.w 2,2,2,2,2,2,2,2
|
||||||
|
dc.w 2,2,2,2,2,2,2,2
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 0,0,0,0,0,0,0,0
|
||||||
|
dc.w 0,0,0,0,0,0,0,0
|
||||||
|
dc.w 0,0,0,0,0,0,0,0
|
||||||
|
dc.w 0,0,0,0,0,0,0,0,128
|
||||||
|
dc.w 16,16,16,16,16,16,16,16
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w -1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 1,1,1,1,1,1,1,1
|
||||||
|
dc.w 128
|
||||||
|
;Panic buffer for scrolltext
|
||||||
dc.b 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
|
dc.b 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
|
||||||
dc.b 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
|
dc.b 01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01
|
||||||
scrolltext:
|
scrolltext:
|
||||||
|
dc.b 87,87
|
||||||
dc.b 01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20
|
dc.b 01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20
|
||||||
dc.b 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
|
dc.b 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40
|
||||||
|
dc.b 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
|
||||||
|
dc.b 61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80
|
||||||
|
dc.b 81,82,83,84,85,86,87
|
||||||
dc.b 0
|
dc.b 0
|
||||||
even
|
even
|
||||||
font:
|
|
||||||
incbin "font.bin"
|
|
||||||
even
|
|
||||||
linebuffbegin:
|
linebuffbegin:
|
||||||
textptr:
|
textptr:
|
||||||
dc.l 0 ;letter not completly copied into buffer (forward)
|
dc.l 0 ;letter not completly copied into buffer (forward)
|
||||||
|
|
Loading…
Reference in New Issue