rout			;when this is off, the routine-file will be
			;assembled, on=testing
			
;debug			;when this is on, colors in the background will
			;show how much time the routine needs.


routinemode	equ	14431	;the routinemode !


; the first part of the source handles the things that are necessary to
; show the picture/copper and playing of the routine.
; the part between the "***" lines is the routine-source.
; at the bottom of the file, there are the necessary incbin-files who
; are needed to test the routine.
; these are saved with "save effect" in videotracker. they are raw
; data files which can be fonts,pictures,landscapes,vectorobjects
; etcetra.
; the incbin-files are put in the "variables" table, in the routine-
; player-handler
; the place where it's done can be found by searching for "!!!"


	opt	a+	;devpac 3 optimize
	opt	o+

	ifd	rout
	
	;videotracker routine-test

	incdir	"videotracker:include/"
	include	"exec/types.i"
	include	"graphics/gfxbase.i"
	include	"lvo/graphics_lib.i"
	incdir	'videotracker:effect/'

vew_wid	equ	44
vew_hgt	equ	290
win_hgt	equ	117
win_str	equ	$1a

	SECTION	1,CODE_C
tus
	lea	var,a0			;communication-table

	move.l	#rotincobj,var_obj1(a0)	;incbinfile !!!
	move.l	#rotincbck,var_bck(a0)	;incbinfile !!!


	move.l	($4).w,a6
	sub.l	a1,a1
	jsr	-$126(a6)		;findtask
	move.l	d0,curtsk
	move.l	d0,a0
	move.l	$b8(a0),tskpri

	lea	dosnam,a1		;doslib openen
	moveq.l	#0,d0
	move.l	(4).w,a6
	jsr	-408(a6)		;openlib
	move.l	d0,doslib

	bsr.s	label5			;videotracker opstarten
	
	move.l	curtsk,a0
	move.l	tskpri,$b8(a0)
	move.l	($4).w,a6
	jsr	-$84(a6)		;forbid

	move.l	doslib,a1
	move.l	(4).w,a6
	jsr	-414(a6)		;closelib

	moveq.l	#0,d0
	rts
	
label5
	move.l	(4).w,a6		;workbench gedoe
	move.b	530(a6),ntscmode	;50/60 hertz halen

	cmp.b	#50,ntscmode		;ntsc ?
	beq.s	str.ntsc
	move.l	#vew_hgt-56,hogscr	;set NTSC screen hight
str.ntsc

	move.l	(4).w,a6		;68030 cache off 
	jsr	-120(a6)

	btst.b	#1,297(a6)
	beq.s	str.nfc
	lea.l	str.ft,a5
	jsr	-30(a6)
str.nfc
	jsr	-126(a6)
	bra.s	str.fc
	
str.ft
	dc.w	$4e7a,2
	bclr	#0,d0
	bset	#13,d0
	dc.w	$4e7b,2
	rte
str.fc

	lea	cprjmp,a2		;copjmp zetten !
	move.l	#cprbck-8,d0
	move.w	d0,6(a2)
	swap	d0
	move.w	d0,2(a2)

	lea	cprbck-8,a2		;copstr zetten !
	move.l	#cpr,d0
	move.w	d0,6(a2)
	swap	d0
	move.w	d0,2(a2)

	bsr	cprsprrem		;sprites legen

	lea	gfxnam,a1		;graphics lib openen
	move.l	(4).w,a6
	jsr	-408(a6)		;openlib
	move.l	d0,a6
	move.l	d0,gfxlib
	move.l	38(a6),oldcprlist

	bset	#1,$bfe001
	bsr	copbuf			;copper vullen

	bsr	sysoff

gadrun
	btst	#6,($bfe001).l
	bne	gadrun

scrend
scrend.play
	bsr	syson

	move.l	gfxlib,a1
	move.l	(4).w,a6
	jsr	-414(a6)		;closelib

scrend.qb
	moveq.l	#0,d0	
	rts
	
	;vertical blank interrupt, no blits.
	;handles counters,interlace,sprite
	;level 3

intvb
	bra.s	intvb.cnt
	dc.l	'VIDU'
	dc.l	'LOOP'
intvb.cnt
	movem.l	d0-d7/a0-a6,-(sp)
	lea	($dff000).l,a6

	move.w	$01e(a6),d0
	btst	#5,d0			;vblank ?
	bne.s	intvb.vb

	bra.s	intcop.end

intvb.vb
	bsr	grap
	bsr	palctr			;palette zetten
	bsr.s	copbuf			;copper vullen
	
intvb.end
	move.w	#$0020,$09c(a6)	;vb bit wissen
	movem.l	(sp)+,d0-d7/a0-a6	;multitask uit, shit !
	rte

intcop.end
	movem.l	(sp)+,d0-d7/a0-a6
	move.l	intvbold,-(sp)
	rts

	;transmission buffer empty routine, BLIT !
	;handles routines,animations
	
inttbe					;tbe interrupt
	movem.l	d0-d7/a0-a6,-(sp)
	lea	($dff000).l,a6

	move.w	$01e(a6),d0
	btst	#0,d0			;no tbe ?
	beq.s	intdskblk


	btst	#6,($bfe001).l		;muis ingedrukt ?
	beq.s	inttbe.cop
	btst	#2,($dff016).l
	beq.s	inttbe.cop

	ifd	debug
	move.w	#$700,$dff180
	endc
	
	bsr	rotply			;routineplayer BLIT !
	bsr.s	copbuf			;copper vullen

	ifd	debug
	move.w	#$070,$dff180
	endc
	
inttbe.cop

inttbe.end
	move.w	#$0001,$09c(a6)
	movem.l	(sp)+,d0-d7/a0-a6
	rte

intdskblk
	move.w	#$0001,$09c(a6)		;be sure for no tbe handling
	movem.l	(sp)+,d0-d7/a0-a6
	move.l	inttbeold,-(sp)
	rts


	;moves the copperbuffer to the copperlist
	;sort of double buffering
	
copbuf
	movem.l	d0-d7/a0-a6,-(sp)

	lea	($dff000).l,a6

copbuf.novb				;copperchange overslaan
	moveq.l	#0,d0
	move.b	$005(a6),d0
	lsl.w	#8,d0
	moveq.l	#0,d1
	move.b	$006(a6),d1
	add.w	d1,d0

	cmp.w	#$4,d0
	blt	copbuf.novb

	cmp.b	#50,ntscmode
	beq.s	copbuf.pal
	cmp.w	#$133-56-8,d0		;ntsc grens
	bge	copbuf.novb
	bra.s	copbuf.cont
copbuf.pal
	cmp.w	#$133-8,d0		;pal grens
	bge	copbuf.novb
copbuf.cont

	lea	gra.s,a0		;buffer copieren
	lea	cprbuf,a1

	move.w	00*4+2(a0),00*4+2(a1)
	move.w	01*4+2(a0),01*4+2(a1)
	move.w	02*4+2(a0),02*4+2(a1)
	move.w	03*4+2(a0),03*4+2(a1)
	move.w	04*4+2(a0),04*4+2(a1)
	move.w	05*4+2(a0),05*4+2(a1)
	move.w	06*4+2(a0),06*4+2(a1)
	move.w	07*4+2(a0),07*4+2(a1)
	move.w	08*4+2(a0),08*4+2(a1)
	move.w	09*4+2(a0),09*4+2(a1)

	move.w	10*4+2(a0),10*4+2(a1)
	move.w	11*4+2(a0),11*4+2(a1)
	move.w	12*4+2(a0),12*4+2(a1)
	move.w	13*4+2(a0),13*4+2(a1)
	move.w	14*4+2(a0),14*4+2(a1)
	move.w	15*4+2(a0),15*4+2(a1)
	move.w	16*4+2(a0),16*4+2(a1)
	move.w	17*4+2(a0),17*4+2(a1)
	move.w	18*4+2(a0),18*4+2(a1)
	move.w	19*4+2(a0),19*4+2(a1)

	move.w	20*4+2(a0),20*4+2(a1)
	move.w	21*4+2(a0),21*4+2(a1)
	move.w	22*4+2(a0),22*4+2(a1)
	move.w	23*4+2(a0),23*4+2(a1)
	move.w	24*4+2(a0),24*4+2(a1)
	move.w	25*4+2(a0),25*4+2(a1)
	move.w	26*4+2(a0),26*4+2(a1)
	move.w	27*4+2(a0),27*4+2(a1)
	move.w	28*4+2(a0),28*4+2(a1)
	move.w	29*4+2(a0),29*4+2(a1)

	move.w	30*4+2(a0),30*4+2(a1)
	move.w	31*4+2(a0),31*4+2(a1)
	move.w	32*4+2(a0),32*4+2(a1)
	move.w	33*4+2(a0),33*4+2(a1)
	move.w	34*4+2(a0),34*4+2(a1)
	move.w	35*4+2(a0),35*4+2(a1)
	move.w	36*4+2(a0),36*4+2(a1)
	move.w	37*4+2(a0),37*4+2(a1)
	move.w	38*4+2(a0),38*4+2(a1)
	move.w	39*4+2(a0),39*4+2(a1)

	move.w	40*4+2(a0),40*4+2(a1)
	move.w	41*4+2(a0),41*4+2(a1)
	move.w	42*4+2(a0),42*4+2(a1)
	move.w	43*4+2(a0),43*4+2(a1)
	move.w	44*4+2(a0),44*4+2(a1)
	move.w	45*4+2(a0),45*4+2(a1)
	move.w	46*4+2(a0),46*4+2(a1)
	move.w	47*4+2(a0),47*4+2(a1)
	move.w	48*4+2(a0),48*4+2(a1)
	move.w	49*4+2(a0),49*4+2(a1)

	move.w	50*4+2(a0),50*4+2(a1)
	move.w	51*4+2(a0),51*4+2(a1)
	move.w	52*4+2(a0),52*4+2(a1)
	move.w	53*4+2(a0),53*4+2(a1)
	move.w	54*4+2(a0),54*4+2(a1)

