; A little 'roller' routine

Roller		bsr	RollerMain
RollerBorder	move.l	#RollScreenData,a0	; draw border...
		move.l	#5,d0
		move.l	#160,d1
RollerBordrLoop	or.b	#$02,(a0)		; ...4 'lines' at a time
		or.b	#$20,39(a0)
		or.b	#$02,40(a0)
		or.b	#$20,79(a0)
		or.b	#$02,80(a0)
		or.b	#$20,119(a0)
		or.b	#$02,120(a0)
		or.b	#$20,159(a0)
		add.l	d1,a0
		dbf	d0,RollerBordrLoop
		rts
RollerMain	tst.b	RollState		; check if waiting
		beq	Roll_Wait
Roll_Roll	tst.b	RollSpeedCount		; if rolling, check speed
		beq	Roll_RollMess
		sub.b	#1,RollSpeedCount
		rts		; OH SOD IT - I'M NOT COMMENTING ANY MORE!
Roll_RollMess	move.b	RollSpeed,RollSpeedCount
		tst.b	RollCounter
		beq	Roll_StartWait
Roll_Move	sub.b	#1,RollCounter
		move.l	CurrentRollAddr,a0
		move.b	(a0),d0
		btst	#7,d0
		bne	Roll_MoveItDn
		bra	Roll_MoveItUp
Roll_StartWait	move.l	CurrentRollAddr,a0
		move.b	39(a0),RollWaitCounter
		move.b	#0,RollState
Roll_Wait	tst.b	RollWaitCounter
		beq	Roll_StartMove
		sub.b	#1,RollWaitCounter
		rts
Roll_StartMove	bsr	Roll_NextData
		bsr	Roll_Move
		move.b	#1,RollState
		move.b	#7,RollCounter
		move.l	CurrentRollAddr,a0
		move.b	(a0),d0
		btst	#7,d0
		bne	Roll_StartMoveD
		sub.b	#1,d0
		move.b	d0,RollSpeed
		move.b	d0,RollSpeedCount
		rts
Roll_StartMoveD	move.b	#255,d1
		sub.b	d0,d1
		move.b	d1,RollSpeed
		move.b	d1,RollSpeedCount
		rts
Roll_MoveItUp	move.l	#RollScreenData,a0
		move.l	#RollScreenData+40,a1
		move.l	#79,d0
Roll_MIU_Loop	move.l	(a1)+,(a0)+
		move.l	(a1)+,(a0)+
		move.l	(a1)+,(a0)+
		move.l	(a1)+,(a0)+
		dbf	d0,Roll_MIU_Loop
		rts
Roll_MoveItDn	move.l	#RollScreenData+960,a0
		move.l	#RollScreenData+920,a1
		move.l	#79,d0
Roll_MID_Loop	move.l	-(a1),-(a0)
		move.l	-(a1),-(a0)
		move.l	-(a1),-(a0)
		move.l	-(a1),-(a0)
		dbf	d0,Roll_MID_Loop
		rts
Roll_GetNewData	move.l	NewRollAddr,a0
		add.l	#1,a0
		move.l	#RollNewData1,a1
		move.l	#RollNewData2,a2
		move.l	#RollCharset,d2
		move.l	#1,d3
		move.b	#32,d4
		moveq.l	#0,d5
		move.l	#37,d0
Roll_GND_Loop1	move.l	d5,d1
		move.b	(a0)+,d1
		sub.b	d4,d1
		asl	#3,d1
		add.l	d2,d1
		move.l	d1,a3
		add.l	d3,a1
		add.l	d3,a2
		move.b	(a3),(a1)
		move.b	(a3)+,(a2)
		move.b	(a3),40(a1)
		move.b	(a3)+,40(a2)
		move.b	(a3),80(a1)
		move.b	(a3)+,80(a2)
		move.b	(a3),120(a1)
		move.b	(a3)+,120(a2)
		move.b	(a3),160(a1)
		move.b	(a3)+,160(a2)
		move.b	(a3),200(a1)
		move.b	(a3)+,200(a2)
		move.b	(a3),240(a1)
		move.b	(a3)+,240(a2)
		move.b	(a3),280(a1)
		move.b	(a3)+,280(a2)
		dbf	d0,Roll_GND_Loop1
		rts