copbuf.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;goes back to the workbench
	
syson
	movem.l	d0-d7/a0-a6,-(sp)

	move.w	#$0001,$dff09a		;tbeint uit
	move.l	intvbold,($6c).w
	move.l	inttbeold,($64).w

	move.l	4,a6
	jsr	-138(a6)		;permit

	move.l	gfxlib,a6
	jsr	-462(a6)		;disownblitter

	move.l	wbview,a1
	move.l	gfxlib,a6
	jsr	_LVOLoadView(a6) 	; Fix view
	jsr	_LVOWaitTOF(a6)
	jsr	_LVOWaitTOF(a6)         ; wait for LoadView()

syson.ras
	cmp.b	#$c0,$dff006		;prevent copperjump
	bne	syson.ras

	move.l	gfxlib,a6
	move.l	gb_copinit(a6),$dff080	 ; Kick it into life

	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
	;goes back to the gadgetscreen
	
sysoff
	movem.l	d0-d7/a0-a6,-(sp)
 	
	move.l	gfxlib,a6
	move.l	gb_ActiView(a6),wbview	;current view
	sub.l	a1,a1			; clear a1
	jsr 	_LVOLoadView(a6) 	; Flush View to nothing
	jsr	_LVOWaitTOF(a6) 	; Wait once
	jsr	_LVOWaitTOF(a6) 	; Wait again.

	move.l	gfxlib,a6
	jsr	-456(a6)		;ownblitter

	move.l	4,a6
	jsr	-132(a6)		;forbid
		
	move.l	($6c).w,intvbold
	move.l	#intvb,($6c).w
	move.l	($64).w,inttbeold
	move.l	#inttbe,($64).w
	move.w	#$8001,$dff09a		;tbeint aan
	bsr	gracpr			;reset copper
	bsr	copbuf			;copy copper
	move.l	#cpr,$dff080

	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
cprsprrem
	movem.l	d0-d7/a0-a6,-(sp)
	lea	cprspr,a0
	move.l	#sprdat,d0
	move.w	#7,d1
cprsprrem.a
	move.w	d0,3*2(a0)
	swap	d0
	move.w	d0,1*2(a0)
	swap	d0
	add.l	#8,a0
	dbra	d1,cprsprrem.a
	movem.l	(sp)+,d0-d7/a0-a6
	rts

varset					;variablen neerzetten
	movem.l	d0-d7/a0-a6,-(sp)
	move.l	#var,a0

	move.l	#cprbck,var_cprbck(a0)
	move.l	gfxlib,var__GfxBase(a0)
	move.b	ntscmode,var_ntsc(a0)

	move.l	curpic1,var_pic1(a0)	;variabel
	move.l	curpic2,var_pic2(a0)	;variabel
	move.w	anispd1,var_anispd1(a0)
	move.w	anitel1,var_anitel1(a0)
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
	;this routine handles all videotracker-routines

rotply	
	movem.l	d0-d7/a0-a6,-(sp)

	moveq.l	#0,d0

	lea	currot1,a2		;routine 1
	move.w	rotinf1,d0		;routine info
	bsr.s	rotplyr

rotply.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;this routine handles 1 routine, BLIT !
	
rotplyr
	movem.l	d0-d7/a1-a6,-(sp)

	move.l	#rot,(a2)		;routinestart address

	move.b	#50,ntscmode		;ntsc/pal hz
	clr.l	curpic2			;background picture
	move.w	#1,anispd1		;animationspeed
	clr.w	anitel1			;animation position

	lea	var,a0			;communication-table

;	move.l	#rotincobj,var_obj1(a0)	;incbinfile !!!
;	move.l	#rotincbck,var_bck(a0)	;incbinfile !!!

	move.l	#routinemode,d0		;routinemode !!!

	sub.l	a0,a0			;picture info legen

	tst.l	(a2)			;is er een routine ?
	beq	rotplyr.end		;interlace handling

	move.l	intdel,d2		;delay
	move.l	inttel,d1		;teller
	cmp.w	d2,d1
	blt	rotplyr.end
	clr.l	inttel
				
	bsr	varset			;variabelen updaten

	move.l	(a2),a1			;routine halen
	move.l	#var,a0			;variablen tabel

	movem.l	d3-d7/a1-a6,-(sp)
	moveq.l	#0,d1			;vars wissen
	moveq.l	#0,d2
	moveq.l	#0,d3
	moveq.l	#0,d4
	moveq.l	#0,d5
	moveq.l	#0,d6
	moveq.l	#0,d7
	sub.l	a2,a2
	sub.l	a3,a3
	sub.l	a4,a4
	sub.l	a5,a5

	jsr	4(a1)			;routine afwerken
	movem.l	(sp)+,d3-d7/a1-a6

	;Routine:
	;
	;Input:
	;a0=variabelentabel
	;d0=routinemode
	;
	;Output:
	;a0=picture
	;d1=copperlist
	;d2=interruptdelay		(NOT used till now)
	
	move.w	#$0020,$dff09a		;vb off !

	move.l	d2,intdel		;delay

	lea	cprjmp,a3
	move.l	#cprbck-8,d0

	cmp.l	(a2),a1			;routine ondertussen gewipt ?
	bne.s	rotplyr.nocop
	tst.l	d1			;copperlist ?
	beq.s	rotplyr.nocop
	move.l	d1,d0
rotplyr.nocop
	move.w	d0,6(a3)
	swap	d0
	move.w	d0,2(a3)

	cmp.l	#0,a0			;picture ?
	beq.s	rotplyr.endvb

	move.l	a0,curpic1		;current picture (cycle)
	move.l	a0,curpal1		;current palette

	tst.b	rotdpl			;plane is geleverd
	beq.s	rotplyr.set
	clr.b	rotdpl
	clr.l	cycdel1			;cycle info wissen
	clr.l	4+cycdel1
	clr.l	curfrm1			;curfrm1, altijd planes zetten
rotplyr.set
	clr.b	dplctr
	bsr.s	grap
	bsr	grac			;colorset
rotplyr.endvb
	move.w	#$8020,$dff09a
rotplyr.end
	movem.l	(sp)+,d0-d7/a1-a6
	rts

	;removes possible routine-coppers
	
gracpr
	movem.l	d0-d7/a0-a6,-(sp)
	lea	cprjmp,a3
	move.l	#cprbck-8,d0		;copperlist resetten
	move.w	d0,6(a3)
	swap	d0
	move.w	d0,2(a3)
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;picture-to-copper routine, communicates with the
	;anim-player
	
grap					;d7=anim
	movem.l	d0-d7/a0-a6,-(sp)

	clr.l	d7
	
	tst.l	curpic1			;current picture ?
	beq	grap.end

	move.l	curpic1,a2		;normal pic halen

	lea	gracprscr,a1		;window neerzetten
	move.l	hogscr,d1

	move.w	pic_hgt(a2),d3		;pic hoogte
	move.w	pic_vew(a2),d5
	btst	#2,d5			;interlace ?
	beq.s	grap.nohi4
	lsr.w	#1,d3			;/2
grap.nohi4
	cmp.w	d3,d1
	bge.s	grap.hog
	move.w	d1,d3
grap.hog
	sub.w	d3,d1
	lsr.w	#1,d1
	add.w	#win_str,d1
	move.w	d1,d2
	add.w	d3,d2


	move.b	d1,2(a1)		;y start
	move.b	d2,6(a1)		;y end

	move.w	pic_wid(a2),d4		;pic breedte in bytes
	lsl.l	#3,d4

	move.l	#vew_wid*8,d0
	move.l	#0,d1
	move.l	#$71,d6

	move.w	pic_vew(a2),d5
	btst	#15,d5			;hires ?
	beq.s	grap.nohi2

	move.l	#(vew_wid-4)*8*2,d0
	move.l	#1,d1
	move.l	#$81,d6

	cmp.w	#80,pic_wid(a2)		;overscan ?
	ble.s	grap.nohi2
	move.l	#(vew_wid)*8*2,d0
	move.l	#$61,d6

grap.nohi2	
	btst	#6,d5			;super hires ?
	beq.s	grap.noshi2

	move.l	#(vew_wid-4)*8*4,d0
	move.l	#2,d1
	move.l	#$81,d6

	cmp.w	#80*2,pic_wid(a2)	;overscan ?
	ble.s	grap.noshi2
	move.l	#(vew_wid)*8*4,d0
	move.l	#$61,d6

grap.noshi2	

	clr.w	d5
	cmp.w	d0,d4			;breeder dan scherm ?
	ble.s	grap.c
	move.w	d4,d5
	move.w	d0,d4
	sub.w	d0,d5			;modulo
	lsr.w	#3,d5			;/8
grap.c
	lsr.w	d1,d0
	lsr.w	d1,d4

	move.w	d0,d2
	sub.w	d4,d2
	lsr.w	#1,d2			;/2

	add.w	d6,d2
	move.b	d2,3(a1)		;x start
	move.w	d2,d3			;d3 bewaren !

	add.w	d4,d2			;d4 bewaren !
	move.b	d2,7(a1)		;x end
	
	move.w	pic_vew(a2),d6
	btst	#15,d6			;hires ?
	beq.s	grap.nohi5	
	add.l	d4,d4			;*2
grap.nohi5
	btst	#6,d6			;super hires ?
	beq.s	grap.noshi5	
	add.l	d4,d4			;*4
grap.noshi5

	move.l	d7,-(sp)
	move.w	pic_vew(a2),d6
	move.l	#17,d0
	move.l	#1,d1
	move.l	#3,d7

	btst	#15,d6			;hires ?
	beq.s	grap.nohi3	
	move.l	#9,d0
	move.l	#2,d1
	move.l	#2,d7
grap.nohi3
	btst	#6,d6			;super hires ?
	beq.s	grap.noshi3	
	move.l	#9,d0
	move.l	#2,d1
	move.l	#1,d7
grap.noshi3
	sub.w	d0,d3
	lsr.w	#1,d3
	move.w	d3,10(a1)		;ddfstrt
	
	move.w	d4,d2			;pic breedte in pixels
	lsr.w	#4,d2			;/16
	sub.w	d1,d2			;-1

	lsl.w	d7,d2			;*8
	add.w	d2,d3
	move.w	d3,14(a1)		;ddfstop
	move.l	(sp)+,d7
	
	lea	pic_raw(a2),a0

	moveq.l	#0,d2
	move.w	pic_dpt(a2),d2
	sub.l	#1,d2
	muls	pic_wid(a2),d2
	add.w	d2,d5

	move.w	pic_vew(a2),d2		;viewmode add
	btst	#2,d2
	beq.s	grap.nolace4

	moveq.l	#0,d2
	move.w	pic_dpt(a2),d2
	muls	pic_wid(a2),d2
	add.w	d2,d5			;interlace gedoe
grap.nolace4

	lea	gracprbpl,a4		;iffpln neerzetten
	lea	gracprpln,a0		;iffpln neerzetten
	moveq.l	#0,d2
	move.w	pic_dpt(a2),d2		;plnnummer 1 halen
	move.l	#8,d6			;copper step !

	tst.l	curpic2			;2de picture ?
	bne.s	grap.pic2
grap.nopic2
	move.w	d5,34(a1)		;modulo oneven zetten
	bra	grap.nodpl
grap.pic2
	move.l	curpic2,a3		;oneven plane
	move.l	currot2,a5		;oneven plane
	clr.l	curpic2			;mischien niet goed
	clr.l	curpal2			;mischien niet goed
	clr.l	currot2			;mischien niet goed

	cmp.l	curpic1,a3		;picture hetzelfde ?
	beq	grap.nopic2
	
	cmp.l	#0,currot1		;routine ?	
	beq.s	grap.norot
	cmp.l	currot1,a5		;routine hetzelfde ?
	beq	grap.nopic2
grap.norot

	cmp.b	#3,d2			;> 8 kleuren ?
	bgt	grap.nopic2
	move.w	pic_dpt(a3),d3		;plnnummer 2 halen
	cmp.b	d2,d3			;gelijke plnummers ?
	bne	grap.nopic2
	move.w	pic_vew(a2),d1
	cmp.w	pic_vew(a3),d1		;view gelijk ?
	bne	grap.nopic2

	move.w	pic_vew(a2),d1		;groter dan view test
	btst	#6,d1			;super hires ?
	beq.s	grap.nohi2a
	move.l	#vew_wid*4,d1
	bra.s	grap.nohi2b
grap.nohi2a
	btst	#15,d1			;hires ?
	beq.s	grap.noshi2a
	move.l	#vew_wid*2,d1
	bra.s	grap.nohi2b
grap.noshi2a
	move.l	#vew_wid,d1
grap.nohi2b
	cmp.w	pic_wid(a2),d1		;breder dan view ?
	bgt.s	grap.small
	cmp.w	pic_wid(a3),d1		;breder dan view ?
	bgt.s	grap.small

	move.w	pic_vew(a2),d1
	btst	#2,d1
	beq.s	grap.nolace8a
	move.l	hogscr,d1
	add.l	d1,d1
	bra.s	grap.nolace8b
grap.nolace8a
	move.l	hogscr,d1
grap.nolace8b
	cmp.w	pic_hgt(a2),d1		;hoger dan view ?
	bgt.s	grap.small
	cmp.w	pic_hgt(a3),d1		;hoger dan view ?
	bgt.s	grap.small
	bra.s	grap.big

grap.small
	move.w	pic_hgt(a2),d1		;wid+hgt<vew
	cmp.w	pic_hgt(a3),d1		;hoogte gelijk ?
	bne	grap.nopic2
	move.w	pic_wid(a2),d1
	cmp.w	pic_wid(a3),d1		;breedte gelijk ?
	bne	grap.nopic2

grap.big
	move.l	a3,curpic2
	move.l	a3,curpal2
	move.l	a5,currot2

	tst.b	dplctr			;double playfield al gezet ?
	beq.s	grap.nocop

	move.w	30(a1),34(a1)		;modulo copieren

	move.w	2(a4),d1		;bplcon0
	btst	#10,d1			;al double playfield ?
	beq.s	grap.ta

	move.w	2(a0),10(a0)		;plane 0>1 copieren
	move.w	6(a0),14(a0)

	move.w	18(a0),26(a0)		;plane 2>3 copieren
	move.w	22(a0),30(a0)

	move.w	34(a0),42(a0)		;plane 4>5 copieren
	move.w	38(a0),46(a0)

	bra.s	grap.tb
grap.ta
	move.w	18(a0),42(a0)		;plane 2>5 copieren
	move.w	22(a0),46(a0)

	move.w	10(a0),26(a0)		;plane 1>3 copieren
	move.w	14(a0),30(a0)

	move.w	2(a0),10(a0)		;plane 0>1 copieren
	move.w	6(a0),14(a0)

grap.tb
	move.l	#palette,a3		;palette copieren

	move.w	#8-1,d1
grap.pal
	move.w	(a3)+,14(a3)
	dbra	d1,grap.pal

grap.nocop
	add.w	d3,d2
	lsl.w	#8,d2
	lsl.w	#4,d2
	or.w	#$400,d2
	move.w	d2,2(a4)		;bplcon0

	movem.l	d0-d7/a0-a6,-(sp)

	move.l	curpic,a2		;animpic ?
	move.l	curfrm,d7
	cmp.l	#0,a2
	bne.s	grap.noanipic

	move.l	curpic2,a2		;normal pic ?
	move.l	curfrm2,d7
	cmp.l	#0,a2
	beq.s	grap.nodplpic

grap.noanipic
	add.l	d6,a0
	add.w	d6,d6
	bsr.s	grappln			;a2,d6,d7,d0
grap.nodplpic
	movem.l	(sp)+,d0-d7/a0-a6
	add.w	d6,d6
	bra.s	grap.nodpla


grap.nodpl				;geen double playfield
	lsl.w	#8,d2
	lsl.w	#4,d2
	move.w	d2,2(a4)		;bplcon0

grap.nodpla
	move.w	d5,30(a1)		;modulo even

	moveq.l	#0,d3
	add.w	pic_vew(a2),d3		;viewmode add
	moveq.l	#0,d2
	move.w	2(a4),d2
	or.l	d3,d2
	or.l	#$300,d2		;genlock info
	move.w	d2,2(a4)
	
	bsr.s	grappln			;a2,d6,d7,d0

grap.end
	
	movem.l	(sp)+,d0-d7/a0-a6
	rts
		

	;sets on of the 2 possible pictures to the copper
	;handles interlace

	;d7=framenummer
	;d6=copperliststap
	;d0=raw planes positie
	;a2=current picture