Roll_NextData	move.l	NewRollAddr,CurrentRollAddr
		add.l	#40,NewRollAddr
		move.l	NewRollAddr,a0
		tst.b	(a0)
		beq	RestartRoller
		bra	Roll_GetNewData
RestartRoller	move.l	#roll0,CurrentRollAddr
		move.l	#roll1,NewRollAddr
		bra	Roll_GetNewData

RollZeroData1	dcb.b	40,0
RollNewData1	dcb.b	320,0
RollScreenData	dcb.b	960,0
RollNewData2	dcb.b	320,0
RollZeroData2	dcb.b	40,0

RollCharset	include	"asrc:fontsrc/HsSpace.fontsrc"

		even

CurrentRollAddr	dc.l	roll0		; line in center section
NewRollAddr	dc.l	roll1		; line to roll into top/bottom section
RollWaitCounter	dc.b	0		; 0 = do next line
RollSpeedCount	dc.b	0		; 0 = advance line 1 pixel
RollCounter	dc.b	0		; 0 = start wait
RollState	dc.b	0
RollSpeed	dc.b	0

		even

roll0	dc.b	002,"                                      ",0
roll1	dc.b	002,"                                      ",0
	dc.b	002,"               HI DUDES               ",200
	dc.b	001,"                                      ",0
	dc.b	001,"   THIS IS A DEMO BY THE 81ST TRACK   ",200
	dc.b	001,"                                      ",0
	dc.b	001,"      CODED ENTIRELY BY AARDVARK      ",100
	dc.b	001,"                                      ",0
	dc.b	001,"AS THE EXTRA SECTION OF THE MUSIC DISK",250
	dc.b	001,"                                      ",0
	dc.b	001," LEFT MOUSE BUTTON TO START 'THE END' ",250
	dc.b	001,"                                      ",0
	dc.b	001,"FIRST OF ALL,  LET ME HAND YOU OVER TO",50
	dc.b	002,"                                      ",0
	dc.b	002,"       THE 81ST TRACK GREETINGS       ",150
	dc.b	002,"                                      ",0
	dc.b	002,"                                      ",0
	dc.b	002,"                                      ",0
	dc.b	001,"              RED SECTOR              ",50
	dc.b	255,"                                      ",0
	dc.b	255,"                REBELS                ",50
	dc.b	001,"                                      ",0
	dc.b	001,"                S.A.E.                ",50
	dc.b	255,"                                      ",0
	dc.b	255,"               SCOOPEX                ",50
	dc.b	001,"                                      ",0
	dc.b	001,"               ANARCHY                ",50
	dc.b	255,"                                      ",0
	dc.b	255,"               SILENTS                ",50
	dc.b	001,"                                      ",0
	dc.b	001,"          MAHONEY AND KAKTUS          ",50
	dc.b	255,"                                      ",0
	dc.b	255,"               BUDBRAIN               ",50
	dc.b	001,"                                      ",0
	dc.b	001,"               KEFRENS                ",50
	dc.b	255,"                                      ",0
	dc.b	255,"                                      ",50
	dc.b	001,"                                      ",0
	dc.b    001,"  IF YOU FEEL LEFT OUT, DON'T WORRY,  ",0
	dc.b	001,"  AS WE MIGHT GREET SOME MORE PEOPLE  ",150
	dc.b	001,"    DURING THE REST OF THE ROLLER.    ",0
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",100
	dc.b	001,"                                      ",0
	dc.b	001,"                  10                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   9                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   8                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   7                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   6                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   5                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   4                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   3                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   2                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   1                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"                   0                  ",34
	dc.b	001,"                                      ",0
	dc.b	001,"              PARTY TIME!             ",34
	dc.b	001,"                                      ",0
	dc.b	001,"  TURN THE MUSIC UP AND GET ON DOWN!  ",34
	dc.b	254,"                                      ",0
	dc.b	254,"   THE MUSIC WAS WRITTEN BY ME AND    ",50
	dc.b	254,"                                      ",0
	dc.b	254,"INCLUDES A BRAND NEW SOUND COURTESY OF",50
	dc.b	254,"                                      ",0
	dc.b	254," A YAMAHA PSS-680 AND TWO SMALL WIRES ",50
	dc.b	254,"                                      ",0
	dc.b	254,"   CONNECTING MIDI OUT TO MIDI IN!!   ",50
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	254,"--------------------------------------",0
	dc.b	254,"AARDVARK OFF             POWERSLAVE ON",50
	dc.b	254,"--------------------------------------",0
	dc.b	254,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	001,"POWER TEXT - POWER TEXT - POWER TEXT  ",0
	dc.b	001," POWER TEXT - POWER TEXT - POWER TEXT ",250
	dc.b	254,"  POWER TEXT - POWER TEXT - POWER TEXT",0
	dc.b	254,"                                      ",0
	dc.b	254,"                                      ",50
	dc.b	254,"                                      ",0
	dc.b	254,"--------------------------------------",0
	dc.b	254,"POWERSLAVE OFF             AARDVARK ON",50
	dc.b	254,"--------------------------------------",0
	dc.b	254,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	001,"ROUND                                 ",0
	dc.b	001,"   AND                                ",0
	dc.b	001,"      ROUND                           ",0
	dc.b	001,"         THE                          ",0
	dc.b	001,"            ROLLER                    ",0
	dc.b	001,"               GOES                   ",0
	dc.b	001,"                  AND                 ",0
	dc.b	001,"                     NOT              ",0
	dc.b	001,"                        A             ",0
	dc.b	001,"                           BLIT       ",0
	dc.b	001,"                              IN      ",0
	dc.b	001,"                                 SIGHT",0
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",50
	dc.b	253,"                                      ",0
	dc.b	253,"            AARDVARK SAYS             ",0
	dc.b	253,"                                      ",0
	dc.b	253,"NEVER WORK IT OUT WHILE YOU CAN CHEAT!",0
	dc.b	253,"                                      ",0
	dc.b	253,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	254,"--------------------------------------",0
	dc.b	254,"   AND NOW FOR A FEW TECHIE DETAILS   ",100
	dc.b	003,"--------------------------------------",0
	dc.b	003,"                                      ",0
	dc.b	003,"ROLLER:  24 PIXELS HIGH, DONE BY 68000",100
	dc.b	003,"                                      ",0
	dc.b	003,"ROLLER FONT: RIPPED FROM A SPECCY GAME",100
	dc.b	003,"                                      ",0
	dc.b	003,"PAGED TEXT:   220 CHARS, DONE BY 68000",100
	dc.b	003,"                                      ",0
	dc.b	003,"PAGED TEXT FONT:  BASED ON ROLLER FONT",100
	dc.b	003,"                                      ",0
	dc.b	003,"MUSIC:  144K, MADE IN NOISETRACKER 2.0",100
	dc.b	003,"                                      ",0
	dc.b	003,"SCROLL:    44 PIXELS HIGH MAX, 6 FONTS",100
	dc.b	003,"                                      ",0
	dc.b	003,"SCROLL:    BLITTED (3 BLITS PER FRAME)",100
	dc.b	003,"                                      ",0
	dc.b	003,"MOST SCROLL FONTS RIPPED FROM A MAC!!!",100
	dc.b	003,"                                      ",0
	dc.b	003,"BOBS:    60 BOBS, (BLITTED, OF COURSE)",100
	dc.b	003,"                                      ",0
	dc.b	003,"                                      ",0
	dc.b	003,"                                      ",0
	dc.b	003,"                                      ",0
	dc.b	002,"              THANKS TO:              ",50
	dc.b	002,"                                      ",0
	dc.b	002,"        HISOFT  FOR  DEVPAC V2        ",100
	dc.b	002,"                                      ",0
	dc.b	002,"     COMMODORE  FOR  THE AMIGA 500    ",100
	dc.b	002,"                                      ",0
	dc.b	002," APPLE COMPUTERS INC  FOR  MACINTOSHS ",80
	dc.b	001,"                                      ",0
	dc.b	001,"       (GREAT SOURCE FOR FONTS)       ",20
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	002,"                                      ",0
	dc.b	002,"    BUT WHY AM I TYPING THIS TEXT?    ",100
	dc.b	004,"                                      ",0
	dc.b	004," MUST BE BECAUSE I AM AT THE KEYBOARD ",0
	dc.b	004,"                                      ",0
	dc.b	004,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	001,"   PAY ATTENTION WHILE I AM TYPING!   ",0
	dc.b	001,"                                      ",0
	dc.b	255,"                                      ",0
	dc.b	255,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	001,"                                      ",0
	dc.b	255,"                                      ",250
	dc.b	254,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	254,"                                      ",0
	dc.b	0

	even