grappln					;planes invullen 
	movem.l	d0-d7/a0-a6,-(sp)

	lea	pic_raw(a2),a1
	move.l	a1,d0			;raw planes
	
	moveq.l	#0,d2			;x*y
	move.w	pic_wid(a2),d2
	lsr.l	#1,d2			;/2
	moveq.l	#0,d3
	move.w	pic_hgt(a2),d3
	muls	d3,d2
	
	move.l	d2,d4
	add.l	d2,d2

	move.w	pic_dpt(a2),d3
	muls	d3,d4			;hele picture size
	muls	d7,d4			;frame*size d7 !

	add.l	d4,d4

	add.l	d4,d0

	move.l	#vew_wid,d5		;max x view
	move.l	hogscr,d4		;max y view
	move.w	pic_vew(a2),d1		;viewmode add
	btst	#2,d1
	beq.s	grappln.nolace
	add.l	d4,d4			;max y view
grappln.nolace
	btst	#15,d1			;hires ?
	beq.s	grappln.nohi
	move.l	#vew_wid*2,d5		;max x view
grappln.nohi
	btst	#6,d1			;super hires ?
	beq.s	grappln.noshi
	move.l	#vew_wid*4,d5		;max x view
grappln.noshi

	moveq.l	#0,d3			;scherm centreren
	move.w	pic_wid(a2),d3		;pic breedte in bytes
	cmp.w	d5,d3			;breder dan scherm ?
	ble.s	grappln.qa
	sub.w	d5,d3			;-scherm breedte
	lsr.w	#2,d3			;/4

	add.l	d3,d3

	add.l	d3,d0
grappln.qa
	move.w	pic_hgt(a2),d3		;pic hoogte in bytes
	cmp.w	d4,d3			;hoger dan scherm ?
	ble.s	grappln.qb
	sub.w	d4,d3			;-scherm breedte
	lsr.w	#1,d3			;/2
	moveq.l	#0,d5
	move.w	pic_wid(a2),d5		;pic breedte in bytes
	muls	pic_dpt(a2),d5
	muls	d5,d3
	add.l	d3,d0
grappln.qb
	moveq.l	#0,d2
	move.w	pic_wid(a2),d2

	move.w	pic_vew(a2),d5		;interlace flipping ?
	btst	#2,d5
	beq.s	grappln.nolac7b

	move.w	$04(a6),d5		;even/oneven ?
	btst	#15,d5
	beq.s	grappln.nolac7b
	
	moveq.l	#0,d3
	move.w	pic_wid(a2),d3
	muls	pic_dpt(a2),d3
	add.l	d3,d0
grappln.nolac7b

	move.w	pic_dpt(a2),d1		;plnnummer 1 halen
	tst.w	d1			;0 planes ?
	beq.s	grappln.end
	sub.w	#1,d1
grappln.a
	move.w	d0,3*2(a0)
	swap	d0
	move.w	d0,1*2(a0)
	swap	d0
	add.l	d6,a0			;d6=copper step !
	add.l	d2,d0
	dbra	d1,grappln.a
grappln.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;sets palettes to copper
	
grac
	movem.l	d0-d7/a0-a6,-(sp)

	lea	curpal1,a3		;palette 1
	move.l	#palette,a1
	bsr.s	gracfrm

	lea	curpal2,a3		;palette 2 (dpl)
	move.l	#8*2+palette,a1
	bsr.s	gracfrm
	
	bsr.s	palctr			;palette-buffer to copper
grac.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts
		
	;moves palette from picture to palette-buffer

gracfrm
	movem.l	d0-d7/a0-a6,-(sp)
	tst.l	(a3)			;palette aanwezig ?
	beq.s	gracfrm.end

	move.l	(a3),a2			;current palette
	
	cmp.l	#'PALE',(a2)		;palette ?
	bne.s	gracfrm.pict
	lea	6(a2),a0		;palette
	move.w	4(a2),d0		;aantal kleuren
	bra.s	gracfrm.col
gracfrm.pict
	cmp.l	#'ANIM',(a2)		;animatie ?
	bne.s	gracfrm.noanim

	moveq.l	#0,d1
	move.w	pic_ani(a2),d1
	bclr	#7,d1			;behandelbit weghalen

	moveq.l	#0,d3
	move.w	pic_wid(a2),d3
	lsr.w	#1,d3			;/2
	muls	pic_hgt(a2),d3
	muls	pic_dpt(a2),d3

	add.l	d3,d3

	add.l	#pic_raw,d3
	move.l	d3,d5

	btst	#0,d1
	bne.s	gracfrm.buf2
	moveq.l	#0,d5
gracfrm.buf2
	add.l	d5,a2
gracfrm.noanim
	lea	pic_pal(a2),a0		;palette
	move.w	pic_palnum(a2),d0

	cmp.w	#32-1,d0		;niet meer dan 32 kleuren
	ble	gracfrm.sub
	move.w	#32-1,d0
gracfrm.sub

	tst.w	d0			;0 planes ?
	beq.s	gracfrm.end
gracfrm.col
gracfrm.fa
	move.w	(a0)+,(a1)+
	dbra	d0,gracfrm.fa
gracfrm.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
	;handles colorcycling in the palette-buffer
	;and copies palette-buffer to copper

palctr
	movem.l	d0-d7/a0-a6,-(sp)

	move.l	curpic1,a2		;current raw
	cmp.l	#0,a2
	beq.s	palctr.qb
	lea	cycdel1,a3		;cycle delays
	move.l	#palette,a4
	bsr	palcyc
palctr.qb
	move.l	curpic2,a2		;current raw
	cmp.l	#0,a2
	beq.s	palctr.c
	lea	cycdel2,a3		;cycle delays
	move.l	#8*2+palette,a4
	bsr	palcyc

palctr.c
	lea	gracprcol,a1
	move.l	#palette,a0

	move.w	00(a0),00*4+2(a1)
	move.w	02(a0),01*4+2(a1)
	move.w	04(a0),02*4+2(a1)
	move.w	06(a0),03*4+2(a1)
	move.w	08(a0),04*4+2(a1)
	move.w	10(a0),05*4+2(a1)
	move.w	12(a0),06*4+2(a1)
	move.w	14(a0),07*4+2(a1)
	move.w	16(a0),08*4+2(a1)
	move.w	18(a0),09*4+2(a1)

	move.w	20(a0),10*4+2(a1)
	move.w	22(a0),11*4+2(a1)
	move.w	24(a0),12*4+2(a1)
	move.w	26(a0),13*4+2(a1)
	move.w	28(a0),14*4+2(a1)
	move.w	30(a0),15*4+2(a1)
	move.w	32(a0),16*4+2(a1)
	move.w	34(a0),17*4+2(a1)
	move.w	36(a0),18*4+2(a1)
	move.w	38(a0),19*4+2(a1)

	move.w	40(a0),20*4+2(a1)
	move.w	42(a0),21*4+2(a1)
	move.w	44(a0),22*4+2(a1)
	move.w	46(a0),23*4+2(a1)
	move.w	48(a0),24*4+2(a1)
	move.w	50(a0),25*4+2(a1)
	move.w	52(a0),26*4+2(a1)
	move.w	54(a0),27*4+2(a1)
	move.w	56(a0),28*4+2(a1)
	move.w	58(a0),29*4+2(a1)

	move.w	60(a0),30*4+2(a1)
	move.w	62(a0),31*4+2(a1)

	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;colorcyclinghandling of a palette

palcyc
	movem.l	d0-d7/a0-a6,-(sp)
	move.w	#4-1,d7			;4 cycles
palcyc.d
	tst.w	(a3)+			;delay klaar ?
	bne.s	palcyc.c
	
	moveq.l	#0,d1
	move.b	pic_cycstr(a2),d1	;start color
	lsl.b	#1,d1		;*2

	moveq.l	#0,d2
	move.b	pic_cycend(a2),d2	;end color
	lsl.b	#1,d2		;*2

	moveq.l	#0,d3
	move.b	pic_cycadd(a2),d3	;richting

	move.l	a4,a0			;palette pointer
	move.l	a0,a1
	add.l	d1,a0			;startcolor
	add.l	d2,a1			;endcolor
	
	cmp.b	#1,d3			;omhoog
	beq.s	palcyc.up
	cmp.b	#3,d3			;omlaag
	beq.s	palcyc.down
	bra.s	palcyc.i

palcyc.up				;kleuren copieren
	move.w	(a1),d4			;laatst color bewaren
palcyc.f				;kleuren copieren
	cmp.l	a0,a1
	beq.s	palcyc.fa
	move.w	-(a1),2(a1)
	bra	palcyc.f
palcyc.fa
	move.w	d4,(a1)
	bra.s	palcyc.g	
	
palcyc.down
	move.w	(a0),d4			;laatst color bewaren
palcyc.h				;kleuren copieren
	cmp.l	a0,a1
	beq.s	palcyc.ha
	move.w	2(a0),(a0)+
	bra	palcyc.h
palcyc.ha
	move.w	d4,(a1)

palcyc.g
	move.b	pic_cycspd(a2),-1(a3)	;delay zetten
	bra.s	palcyc.i
palcyc.c
	sub.w	#1,-2(a3)		;cycle delay aftellen
palcyc.i
	add.l	#4,a2			;next cycle info
	dbra	d7,palcyc.d

palcyc.qb
	movem.l	(sp)+,d0-d7/a0-a6
	rts


;	SECTION	variabelen,DATA_c

	cnop	0,2
curtsk		dc.l	0
tskpri		dc.l	0
duplok		dc.l	0
inttel		dc.l	0
intdel		dc.l	0

form		dc.l	0
ifffil		dc.l	0
intvbold	dc.l	0
inttbeold	dc.l	0
patpos		dc.l	0
gfxlib		dc.l	0
doslib		dc.l	0
wbview  	dc.l	0
mt_data		dc.l	0
memvid		dc.l	0
oldcprlist	dc.l	0
hogscr		dc.l	vew_hgt

inspos		dc.l	-1
anispd1		dc.w	1	;nooit op 0 !
anispd2		dc.w	1

		cnop	0,2
varclr.s			;start wissen
oldrot		dc.l	0
curpic		dc.l	0
curfrm		dc.l	0
cycdel1		ds.w	4
cycdel2		ds.w	4

rotinf1		dc.w	0
rotinf2		dc.w	0

effspd		dc.w	0
efflop		dc.b	0
anilop1		dc.b	0
anilop2		dc.b	0
anipal1		dc.b	0
anipal2		dc.b	0
rotdpl		dc.b	1
dplctr		dc.b	0
		cnop	0,2

insdat		ds.l	4
inspri		dc.l	0
instel		dc.w	0

cureff		dc.l	0
efftel		dc.w	0

curpal1		dc.l	0
curpal2		dc.l	0
currot1		dc.l	0
currot2		dc.l	0
curpic1		dc.l	0
curpic2		dc.l	0
anitel1		dc.w	0
anitel2		dc.w	0
curfrm1		dc.l	0
curfrm2		dc.l	0
oldfrm1		dc.l	0
oldfrm2		dc.l	0

varclr.e
		dc.l	0			;wisruimte
	
varclr.ql	equ	varclr.e-varclr.s	;wislengte
	
;ownblit	dc.b	0
ntscmode	dc.b	0
end		dc.b	0

pronam	dc.b	'VideoTracker',0
	cnop	0,2
dosnam	dc.b	'dos.library',0
	cnop	0,4
gfxnam	dc.b	'graphics.library',0
	cnop	0,4
	
	cnop	0,4
gra.s
gracprscr
	dc.w	$8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
gracprbpl
	dc.w	$100,$9000,$102,$0000,$104,$0020
	dc.w	$108,$0000,$10a,$0000
gracprpln
	dc.w	$e0,$0000,$e2,$0000
	dc.w	$e4,$0000,$e6,$0000
	dc.w	$e8,$0000,$ea,$0000
	dc.w	$ec,$0000,$ee,$0000
	dc.w	$f0,$0000,$f2,$0000
	dc.w	$f4,$0000,$f6,$0000
gracprcol
	dc.w	$180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
	dc.w	$190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
	dc.w	$1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
	dc.w	$1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
cprjmp
	dc.w	$080,0,$082,0
gra.e
gra.ql	equ	gra.e-gra.s		;block lengte


cpr
	dc.w	$0001,$fffe
	dc.w	$09c,$8001		;tbeint
cprspr
	dc.w	$120,$0000,$122,$0000
	dc.w	$124,$0000,$126,$0000
	dc.w	$128,$0000,$12a,$0000
	dc.w	$12c,$0000,$12e,$0000
	dc.w	$130,$0000,$132,$0000
	dc.w	$134,$0000,$136,$0000
	dc.w	$138,$0000,$13a,$0000
	dc.w	$13c,$0000,$13e,$0000

cprbuf
	dc.w	$8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
	dc.w	$100,$9000,$102,$0000,$104,$0020
	dc.w	$108,$0000,$10a,$0000
	dc.w	$e0,$0000,$e2,$0000
	dc.w	$e4,$0000,$e6,$0000
	dc.w	$e8,$0000,$ea,$0000
	dc.w	$ec,$0000,$ee,$0000
	dc.w	$f0,$0000,$f2,$0000
	dc.w	$f4,$0000,$f6,$0000
	dc.w	$180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
	dc.w	$190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
	dc.w	$1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
	dc.w	$1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
	dc.w	$080,0,$082,0
cprbuf.e

	dc.w	$088,$0000		;copjmp2
	dc.w	$080,0,$082,0		;moet achter cprbck blijven !
cprbck
sprdat
	dc.w	$ffff,$fffe


prf_pat	equ	7			;pref sample size
prf_patnum	equ	128		;aantal songpos's
prf_len	equ	((prf_pat*prf_patnum)+1)

prf_pos	equ	0			;eff position (teller)

prf_effs	equ	1		;start effect (*prf_patnum)
prf_effe	equ	2		;end effect   (*prf_patnum)
prf_pri	equ	3			;priority     (*prf_patnum)
prf_spd	equ	4			;eff speed    (*prf_patnum)
prf_ani	equ	5			;ani speed    (*prf_patnum)
prf_roth	equ	6		;routine info (*prf_patnum)
prf_rotl	equ	7		;routine info (*prf_patnum)

eff_num	equ	256			;aantal effects

pic_wid		equ	4		;wide in bytes
pic_hgt		equ	6		;hoogte
pic_dpt		equ	8		;number planes
pic_ani		equ	10		;aantal effes (anim)
pic_vew		equ	12		;viewmode
pic_cycstr	equ	14		;cycle start (*4)
pic_cycend	equ	15		;cycle end (*4)
pic_cycspd	equ	16		;cycle speed (*4)
pic_cycadd	equ	17		;cycle add (*4)
pic_palnum	equ	30		;aantal kleuren
pic_pal		equ	32		;palette start
pic_palsiz	equ	256*2		;vaste palette size
pic_raw		equ	pic_pal+pic_palsiz	;palette start

fil_namlen	equ	24		;naamlengte
fil_len	equ	(fil_namlen+4+4)	;effect info length
fil_num	equ	2+eff_num		;aantal files
fil_fil	equ	0			;file naam 
fil_dir	equ	24			;pointer naar directory
fil_pnt	equ	28			;pointer naar meminfo

palette	ds.w	64	;palette

var_len		equ	$300		;lengte vartabel

var__GfxBase	equ	$000		;graphics lib
var_pic1	equ	$004		;current picture
var_anispd1	equ	$008		;animspeed
var_anitel1	equ	$00c		;animspeed
var_cprbck	equ	$010		;copperback
var_bck		equ	$014		;background
var_pic2	equ	$018		;current picture
var_ntsc	equ	$01c		;ntsc/pal frequence
var_lnd		equ	$020		;landscape
var_txt1	equ	$040		;text
var_txt16	equ	15*4+var_txt1
var_vec1	equ	$080		;vectors
var_vec16	equ	15*4+var_vec1
var_fon1	equ	$0c0		;fonts
var_fon16	equ	15*4+var_fon1
var_cols1	equ	$100		;colorsets
var_cols16	equ	15*4+var_cols1
var_obj1	equ	$180		;objects
var_obj16	equ	15*4+var_obj1

	cnop	0,2
var	ds.b	$300	;variabelen voor routines

	
;	SECTION	10,CODE_C
		endc

; this is the routine-source
;**********************************************************************

		ifnd	rout
pic_wid		equ	4		;wide in bytes
pic_hgt		equ	6		;hoogte
pic_dpt		equ	8		;number planes
pic_ani		equ	10		;aantal effes (anim)
pic_vew		equ	12		;viewmode
pic_cycstr	equ	14		;cycle start (*4)
pic_cycend	equ	15		;cycle end (*4)
pic_cycspd	equ	16		;cycle speed (*4)
pic_cycadd	equ	17		;cycle add (*4)
pic_palnum	equ	30		;aantal kleuren
pic_pal		equ	32		;palette start
pic_palsiz	equ	256*2		;vaste palette size
pic_raw		equ	pic_pal+pic_palsiz	;palette start

var_len		equ	$300		;lengte vartabel

var__GfxBase	equ	$000		;graphics lib
var_pic1	equ	$004		;current picture
var_anispd1	equ	$008		;animspeed
var_anitel1	equ	$00c		;animspeed
var_cprbck	equ	$010		;copperback
var_bck		equ	$014		;background
var_pic2	equ	$018		;current picture
var_ntsc	equ	$01c		;ntsc/pal frequence
var_lnd		equ	$020		;landscape
var_txt1	equ	$040		;text
var_txt16	equ	15*4+var_txt1
var_vec1	equ	$080		;vectors
var_vec16	equ	15*4+var_vec1
var_fon1	equ	$0c0		;fonts
var_fon16	equ	15*4+var_fon1
var_cols1	equ	$100		;colorsets
var_cols16	equ	15*4+var_cols1
var_obj1	equ	$180		;objects
var_obj16	equ	15*4+var_obj1

vew_wid	equ	44
vew_hgt	equ	290
win_hgt	equ	117
win_str	equ	$1a
		endc

;	Input:
;	a0=variabelen tabel
;	d0=routinfo

;	Output:
;	a0=picture


rot_vewh	equ	0	;$8000
rot_vewl	equ	0	;$4
rot_dpt		equ	1

	ifeq	rot_vewl-0
rot_shgt	equ	290+128
rot_bhgt	equ	290
rot_ystp	equ	32
	endc
	ifeq	rot_vewl-$4
rot_shgt	equ	(2*290)+128
rot_bhgt	equ	2*290
rot_ystp	equ	32*2
	endc

	ifeq	rot_vewh-0
rot_swid	equ	(368+128)/8
rot_bwid	equ	368/8
rot_xstp	equ	32
rot_cen	equ	0
	ifeq	rot_dpt-1
rot_blit	equ	1		;aantal blits
	endc
	ifeq	rot_dpt-2
rot_blit	equ	1		;aantal blits
	endc
	ifeq	rot_dpt-3
rot_blit	equ	1		;aantal blits
	endc
	ifeq	rot_dpt-4
rot_blit	equ	2		;aantal blits
	endc
	ifeq	rot_dpt-5
rot_blit	equ	2		;aantal blits
	endc
	ifeq	rot_dpt-6
rot_blit	equ	2		;aantal blits
	endc
	endc

	ifeq	rot_vewh-$8000
rot_swid	equ	((368*2)+128)/8
rot_bwid	equ	(368*2)/8
rot_xstp	equ	32*2
rot_cen	equ	4
	ifeq	rot_dpt-1
rot_blit	equ	1		;aantal blits
	endc
	ifeq	rot_dpt-2
rot_blit	equ	2		;aantal blits
	endc
	ifeq	rot_dpt-3
rot_blit	equ	2		;aantal blits
	endc
	ifeq	rot_dpt-4
rot_blit	equ	2		;aantal blits
	endc
	endc
		

rot_objnum	equ	32

	SECTION	3,CODE_C

rot
	dc.l	'ROUT'
	movem.l	d1-d7/a1-a6,-(sp)

	lea	($dff000).l,a6	;hardware
	lea	rot,a5		;prog base

	move.w	#%1111111111111111,$044(a6)
	move.w	#%1111111111111111,$046(a6)

	move.l	d0,d7		;info

	tst.l	var_bck(a0)		;nieuwe background ?
	beq	rot.c
	move.l	var_bck(a0),a1
	clr.l	var_bck(a0)
	
	clr.l	rotbckpln-rot(a5)	;background wissen

	lea	rotpal1,a3		;palette altijd copieren
	move.l	a3,a4
	add.l	#rotpic2-rotpic1,a4

	lea	pic_pal(a1),a2	;palette
	move.w	pic_palnum(a1),d0

rot.g
	move.w	(a2),(a3)+
	move.w	(a2)+,(a4)+
	dbra	d0,rot.g

	bsr	rotcln		;alle objects uit

	cmp.w	#rot_bwid,pic_wid(a1)	;size check
	bne	rot.clean
	cmp.w	#rot_bhgt,pic_hgt(a1)	;background ?
	bne	rot.clean
	cmp.w	#rot_dpt,pic_dpt(a1)	;background ?
	bne	rot.clean

	lea	pic_raw(a1),a2
	move.l	a2,rotbckpln-rot(a5)
	
	lea	((rot_shgt-rot_bhgt)/2*rot_swid*rot_dpt)+((rot_swid-rot_bwid)/4*2)+rotpln1,a3
	move.l	a3,a4
	add.l	#rotpic2-rotpic1,a4

	move.w	#0,$64(a6)			;bltamod
	move.w	#rot_swid-rot_bwid,$66(a6)	;bltdmod

	move.w	#$09f0,$40(a6)		;bltcon0
	move.w	#0,$42(a6)			;bltcon1

	move.w	#rot_blit-1,d3		;bck opslaan
rot.f
	move.l	a2,$50(a6)			;bltapt
	move.l	a3,$54(a6)			;bltdpt
	move.w	#64*(rot_bhgt/rot_blit)*rot_dpt+(rot_bwid/2),$58(a6);bltsize
	bsr	rotwit

	move.l	a2,$50(a6)			;bltapt
	move.l	a4,$54(a6)			;bltdpt
	move.w	#64*(rot_bhgt/rot_blit)*rot_dpt+(rot_bwid/2),$58(a6);bltsize
	bsr	rotwit

	add.l	#(rot_bhgt/rot_blit)*rot_dpt*rot_bwid,a2
	add.l	#(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a3
	add.l	#(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a4
	dbra	d3,rot.f

	bra	rot.c
	
rot.clean
	lea	((rot_shgt-rot_bhgt)/2*rot_swid*rot_dpt)+((rot_swid-rot_bwid)/4*2)+rotpln1,a3
	move.l	a3,a4
	add.l	#rotpic2-rotpic1,a4

	move.w	#0,$042(a6)
	move.w	#$100+$f0,$040(a6)

	move.w	#rot_swid-rot_bwid,$064(a6)
	move.w	#rot_swid-rot_bwid,$066(a6)

	move.w	#0,$074(a6)		;a dat
	move.l	#0,$044(a6)		;mask

	move.w	#rot_blit-1,d0
rot.blit1
	move.l	a3,$054(a6)		;destination
	move.w	#((rot_bhgt/rot_blit)*rot_dpt)*64+(rot_bwid/2),$058(a6)
	bsr	rotwit

	move.l	a4,$054(a6)		;destination
	move.w	#((rot_bhgt/rot_blit)*rot_dpt)*64+(rot_bwid/2),$058(a6)
	bsr	rotwit

	add.l	#(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a3
	add.l	#(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a4

	dbra	d0,rot.blit1

rot.c
	tst.l	var_obj1(a0)	;object ?
	beq	rot.a

	move.l	var_obj1(a0),a1	;object halen
	clr.l	var_obj1(a0)	;en wissen

	move.w	pic_dpt(a1),d1	;zelfde depth ?
	cmp.w	#rot_dpt,d1
	bgt	rot.a
	
	lea	rottab,a3		;object tabel
rot.cb
	tst.l	obj_stat(a3)	;object al aan ?
	bne	rot.ca

	move.w	pic_wid(a1),2+obj_wid(a3)
	move.w	pic_hgt(a1),2+obj_hgt(a3)

	move.w	pic_dpt(a1),2+obj_dpt(a3)

	move.w	pic_ani(a1),2+obj_anum(a3)
	move.w	var_anispd1(a0),2+obj_aspd(a3)
	move.w	var_anitel1(a0),2+obj_apos(a3)
	
;	lea	pic_pal(a1),a2	;palette
;	move.w	pic_palnum(a1),d0
;	lea	rotpal1,a0		;palettes
;	move.l	a0,a4
;	add.l	#rotpic2-rotpic1,a4
;rot.i
;	move.w	(a2),(a0)+
;	move.w	(a2)+,(a4)+
;	dbra	d0,rot.i		;a2 = source plane !

	lea	pic_raw(a1),a2	;raw
	move.l	a2,obj_raw(a3)	;plane

	move.l	obj_wid(a3),d0
	move.l	obj_hgt(a3),d1
	muls	d1,d0
	move.l	obj_dpt(a3),d1
	muls	d1,d0
	add.l	d0,a2
	move.l	a2,obj_rawm(a3)	;plane mask

	move.l	#1,obj_stat(a3)	;object aan

	clr.l	d1		;info ombouwen
	move.w	d7,d1
	divs	#16384,d1
	and.l	#$ffff,d1
	move.l	d1,d6		;sinusspeed (4)
	muls	#16384,d1
	sub.w	d1,d7

	move.w	d7,d1
	divs	#2048,d1
	and.l	#$ffff,d1
	move.l	d1,d5		;sinussize (8)
	muls	#2048,d1
	sub.w	d1,d7

	move.w	d7,d1
	divs	#64,d1
	and.l	#$ffff,d1
	move.l	d1,d4		;sinustype (32)
	muls	#64,d1
	sub.w	d1,d7

	move.w	d7,d1
	divs	#9,d1
	and.l	#$ffff,d1
	move.l	d1,d3		;sinuscentre (64)
	muls	#9,d1
	sub.w	d1,d7

	muls	#sintab_l,d4	;sinustype
	lea	sintab,a4
	add.l	d4,a4
	lea	obj_xsin(a3),a2
	move.w	#sintab_l-1,d0
rot.d
	move.b	(a4)+,(a2)+
	dbra	d0,rot.d
	
	muls	#4,d6
	add.l	#1,d6
	move.l	obj_xstp(a3),d0	;sinusspeed
	muls	d6,d0
	move.l	d0,obj_xstp(a3)
	move.l	obj_ystp(a3),d0	;sinuspeed
	muls	d6,d0
	move.l	d0,obj_ystp(a3)

	lea	rotsiztab,a4
	lsl.l	#2,d5		;*4
	move.l	(a4,d5),d5		;sinusize
	move.l	d5,obj_xsiz(a3)
	move.l	d5,obj_ysiz(a3)

	muls	#rot_xstp,d3	;sinucentre x
	add.l	d3,obj_ymid(a3)
	muls	#rot_ystp,d7	;sinucentre y
	add.l	d7,obj_xmid(a3)

	bra	rot.a
	
rot.ca
	add.l	#rottab_l,a3
	lea	rottab.e,a4
	cmp.l	a3,a4
	bne	rot.cb

rot.a
	bsr	rotrem
	bsr	rotset
rot.end
	tst.l	rotbckpln-rot(a5)	;background wissen
	beq	rot.nobuf

	lea	rotpic1,a0
	add.l	rotbuf-rot(a5),a0
	eor.l	#rotpln2-rotpln1,rotbuf-rot(a5)	;double playfield
	bra	rot.buf
rot.nobuf
	lea	rotpic1,a0
	move.l	rotbuf-rot(a5),d7
;	eor.l	#rotpln2-rotpln1,d7
	add.l	d7,a0
rot.buf
	movem.l	(sp)+,d1-d7/a1-a6
	rts

rotset
	movem.l	d0-d7/a0-a6,-(sp)
	lea	(rottab.e-rottab_l),a0
	move.w	#rot_objnum-1,d0
rotset.bb
	bsr	rotobj		;set object op scherm
	sub.l	#rottab_l,a0
	dbra	d0,rotset.bb
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
rotrem
	movem.l	d0-d7/a0-a6,-(sp)
	tst.l	rotbckpln-rot(a5)
	beq	rotrem.a
	lea	rottab,a0
	move.w	#rot_objnum-1,d0
rotrem.bb
	bsr	rotbck		;remove object op scherm
	add.l	#rottab_l,a0
	dbra	d0,rotrem.bb
rotrem.a
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
rotcln
	movem.l	d0-d7/a0-a6,-(sp)
	lea	rottab,a0
	move.w	#rot_objnum-1,d0
rotcln.bb
	clr.l	obj_stat(a0)
	add.l	#rottab_l,a0
	dbra	d0,rotcln.bb
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
rotobj
	movem.l	d0-d7/a0-a6,-(sp)	;a0=rotobj info

	tst.l	obj_stat(a0)
	beq	rotobj.bb

	bsr	rotsin

	move.l	obj_xpos(a0),d0	;d0=xpos
	move.l	obj_ypos(a0),d1	;d1=ypos
	
	lea	rotpln1,a1
	add.l	rotbuf-rot(a5),a1

	move.l	d0,d2
	lsr.l	#4,d0		;ruwe xpos
	lsl.l	#1,d0
	add.l	d0,a1

	muls	#rot_swid*rot_dpt,d1	;ypos
	add.l	d1,a1

	move.l	obj_wid(a0),d6	;bltsize berekenen
	lsr.w	#1,d6		;/2
	move.l	obj_hgt(a0),d5
	muls	2+obj_dpt(a0),d5
	lsl.w	#6,d5		;*64 voor bltsize
	add.w	d5,d6
	
	lsl.l	#3,d0		;bitscroll verder bereken
	sub.l	d0,d2
	lsl.w	#8,d2
	lsl.w	#4,d2
	move.w	d2,$42(a6)		;bltcon1
	add.w	#$0fca,d2
	move.w	d2,$40(a6)		;bltcon0

rotobj.da
	move.l	obj_apos(a0),d7
	move.l	obj_aspd(a0),d5
	divs	d5,d7
	and.l	#$ffff,d7
	cmp.w	2+obj_anum(a0),d7
	blt	rotobj.ea
	clr.l	obj_apos(a0)
	bra	rotobj.da
rotobj.ea
	move.l	obj_wid(a0),d5	;breedte
	muls	2+obj_hgt(a0),d5	;hoogte
	muls	2+obj_dpt(a0),d5	;plnnumes
	muls	d7,d5		;anipos
	lsl.l	#1,d5		;+mask
	
	move.l	obj_raw(a0),a4	;obj picture
	add.l	d5,a4
	move.l	obj_rawm(a0),a3
	add.l	d5,a3

	add.l	#1,obj_apos(a0)
	
	move.l	#rot_swid,d7
	sub.l	obj_wid(a0),d7
	move.w	d7,$60(a6)		;bltcmod
	move.w	d7,$66(a6)		;bltdmod

	move.w	#0,$62(a6)		;bltbmod
	move.w	#0,$64(a6)		;bltamod

rotobj.a
	move.l	a1,$48(a6)		;bltcpt
	move.l	a4,$4c(a6)		;bltbpt
	move.l	a3,$50(a6)		;bltapt
	move.l	a1,$54(a6)		;bltdpt

	move.w	d6,$58(a6)		;bltsize
	bsr	rotwit

rotobj.bb
	movem.l	(sp)+,d0-d7/a0-a6
	rts

rotbck
	movem.l	d0-d7/a0-a6,-(sp)

	tst.l	obj_stat(a0)
	beq	rotbck.bb
	
	move.l	rotbckpln-rot(a5),a4	;source
	sub.l	#(((rot_shgt-rot_bhgt)/2)*rot_bwid*rot_dpt)+((rot_swid-rot_bwid)/4*2),a4
	lea	rotpln1,a1

	add.l	rotbuf-rot(a5),a1	;destination

	move.l	obj_xold(a0),d0
	lsr.l	#4,d0
	lsl.l	#1,d0
	add.l	d0,a4
	add.l	d0,a1
	move.l	obj_yold(a0),d0
	move.l	d0,d1
	muls	#rot_bwid*rot_dpt,d0
	add.l	d0,a4
	muls	#rot_swid*rot_dpt,d1
	add.l	d1,a1
	
	move.l	#rot_bwid,d7
	sub.l	obj_wid(a0),d7
	move.w	d7,$64(a6)		;bltamod

	move.l	#rot_swid,d7
	sub.l	obj_wid(a0),d7
	move.w	d7,$66(a6)		;bltdmod

	clr.w	$42(a6)		;bltcon1
	move.w	#$09f0,$40(a6)	;bltcon0

	move.l	obj_wid(a0),d6	;bltsize berekenen
	lsr.w	#1,d6		;/2
	move.l	obj_hgt(a0),d5
	muls	2+obj_dpt(a0),d5
	lsl.w	#6,d5		;*64
	add.w	d5,d6
	
rotbck.c
	move.l	a4,$50(a6)		;bltapt
	move.l	a1,$54(a6)		;bltdpt

	move.w	d6,$58(a6)		;bltsize
	bsr	rotwit

rotbck.bb
	movem.l	(sp)+,d0-d7/a0-a6
	rts

rotwit
rotwit.a
	btst	#6,($dff002).l
	bne	rotwit.a
	rts
	
rotsin
	movem.l	d0-d7/a0-a6,-(sp)

	move.l	obj_xsin(a0),d2
	move.l	obj_ysin(a0),d3

	lea	dat.sin,a1

	move.w	(a1,d2),d0		;x sin pos
	ext.l	d0
	move.l	obj_xsiz(a0),d4
	divs	d4,d0		;x circel grote
	add.l	obj_xmid(a0),d0	;x centrum pos
	and.l	#$ffff,d0

	add.l	obj_xstp(a0),d2	;x sin stap grote

	cmp.l	obj_xend(a0),d2
	blt	rotsin.aa
	move.l	obj_xstr(a0),d2
rotsin.aa
	cmp.l	obj_xstr(a0),d2
	bge	rotsin.ab
	move.l	obj_xend(a0),d2
rotsin.ab

	move.w	(a1,d3),d1		;y sin pos
	ext.l	d1
	move.l	obj_ysiz(a0),d4	;y circel grote
	divs	d4,d1		;y circel grote
	add.l	obj_ymid(a0),d1	;y centrum pos
	and.l	#$ffff,d1

	add.l	obj_ystp(a0),d3	;y sin stap grote

	cmp.l	obj_yend(a0),d3
	blt	rotsin.ba
	move.l	obj_ystr(a0),d3
rotsin.ba
	cmp.l	obj_ystr(a0),d3
	bge	rotsin.bb
	move.l	obj_yend(a0),d3
rotsin.bb
	move.l	d2,obj_xsin(a0)
	move.l	d3,obj_ysin(a0)

	move.l	obj_wid(a0),d2	;x centreren
	sub.l	#2,d2		;- blitter ruimte
	lsl.l	#2,d2
	sub.l	d2,d0
	move.l	obj_hgt(a0),d2	;y centreren
	lsr.l	#1,d2
	sub.l	d2,d1

	cmp.l	#0,d0		;buiten scherm ?
	bge	rotsin.za
	clr.l	d0
rotsin.za
	move.l	#rot_swid*8,d7
	move.l	obj_wid(a0),d6
	lsl.l	#3,d6		;*8
	sub.l	d6,d7
	cmp.l	d7,d0
	ble	rotsin.zb
	move.l	d7,d0
rotsin.zb
	
	cmp.l	#0,d1
	bge	rotsin.zc
	clr.l	d1
rotsin.zc
	move.l	#rot_shgt,d7
	sub.l	obj_hgt(a0),d7
	cmp.l	d7,d1
	ble	rotsin.zd
	move.l	d7,d1
rotsin.zd
	
	move.l	obj_xpos(a0),obj_xold(a0)	;oldpos
	move.l	obj_ypos(a0),obj_yold(a0)

	move.l	d0,obj_xpos(a0)
	move.l	d1,obj_ypos(a0)
rotsin.z
	movem.l	(sp)+,d0-d7/a0-a6
	rts

rotbuf	dc.l	0
rotbckpln	dc.l	0

obj_xpos	equ	$0
obj_ypos	equ	$4
obj_apos	equ	$8
obj_aspd	equ	$0c
obj_anum	equ	$10
obj_wid	equ	$14
obj_hgt	equ	$18
obj_raw	equ	$1c
obj_rawm	equ	$20
obj_dpt	equ	$24

obj_xold	equ	$28
obj_yold	equ	$2c
obj_xsin	equ	$30
obj_xsiz	equ	$34
obj_xmid	equ	$38
obj_xstp	equ	$3c
obj_xstr	equ	$40
obj_xend	equ	$44
obj_ysin	equ	$48
obj_ysiz	equ	$4c
obj_ymid	equ	$50
obj_ystp	equ	$54
obj_ystr	equ	$58
obj_yend	equ	$5c
obj_stat	equ	$60


;		x-pos	y-pos	animpos	animspeed	animnum
rottab
	dc.l	0,	0,	0,	0,	0

;		width	hight	picture	picturemask
	dc.l	0,	0,	0,	0

;		plnnum	xold	yold
	dc.l	0,	0,	0

;		xsin	xsiz	xmid	xstp	xstr	xend
	dc.l	0,	500,	256,	2,	0,	720*2

;		ysin	ysiz	ymid	ystp	ystr	yend
	dc.l	180*2,	500,	192,	2,	0,	720*2

;		status
	dc.l	0

rottab.t
rottab_l	equ	rottab.t-rottab

	rept	rot_objnum-1
	dc.l	0,	0,	0,	0,	0
	dc.l	0,	0,	0,	0
	dc.l	0,	0,	0
	dc.l	0,	500,	256,	2,	0,	720*2
	dc.l	180*2,	500,	192,	6,	0,	720*2
	dc.l	0
	endr
rottab.e

rotsiztab
	ifeq	rot_vewh-0
	dc.l	1300/1,1040/1,832/1,665/1
	dc.l	532/1,425/1,340/1,272/1		;1,25
	endc
	ifeq	rot_vewh-$8000
	dc.l	1300/2,1040/2,832/2,665/2
	dc.l	532/2,425/2,340/2,272/2		;1,25
	endc

sintab
	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	1
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
sintab.t
sintab_l	equ	sintab.t-sintab
	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440	;O	2
	dc.l	360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),4,0,1440	;8	3
	dc.l	360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440

	dc.l	360,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440	;(X)	4
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),4,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),4,0,1440	;complex	5
	dc.l	360,1300,(rot_shgt/2)-(rot_ystp*3),6,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;|	6
	dc.l	360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440

	dc.l	360,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440	;-	7
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;/\ Tip	8
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),2,720,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;\/ Tip	9
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),2,0,720

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,720,1440	;< Tip	10
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,720	;> Tip	11
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,720

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	12
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	13
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	14
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	15
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	16
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440



	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.	17
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440

	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),-2,0,1440	;O	18
	dc.l	360,1300,(rot_shgt/2)-(rot_ystp*3),-2,0,1440

	rept	32-18
	dc.l	000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440	;.
	dc.l	000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
	endr
sintab.e


	cnop	0,2
dat.sin	incbin	'videotracker:bin/objsin.bin'
dat.sin.e

;pic_wid	equ	4		;wide in bytes
;pic_hgt	equ	6		;hoogte
;pic_dpt	equ	8		;number planes
;pic_ani	equ	10		;aantal effes (anim)
;pic_vew	equ	12		;viewmode
;pic_cycstr	equ	14		;cycle start (*4)
;pic_cycend	equ	15		;cycle end (*4)
;pic_cycspd	equ	16		;cycle speed (*4)
;pic_cycadd	equ	17		;cycle add (*4)
;pic_palnum	equ	30		;aantal kleuren
;pic_pal	equ	32		;palette start
;pic_palsiz	equ	256*2		;vaste palette size
;pic_raw	equ	pic_pal+pic_palsiz	;palette start


	cnop	0,2
rotpic1
	dc.l	'PICT'
	dc.w	rot_swid,rot_shgt,rot_dpt,1,rot_vewh+rot_vewl
	dc.b	0,0,0,0
	dc.b	0,0,0,0
	dc.b	0,0,0,0
	dc.b	0,0,0,0

	ifeq	1-rot_dpt
	dc.w	2-1
rotpal1
	dc.w	$000,$fff
	ds.w	256-2
	endc

	ifeq	2-rot_dpt
	dc.w	4-1
rotpal1
	dc.w	$000,$555,$aaa,$fff
	ds.w	256-4
	endc

	ifeq	3-rot_dpt
	dc.w	8-1
rotpal1
	dc.w	$000,$333,$555,$777,$999,$bbb,$ddd,$fff
	ds.w	256-8
	endc

	ifeq	4-rot_dpt
	dc.w	16-1
rotpal1
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	ds.w	256-16
	endc

	ifeq	5-rot_dpt
	dc.w	32-1
rotpal1
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	dc.w	$00,$11,$22,$33,$44,$55,$66,$77
	dc.w	$88,$99,$aa,$bb,$cc,$dd,$ee,$ff
	ds.w	256-32
	endc

	ifeq	6-rot_dpt
	dc.w	32-1
rotpal1
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	dc.w	$00,$11,$22,$33,$44,$55,$66,$77
	dc.w	$88,$99,$aa,$bb,$cc,$dd,$ee,$ff
	ds.w	256-32
	endc

rotpln1
	ds.b	rot_dpt*rot_swid*rot_shgt


	cnop	0,2
rotpic2
	dc.l	'PICT'
	dc.w	rot_swid,rot_shgt,rot_dpt,1,rot_vewh+rot_vewl
	dc.b	0,0,0,0
	dc.b	0,0,0,0
	dc.b	0,0,0,0
	dc.b	0,0,0,0

	ifeq	1-rot_dpt
	dc.w	2-1
rotpal2
	dc.w	$000,$fff
	ds.w	256-2
	endc

	ifeq	2-rot_dpt
	dc.w	4-1
rotpal2
	dc.w	$000,$555,$aaa,$fff
	ds.w	256-4
	endc

	ifeq	3-rot_dpt
	dc.w	8-1
rotpal2
	dc.w	$000,$333,$555,$777,$999,$bbb,$ddd,$fff
	ds.w	256-8
	endc

	ifeq	4-rot_dpt
	dc.w	16-1
rotpal2
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	ds.w	256-16
	endc

	ifeq	5-rot_dpt
	dc.w	32-1
rotpal2
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	dc.w	$00,$11,$22,$33,$44,$55,$66,$77
	dc.w	$88,$99,$aa,$bb,$cc,$dd,$ee,$ff
	ds.w	256-32
	endc

	ifeq	6-rot_dpt
	dc.w	32-1
rotpal2
	dc.w	$000,$111,$222,$333,$444,$555,$666,$777
	dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
	dc.w	$00,$11,$22,$33,$44,$55,$66,$77
	dc.w	$88,$99,$aa,$bb,$cc,$dd,$ee,$ff
	ds.w	256-32
	endc

rotpln2
	ds.b	rot_dpt*rot_swid*rot_shgt

rot.e

;**********************************************************************

;and here are the incbin-files....

		ifd	rout
		cnop	0,2
rotincobj
		incbin	'videotracker:effect/trianglef32b_2.obj'
		cnop	0,2
rotincbck
		incbin	'videotracker:effect/creator_l2.bck'
		endc
		
