;PictureWipe


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.

;ntsctest		;when this is on, the routineplayer is in ntsc-mode

aga
;ocs			;off=AGA,on=OCS testing not possible on OCS !

routinemode	equ	12	;the routinemode !


; VideoTracker AGA developer source 25-12-93
; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
; wich makes low-resolution overscan a bit ugly.
; no "interactive" support anymore, it's only used by Kick 1.3 users.

; 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+

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

		ifd	ocs
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
		endc
		
		ifnd	ocs
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 (*8)
pic_cycend	equ	15		;cycle end (*8)
pic_cycspd	equ	16		;cycle speed (*8)
pic_cycadd	equ	17		;cycle add (*8)
pic_widmod	equ	46		;animation-width modulo
pic_future	equ	50		;free future space
pic_palnum	equ	62		;aantal kleuren
pic_pal		equ	64		;palette start
pic_palsiz	equ	256*4		;vaste palette size (longwords)
pic_raw		equ	pic_pal+pic_palsiz	;palette start
		endc
		
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		;animcount
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_anilop1	equ	$024
var_rottrg	equ	$028		;effect trigger
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

	ifd	rout
	;videotracker routine-test

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

	SECTION	1,CODE_C
tus
	lea	var,a0

;	move.l	#rotincobj,var_obj1(a0)	;incbinfile !!!
;	move.l	#rotincbck,var_bck(a0)	;incbinfile !!!
;	move.l	#rottube,var_vec1(a0)	;incbinfile !!!
;	move.l	#rotsrc,curpic1		;picture !!!
;	move.l	#rotsrc,curpal1		;palette !!!
;	move.l	#rotset,var_cols1(a0)	;colorset !!!

	bsr	paltabres

	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

	ifd	ntsctest
	move.b	#60,ntscmode		;60 hertz (ntsc)
	endc

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

	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	#$8,d0			;lower limit, all stations 100%
	blt	copbuf.novb

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

	lea	gra.s,a0		;buffer copieren
	lea	cprbuf,a1
copbuf_aga				;AGA stuff :)
	move.l	#(gra.ql)/4-1,d0
copbuf.a
	move.w	2(a0),2(a1)
	add.l	#4,a0
	add.l	#4,a1
	dbra	d0,copbuf.a

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)
	move.b	anilop1,var_anilop1(a0)
	move.l	#rottrg,var_rottrg(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	#rotincpic,curpic1	;incbinfile !!!
	clr.l	curpic2			;background picture
	move.w	#1,anispd1		;animationspeed
	clr.w	anitel1			;animation position
	move.b	#0,anilop1		;animloop off/on !!!
	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

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	#$61,d6

	cmp.w	#40,pic_wid(a2)		;overscan ?
	ble.s	grap.noov1
	move.l	#$41,d6
grap.noov1

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

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

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

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

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

	cmp.w	#80*2,pic_wid(a2)	;overscan ?
	ble.s	grap.noshi2
	move.l	#(vew_wid)*8*4,d0
	move.l	#$51,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
	bra.s	grap.noshi5
grap.nohi5
	btst	#6,d6			;super hires ?
	beq.s	grap.noshi5	
	add.l	d4,d4			;*4
	add.l	d4,d4
grap.noshi5

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

	btst	#15,d6			;hires ?
	beq.s	grap.nohi3	
	move.l	#17,d0			;ecs 9
	move.l	#4,d1			;ecs 2
	move.l	#2,d7
	bra.s	grap.noshi3
grap.nohi3
	btst	#6,d6			;super hires ?
	beq.s	grap.noshi3	
	move.l	#17,d0			;ecs 9
	move.l	#4,d1			;ecs 2
	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	curpic2+4,a6		;oneven plane
	move.l	currot2,a5		;oneven plane
	clr.l	curpic2			;mischien niet goed
	clr.l	curpic2+4		;mischien niet goed
	clr.l	curpal2			;mischien niet goed
	clr.l	currot2			;mischien niet goed

	cmp.l	curpic1,a3		;picture hetzelfde ?
	beq.s	grap.nopic2
	
	cmp.l	#0,currot1		;routine ?	
	beq.s	grap.norot
	cmp.l	currot1,a5		;routine hetzelfde ?
	beq.s	grap.nopic2
grap.norot
	cmp.b	#4,d2			;> 16 kleuren ? (AGA)
	bgt	grap.nopic2

	move.w	pic_dpt(a3),d3		;plnnummer 2 halen
	cmp.b	d2,d3			;gelijke plnummers ?
	bne.s	grap.nopic2
	move.w	pic_vew(a2),d1
	cmp.w	pic_vew(a3),d1		;view gelijk ?
	bne.s	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		;toch wel goed !
	move.l	a6,curpic2+4
	move.l	a3,curpal2
	move.l	a5,currot2

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

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

	move.w	2(a4),d1		;bplcon0
	btst	#10,d1			;al dual 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)

	move.w	50(a0),58(a0)		;plane 6>7 copieren
	move.w	54(a0),62(a0)

	bra.s	grap.tb
grap.ta
	move.w	24(a0),58(a0)		;plane 3>7 copieren
	move.w	28(a0),62(a0)

	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	#16-1,d1
grap.pal
	move.l	(a3)+,60(a3)
	dbra	d1,grap.pal

grap.nocop
	add.w	d3,d2			;aantal bitplanes
	cmp.w	#8,d2			;8 bitplanes ?
	blt	grap.no8planes2
	move.w	#%10000,d2		;only bit 4
	bra	grap.8planes2
grap.no8planes2
	lsl.w	#8,d2
	lsl.w	#4,d2
grap.8planes2
	or.w	#$400,d2		;dual playfield aan
	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 dual playfield
	cmp.w	#8,d2			;8 bitplanes ?
	blt	grap.no8planes
	move.w	#%10000,d2		;only bit 4
	bra	grap.8planes
grap.no8planes
	lsl.w	#8,d2
	lsl.w	#4,d2
grap.8planes
	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

	ifd	gui
	tst.b	genlck
	bne	grap.genset
	endc

	or.l	#$100,d2		;genlock off ($302)

	ifd	gui
	bra	grap.gencont
grap.genset
	or.l	#$102,d2		;genlock on ($302)
grap.gencont
	endc
	
	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
	bra.s	grappln.noshi
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	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

	cmp.w	#8,pic_dpt(a2)		;8 planes ?
	bne	grappln.noham8
	btst	#3,pic_vew(a2)		;ham ?
	beq	grappln.noham8

	move.w	-14(a0),d0		;get 6
	move.w	-10(a0),d1
	move.w	-6(a0),d2		;get 7
	move.w	-2(a0),d3
	move.w	-18(a0),-2(a0)		;5>7
	move.w	-22(a0),-6(a0)		;5>7
	move.w	-26(a0),-10(a0)		;4>6
	move.w	-30(a0),-14(a0)		;4>6
	move.w	-34(a0),-18(a0)		;3>5
	move.w	-38(a0),-22(a0)		;3>5
	move.w	-42(a0),-26(a0)		;2>4
	move.w	-46(a0),-30(a0)		;2>4
	move.w	-50(a0),-34(a0)		;1>3
	move.w	-54(a0),-38(a0)		;1>3
	move.w	-58(a0),-42(a0)		;0>2
	move.w	-62(a0),-46(a0)		;0>2
	move.w	d0,-62(a0)		;6>0
	move.w	d1,-58(a0)		;6>0
	move.w	d2,-54(a0)		;7>1
	move.w	d3,-50(a0)		;7>1
grappln.noham8

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

	;sets palettes to palette-buffer
	
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	#16*4+palette,a1
	bsr.s	gracfrm
	
	bsr	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

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

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

	move.l	curpic1,a2		;current raw
	cmp.l	#0,a2
	beq.s	palcycctr.qb
	lea	cycdel1,a3		;cycle delays
	move.l	#paltab,a4
	bsr	palcyc
palcycctr.qb
	move.l	curpic2,a2		;current raw
	cmp.l	#0,a2
	beq.s	palcycctr.c
	lea	cycdel2,a3		;cycle delays
	move.l	#16*2+paltab,a4
	bsr	palcyc
palcycctr.c
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
	;copies palette-buffer to copper

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

	lea	gracprcol,a1		;AGA
	move.l	#palette,a0
	move.l	#paltab,a2
	move.w	#8-1,d6
palctr.e
	move.w	#32-1,d7
palctr.d
	move.w	(a2)+,d0			;get cycle-position
	move.w	(a0,d0),6(a1)			;high RGB bits
	move.w	2(a0,d0),((32+1)*4)+6(a1)	;low RGB bits
	add.l	#4,a1
	dbra	d7,palctr.d
	add.l	#((32+2)*4),a1
	dbra	d6,palctr.e
palctr.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;reset palette tabel, for proper color cycling

paltabres
	movem.l	d0-d7/a0-a6,-(sp)
	ifd	aga
	lea	256*2+paltab,a0
	move.w	#16,a1
	move.l	#$03c003c4,d0
	move.l	#$03c803cc,d1
	move.l	#$03d003d4,d2
	move.l	#$03d803dc,d3
	move.l	#$03e003e4,d4
	move.l	#$03e803ec,d5
	move.l	#$03f003f4,d6
	move.l	#$03f803fc,d7
	endc
	ifd	ocs
	lea	32*2+paltab,a0
	move.w	#2,a1
	move.l	#$00200022,d0
	move.l	#$00240026,d1
	move.l	#$0028002a,d2
	move.l	#$002c002e,d3
	move.l	#$00300032,d4
	move.l	#$00340036,d5
	move.l	#$0038003a,d6
	move.l	#$003c003e,d7
	endc
paltabres.a
	movem.l	d0-d7,-(a0)
	ifd	aga
	sub.l	#$00400040,d0
	sub.l	#$00400040,d1
	sub.l	#$00400040,d2
	sub.l	#$00400040,d3
	sub.l	#$00400040,d4
	sub.l	#$00400040,d5
	sub.l	#$00400040,d6
	sub.l	#$00400040,d7
	endc
	ifd	ocs
	sub.l	#$00200020,d0
	sub.l	#$00200020,d1
	sub.l	#$00200020,d2
	sub.l	#$00200020,d3
	sub.l	#$00200020,d4
	sub.l	#$00200020,d5
	sub.l	#$00200020,d6
	sub.l	#$00200020,d7
	endc
	sub.w	#1,a1
	cmp.w	#0,a1
	bne	paltabres.a
paltabres.end
	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.s	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.s	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
rottrg		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
	
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			;copperlist edit buffer
gracprscr
	dc.w	$8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
gracprbpl
	dc.w	$100,$0000,$102,$0000,$104,$0020
	dc.w	$108,$0000,$10a,$0000,$1fc,$0003
gracprpln
	dc.w	$e0,$0000,$e2,$0000	;1
	dc.w	$e4,$0000,$e6,$0000	;2
	dc.w	$e8,$0000,$ea,$0000	;3
	dc.w	$ec,$0000,$ee,$0000	;4
	dc.w	$f0,$0000,$f2,$0000	;5
	dc.w	$f4,$0000,$f6,$0000	;6
	dc.w	$f8,$0000,$fa,$0000	;7
	dc.w	$fc,$0000,$fe,$0000	;8
gracprcol
	dc.w	$106,$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	$106,$0200
	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	$106,$2000
	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	$106,$2200
	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	$106,$4000
	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	$106,$4200
	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	$106,$6000
	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	$106,$6200
	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	$106,$8000
	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	$106,$8200
	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	$106,$a000
	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	$106,$a200
	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	$106,$c000
	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	$106,$c200
	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	$106,$e000
	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	$106,$e200
	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	$106,$1000

cprjmp
	dc.w	$080,0,$082,0
gra.e
gra.ql	equ	gra.e-gra.s		;block lengte

cpr					;real copperlist
	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,$1fc,$0003

	dc.w	$e0,$0000,$e2,$0000	;0
	dc.w	$e4,$0000,$e6,$0000	;1
	dc.w	$e8,$0000,$ea,$0000	;2
	dc.w	$ec,$0000,$ee,$0000	;3
	dc.w	$f0,$0000,$f2,$0000	;4
	dc.w	$f4,$0000,$f6,$0000	;5
	dc.w	$f8,$0000,$fa,$0000	;6
	dc.w	$fc,$0000,$fe,$0000	;7

	dc.w	$106,$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	$106,$0200
	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	$106,$2000
	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	$106,$2200
	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	$106,$4000
	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	$106,$4200
	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	$106,$6000
	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	$106,$6200
	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	$106,$8000
	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	$106,$8200
	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	$106,$a000
	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	$106,$a200
	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	$106,$c000
	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	$106,$c200
	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	$106,$e000
	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	$106,$e200
	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	$106,$1000

	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

palette		ds.l	256		;palette 24-bits, far out !
paltab		ds.w	256		;palette cycle-tabel

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

	
;	SECTION	10,CODE_C
		endc

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

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

;	Output:
;	a0=picture
;	d1=copperlist

	SECTION	3,CODE
	cnop	0,8
rot
rotp
	ifd	ocs
	dc.l	'ROTO'
	endc
	ifnd	ocs
	dc.l	'ROTA'
	endc
	movem.l	d2-d7/a1-a6,-(sp)

	lea	($dff000).l,a6	;hardware
	lea	rot,a5		;prog base
	ifd	rout
	move.l	#rotc,a2
	endc
	move.l	a2,rotchp-rot(a5)
	
	move.l	var_rottrg(a0),a2	;opnieuw getriggerd ?
	tst.b	(a2)
	beq.s	rot.nonewwipe
	clr.b	(a2)
	move.b	#1,rottrgrot-rot(a5)
	move.l	d0,rotmod-rot(a5)
	clr.l	rotmrppos-rot(a5)
rot.nonewwipe
	
;	move.l	d0,d1
;	divs	#256,d1
;	and.l	#$ffff,d1
;;	move.l	d1,rotshp2-rot(a5)	;sinusshape pic 2
;	muls	#256,d1
;	sub.l	d1,d0

;	move.l	d0,d1
;	divs	#16,d1
;	and.l	#$ffff,d1
;	move.l	d1,rotshp2-rot(a5)	;sinusshape pic 2
;	muls	#16,d1
;	sub.l	d1,d0

;	move.l	d0,rotshp1-rot(a5)	;sinusshape pic 1

	bsr	rotfil

	move.l	var_cprbck(a0),a2
	move.l	a2,d1
	sub.l	#8,d1

	move.l	rotchp-rot(a5),a1
	add.l	#rotcop.1-rotc,a1		;copperjump adres zetten
	add.l	rotbuf-rot(a5),a1
	move.w	d1,6(a1)
	swap	d1
	move.w	d1,2(a1)

	bsr	rotset

	sub.l	a0,a0			;geen pic
	ifd	rout
	move.l	#rotincpic,a0		;incbinfile !!!
	endc
	
	move.l	rotchp-rot(a5),a1
	add.l	#rotcop.1-rotc,a1		;copperlist
	add.l	rotbuf-rot(a5),a1
	eor.l	#rotcop.2-rotcop.1,rotbuf-rot(a5)
	move.l	a1,d1
	movem.l	(sp)+,d2-d7/a1-a6
	rts

rotfil
	movem.l	d0-d7/a0-a6,-(sp)
	move.l	rotchp-rot(a5),a0
	add.l	#rotcop.1-rotc,a0
	tst.w	2(a0)			;leeg ?
	bne	rotfil.end
	move.w	#win_str,d1
	move.w	#vew_hgt-4-1,d0
rotfil.a	
	move.b	d1,8(a0)
	add.l	#1,d1
	add.l	#rotcop.t,a0
	dbra	d0,rotfil.a	

	move.l	rotchp-rot(a5),a0
	add.l	#rotcop.1-rotc,a0
	move.l	a0,a1
	add.l	#rotcop.2-rotcop.1,a1
	move.w	#rotcop_l/2-1,d0	
rotfil.c
	move.w	(a0)+,(a1)+
	dbra	d0,rotfil.c
	
rotfil.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

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

	lea	(9*32+rotcopscr),a0
	moveq.l	#0,d0
	moveq.l	#0,d1
	moveq.l	#0,d2
	moveq.l	#0,d3
	moveq.l	#0,d4
	moveq.l	#0,d5
	moveq.l	#0,d6
	moveq.l	#0,d7
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	movem.l	d0-d7,-(a0)
	
rotcopclr.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

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

	lea	rotcopscr+vew_hgt-4,a1
	move.l	#vew_hgt-4-1,d0
rotcopfil.e
	tst.b	-(a1)
	bne	rotcopfil.f
	dbra	d0,rotcopfil.e
	moveq.l	#0,d0
rotcopfil.f
	muls	#rotcop.t,d0
	move.l	a3,a4
	add.l	d0,a4
	move.l	a3,a2
	add.l	#rotcop.t*(vew_hgt-4),a2
		
	lea	rotcopemp,a0
	move.l	a0,d0
	move.l	a0,d1
	move.l	a0,d2
	move.l	a0,d3
	move.l	a0,d4
	move.l	a0,d5
	move.l	a0,d6
	move.l	a0,d7

	lea	rotcopscr,a1

rotcopfil.a	
	cmp.l	a3,a4
	beq	rotcopfil.h

	tst.b	(a1)+
	beq.s	rotcopfil.c

	move.l	d0,a0
	
	move.w	18(a3),d0	;0
	swap	d0
	move.w	22(a3),d0

	cmp.l	d0,a0
	beq	rotcopfil.d

	move.w	26(a3),d1	;1
	swap	d1
	move.w	30(a3),d1

	move.w	34(a3),d2	;2
	swap	d2
	move.w	38(a3),d2

	move.w	42(a3),d3	;3
	swap	d3
	move.w	46(a3),d3

	move.w	50(a3),d4	;4
	swap	d4
	move.w	54(a3),d4

	move.w	58(a3),d5	;5
	swap	d5
	move.w	62(a3),d5

	move.w	66(a3),d6	;6
	swap	d6
	move.w	70(a3),d6

	move.w	74(a3),d7	;7
	swap	d7
	move.w	78(a3),d7

	bra.s	rotcopfil.d	
rotcopfil.c

	move.l	d0,a0
	
	move.w	18(a3),d0	;0
	swap	d0
	move.w	22(a3),d0	

	cmp.l	d0,a0
	beq.s	rotcopfil.d
	move.l	a0,d0

	move.w	d0,22(a3)	
	swap	d0
	move.w	d0,18(a3)	;0
	swap	d0

	move.w	d1,30(a3)
	swap	d1
	move.w	d1,26(a3)	;1
	swap	d1

	move.w	d2,38(a3)
	swap	d2
	move.w	d2,34(a3)	;2
	swap	d2

	move.w	d3,46(a3)
	swap	d3
	move.w	d3,42(a3)	;3
	swap	d3

	move.w	d4,54(a3)
	swap	d4
	move.w	d4,50(a3)	;4
	swap	d4

	move.w	d5,62(a3)
	swap	d5
	move.w	d5,58(a3)	;5
	swap	d5

	move.w	d6,70(a3)
	swap	d6
	move.w	d6,66(a3)	;6
	swap	d6

	move.w	d7,78(a3)
	swap	d7
	move.w	d7,74(a3)	;7
	swap	d7
rotcopfil.d
	add.l	#rotcop.t,a3
	bra	rotcopfil.a	

rotcopfil.h
	lea	rotcopemp,a0
	move.l	a0,d0
	move.l	d0,d1
	swap	d1
rotcopfil.g
	cmp.l	a3,a2
	beq.s	rotcopfil.end

	cmp.w	22(a3),d0
	bne.s	rotcopfil.n	
	cmp.w	18(a3),d1	;0
	beq.s	rotcopfil.m	
rotcopfil.n
	move.w	d0,22(a3)	
	move.w	d1,18(a3)	;0
	move.w	d0,30(a3)
	move.w	d1,26(a3)	;1
	move.w	d0,38(a3)
	move.w	d1,34(a3)	;2
	move.w	d0,46(a3)
	move.w	d1,42(a3)	;3
	move.w	d0,54(a3)
	move.w	d1,50(a3)	;4
	move.w	d0,62(a3)
	move.w	d1,58(a3)	;5
	move.w	d0,70(a3)
	move.w	d1,66(a3)	;6
	move.w	d0,78(a3)
	move.w	d1,74(a3)	;7
rotcopfil.m	
	add.l	#rotcop.t,a3
	bra	rotcopfil.g
rotcopfil.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

	;a1	picture
	;d1	rawplanes
	;a2	sinusinfo
	
rotget
	movem.l	d3-d7/a0-a6,-(sp)

	lea	rotsintab,a3
	
	move.l	(a2),d0			;get current x-pos
	clr.l	d3
	move.w	(a3,d0),d3		;get sinus value

	clr.l	d4
	move.w	pic_wid(a1),d4		;pic width in bytes
	lsl.l	#3,d4			;*8

	move.l	#vew_wid*8,d7
	btst	#15-8,pic_vew(a1)
	beq	rotget.bc
	move.l	#vew_wid*8*2,d7
rotget.bc
	sub.l	d7,d4			;-vewwidth

	cmp.w	#0,d4			;<0 ?
	bge	rotget.ba
	clr.l	d4
	bra	rotget.endx
rotget.ba
	muls	d4,d3

	ifd	ocs
	lsr.l	#8,d3			;/1024
	lsr.l	#2,d3
	divs	#16,d3
	swap	d3
	move.w	#$f,d4
	sub.w	d3,d4
	or.w	d4,d2			;bitshift $102
	endc
	
	ifnd	ocs
	lsr.l	#8,d3			;/256
	lsr.l	#2,d3
	divs	#64,d3
	swap	d3
	move.w	#64-1,d4
	sub.w	d3,d4

	bfexts	d4{26:2},d6
	bfins	d6,d2{20:2}
	bfexts	d4{28:4},d6
	bfins	d6,d2{28:4}
	endc
	
	clr.w	d3
	swap	d3

	ifd	ocs
	lsl.l	#1,d3			;*2
	endc
	ifnd	ocs
	lsl.l	#3,d3			;*8
	endc

	add.l	d3,d1			;raw+x

rotget.endx
	add.l	8(a2),d0		;+ sinusadd
	cmp.l	#rotsintab.e-rotsintab,d0
	blt	rotget.bb
	sub.l	#rotsintab.e-rotsintab,d0
rotget.bb
	move.l	d0,(a2)			;return position
	
	move.l	4(a2),d0		;get current y-pos
	clr.l	d3
	move.w	(a3,d0),d3		;get sinus value

	clr.l	d4
	move.w	pic_hgt(a1),d4		;pic heigth

	move.l	#vew_hgt,d7
	cmp.b	#50,var_ntsc(a0)	;ntsc check
	beq	rotget.pal
	sub.l	#56,d7
rotget.pal

	btst	#2,pic_vew(a1)
	beq	rotget.cc
	add.l	d7,d7
rotget.cc
	sub.l	d7,d4			;-vewheigth

	cmp.w	#0,d4			;<0 ?
	bge	rotget.ca
	clr.l	d4
rotget.ca
	muls	d4,d3
	lsr.l	#8,d3			;/1024
	lsr.l	#2,d3
	
	clr.l	d4
	move.w	pic_wid(a1),d4		;*width
	muls	pic_dpt(a1),d4		;*depth
	muls	d4,d3
	
	add.l	d3,d1			;raw+y
	add.l	12(a2),d0		;+ sinusadd
	cmp.l	#rotsintab.e-rotsintab,d0
	blt	rotget.c
	sub.l	#rotsintab.e-rotsintab,d0
rotget.c
	move.l	d0,4(a2)		;return position

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

	tst.l	var_pic1(a0)		;is there a picture ?
	beq	rotset.end

	clr.l	d2			;$102 bitshift

	move.l	var_pic1(a0),a1		;get picture
	cmp.l	#'PICT',(a1)
	bne	rotset.end		;nog aanwezig ?
	
	lea	pic_raw(a1),a3		;start picture planes
	move.l	a3,d1
	move.l	d1,d5			;plane1 naar plane2 copieren

	clr.l	d3
	move.w	pic_wid(a1),d3		;skip voor plane1
	
;	move.l	rotshp1-rot(a5),d0	;shape number
;	muls	#4*4,d0
	clr.l	d0

	lea	rotshptab,a2		;sinus shape table
	lea	(a2,d0),a2
	bsr	rotget			;a1,a2,d1=d2,d1
	exg.l	d1,d5			;store pic1, get frsh pic1
	ror.l	#4,d2			;store bitshift

;	move.l	rotshp2-rot(a5),d0	;shape number
;	muls	#4*4,d0
	clr.l	d0

	lea	4*4*16+rotshptab,a2	;sinus shape table
	lea	(a2,d0),a2

	tst.l	var_pic2(a0)		;is there double playfield ?
	beq	rotset.nodpl
	move.l	var_pic2(a0),a4		;pic halen
	cmp.l	#'PICT',(a4)
	bne	rotset.nodpl		;nog aanwezig ?
	cmp.l	a1,a4			;hetzelfde ?
	bne	rotset.dpl
rotset.nodpl
	add.l	d3,d1			;get plane2 from pic1
	lsl.l	#1,d3			;*2 double skip
	move.l	d3,d4			;planeskip copieren
	bsr	rotget			;a1,a2,d1=d2,d1
	bra	rotset.pln
rotset.dpl
	move.l	var_pic2(a0),a1		;pic halen

	lea	pic_raw(a1),a3
	move.l	a3,d1			;raw planes halen
	clr.l	d4			;skip halen
	move.w	pic_wid(a1),d4
	bsr	rotget			;a1,a2,d1=d2,d1
	
rotset.pln
	rol.l	#4,d2			;get complete bitshift
	move.l	rotchp-rot(a5),a3
	add.l	#rotcop.1-rotc,a3
	add.l	rotbuf-rot(a5),a3
	move.w	d2,14(a3)

	move.l	rotmod-rot(a5),d0	;routinemode

	lea	rotwiptab,a4
	muls	#rotwiptab.t,d0
	add.l	d0,a4
	
	move.l	(a4),a2
	add.l	a5,a2
	jsr	(a2)
	
rotset.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts
	
rotvew
	movem.l	d0-d7/a0-a6,-(sp)

	clr.l	d7
	move.w	pic_dpt(a1),d7		;depth
	clr.l	d6
	move.w	pic_hgt(a1),d6		;hoogte
	clr.l	d2
	move.w	pic_wid(a1),d2		;breedte
	
	cmp.w	#vew_hgt,d6		;high centring
	bge	rotvew.d
	move.w	#vew_hgt,d0
	sub.w	d6,d0
	lsr.l	#1,d0
	muls	d2,d0			;width
	muls	d7,d0			;depth
	sub.l	d0,d5
	sub.l	d0,d1
rotvew.d

	lsr.l	#1,d7
	move.w	#vew_hgt-4-1,d2
rotvew.c
	move.w	d7,d0			;depth
	sub.w	#1,d0
rotvew.a	
	move.w	d5,22(a3)
	swap	d5
	move.w	d5,18(a3)
	swap	d5

	move.w	d1,30(a3)
	swap	d1
	move.w	d1,26(a3)
	swap	d1

	add.l	#16,a3
	add.l	d3,d5
	add.l	d4,d1
	
	dbra	d0,rotvew.a	

	move.l	#rotcop.t,d0
	move.l	d7,d6
	lsl.l	#4,d6
	sub.l	d6,d0
	add.l	d0,a3

	dbra	d2,rotvew.c	
rotvew.end
	movem.l	(sp)+,d0-d7/a0-a6
	rts

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

	bsr	rotcopclr
	
	tst.b	rottrgrot-rot(a5)
	beq.s	rotmrp.nonewwipe
	clr.b	rottrgrot-rot(a5)

	move.l	4(a4),a2		;morph start
	add.l	a5,a2
	move.l	8(a4),a1		;morph end
	add.l	a5,a1

	lea	rotmrp.add,a6
	move.w	#vew_hgt-4-1,d2
rotmrp.e
	move.l	(a2)+,d0
	move.l	(a1)+,d6
	lsl.l	#7,d0
	lsl.l	#7,d6
	sub.l	d0,d6
	move.l	d6,(a6)+
	dbra	d2,rotmrp.e
	clr.l	rotmrppos-rot(a5)
rotmrp.nonewwipe
	move.l	4(a4),a2		;morph start
	add.l	a5,a2

	lea	rotmrp.wrk,a0
	lea	rotmrp.add,a6
	move.l	rotmrppos-rot(a5),d0
	move.w	#vew_hgt-4-1,d2
rotmrp.f
	move.l	(a6)+,d7
	muls.l	d0,d7
	divs.l	#64*vew_hgt,d7		;/18560
	move.l	(a2)+,d6
	add.l	d7,d6
	move.l	d6,(a0)+
	dbra	d2,rotmrp.f
	
	add.l	#1,d0
	cmp.l	#(vew_hgt/2)+1,d0
	beq.s	rotmrp.g
	move.l	d0,rotmrppos-rot(a5)
rotmrp.g
	movem.l	(sp),d0-d7/a0-a6

	lea	rotmrp.wrk,a2

	clr.l	d6
	move.w	pic_hgt(a1),d6		;hoogte
	cmp.w	#vew_hgt-2,d6		;high centring
	bge.s	rotmrp.d
	move.w	#vew_hgt-2,d0
	sub.w	d6,d0
	lsr.w	#1,d0
	move.l	d0,d6
	lsl.w	#2,d6
	add.l	d6,a2			;morph table
rotmrp.d
	move.l	a3,a0
	
	lea	rotcopscr,a4

	moveq.l	#0,d7
	move.w	pic_dpt(a1),d7		;depth
	lsr.l	#1,d7
	move.w	pic_hgt(a1),d2		;hoogte
	sub.w	#1,d2
rotmrp.c
	move.l	(a2)+,d0
	cmp.w	#0,d0
	blt.s	rotmrp.h
	cmp.w	#vew_hgt-4,d0
	bge.s	rotmrp.h

	st	(a4,d0)			;fill copperscreen
	
	move.w	d0,d6			;muls	#rotcop.t,d0	;* $48
	lsl.w	#6,d6			;*64
	lsl.w	#3,d0			;*8
	add.w	d6,d0
		
	add.l	d0,a3

	move.w	d7,d0			;depth
	sub.b	#1,d0
rotmrp.a	
	move.w	d5,22(a3)
	swap	d5
	move.w	d5,18(a3)
	swap	d5

	move.w	d1,30(a3)
	swap	d1
	move.w	d1,26(a3)
	swap	d1

	lea	16(a3),a3
	add.l	d3,d5
	add.l	d4,d1
	
	dbra	d0,rotmrp.a	

	move.l	a0,a3
	bra.s	rotmrp.i
rotmrp.h
	move.w	d7,d0			;depth
	sub.b	#1,d0
rotmrp.j
	add.l	d3,d5
	add.l	d4,d1
	dbra	d0,rotmrp.j	
rotmrp.i
	dbra	d2,rotmrp.c	

	bsr	rotcopfil

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

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

	bsr	rotcopclr
	
	tst.b	rottrgrot-rot(a5)
	beq.s	rotsin.nonewwipe
	clr.b	rottrgrot-rot(a5)

rotsin.nonewwipe
	lea	rotsintab,a6

	move.l	4(a4),d0		;sinus position
	move.l	8(a4),d1		;sinus speed
	add.l	d1,d0
	cmp.l	#0,d0
	bge	rotsin.k1
	add.l	#360*4,d0
rotsin.k1
	cmp.l	#360*4,d0
	blt	rotsin.k2
	sub.l	#360*4,d0
rotsin.k2
	move.l	d0,4(a4)

	move.l	12(a4),d2		;size position
	move.l	16(a4),d3		;size speed
	add.l	d3,d2
	cmp.l	#0,d2
	bge	rotsin.l1
	add.l	#360*4,d2
rotsin.l1
	cmp.l	#360*4,d2
	blt	rotsin.l2
	sub.l	#360*4,d2
rotsin.l2
	move.l	d2,12(a4)

	move.w	(a6,d2),d6		;get sinus value
	ext.l	d6
	divs	#65536/((vew_hgt-4)),d6
	add.w	#((vew_hgt-4))/2,d6
	ext.l	d6
	move.l	#65536+32768,d2
	tst.w	d6
	bne	rotsin.l3
	move.w	#1,d6
rotsin.l3
	divs.l	d6,d2			;680++ !
	tst.w	d2
	bne	rotsin.l4
	move.w	#1,d2
rotsin.l4
		
	move.l	20(a4),d4		;centre position
	move.l	24(a4),d5		;centre speed
	add.l	d5,d4
	cmp.l	#0,d4
	bge	rotsin.m1
	add.l	#360*4,d4
rotsin.m1
	cmp.l	#360*4,d4
	blt	rotsin.m2
	sub.l	#360*4,d4
rotsin.m2
	move.l	d4,20(a4)

	move.w	(a6,d4),d4		;get sinus value
	ext.l	d4
	divs	#65536/((vew_hgt-4)/4),d4
	add.w	#(vew_hgt-4)/2,d4
		
	lea	rotsin.wrk,a0
	move.w	#vew_hgt-4-1,d7
rotsin.f

	move.w	(a6,d0),d6		;get sinus value
	ext.l	d6
	divs	d2,d6
	add.w	d4,d6

	move.w	d6,2(a0)
	lea	4(a0),a0

	add.l	#2,d0
	cmp.w	#360*4,d0
	bne	rotsin.f2
	moveq.l	#0,d0
rotsin.f2
	dbra	d7,rotsin.f
	
	movem.l	(sp),d0-d7/a0-a6

	lea	rotsin.wrk,a2

	clr.l	d6
	move.w	pic_hgt(a1),d6		;hoogte
	cmp.w	#vew_hgt-2,d6		;high centring
	bge.s	rotsin.d
	move.w	#vew_hgt-2,d0
	sub.w	d6,d0
	lsr.w	#1,d0
	move.l	d0,d6
	lsl.w	#2,d6
	add.l	d6,a2			;morph table
rotsin.d
	move.l	a3,a0
	
	lea	rotcopscr,a4

	moveq.l	#0,d7
	move.w	pic_dpt(a1),d7		;depth
	lsr.l	#1,d7
	move.w	pic_hgt(a1),d2		;hoogte
	sub.w	#1,d2
rotsin.c
	move.l	(a2)+,d0
	cmp.w	#0,d0
	blt.s	rotsin.h
	cmp.w	#vew_hgt-4,d0
	bge.s	rotsin.h

	st	(a4,d0)			;fill copperscreen
	
	move.w	d0,d6			;muls	#rotcop.t,d0	;* $48
	lsl.w	#6,d6			;*64
	lsl.w	#3,d0			;*8
	add.w	d6,d0
		
	add.l	d0,a3

	move.w	d7,d0			;depth
	sub.b	#1,d0
rotsin.a	
	move.w	d5,22(a3)
	swap	d5
	move.w	d5,18(a3)
	swap	d5

	move.w	d1,30(a3)
	swap	d1
	move.w	d1,26(a3)
	swap	d1

	lea	16(a3),a3
	add.l	d3,d5
	add.l	d4,d1
	
	dbra	d0,rotsin.a	

	move.l	a0,a3
	bra.s	rotsin.i
rotsin.h
	move.w	d7,d0			;depth
	sub.b	#1,d0
rotsin.j
	add.l	d3,d5
	add.l	d4,d1
	dbra	d0,rotsin.j	
rotsin.i
	dbra	d2,rotsin.c	

	bsr	rotcopfil

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

rotchp		dc.l	0
rotmod		dc.l	0
rotbuf		dc.l	0
rotshp1		dc.l	0
rotshp2		dc.l	0
rottrgrot	dc.l	0
rotmrppos	dc.l	0
rotsinpos	dc.l	0

rotwiptab
rotwiptab.ts
	dc.l	rotvew-rot,0,0,0,0,0,0			;normal
rotwiptab.te
rotwiptab.t	equ	rotwiptab.te-rotwiptab.ts
 dc.l	rotmrp-rot,rotmrp.1-rot,rotmrp.2-rot,0,0,0,0	;middle > normal
 dc.l	rotmrp-rot,rotmrp.4-rot,rotmrp.2-rot,0,0,0,0	;top > normal
 dc.l	rotmrp-rot,rotmrp.5-rot,rotmrp.2-rot,0,0,0,0	'bottom > normal
 dc.l	rotmrp-rot,rotmrp.3-rot,rotmrp.2-rot,0,0,0,0	;mirro > normal

 dc.l	rotmrp-rot,rotmrp.1-rot,rotmrp.6-rot,0,0,0,0	;middle > mixed
 dc.l	rotmrp-rot,rotmrp.6-rot,rotmrp.2-rot,0,0,0,0	;mixed > normal

 dc.l	rotmrp-rot,rotmrp.7-rot,rotmrp.2-rot,0,0,0,0	;big > normal

 ;	posy	spdy	poss	spds	posm	spdm

 dc.l	rotsin-rot,0,10,0,0,0,0				;sinus 1
 dc.l	rotsin-rot,0,10,0,2,0,0				;sinus 2
 dc.l	rotsin-rot,0,10,0,0,0,4				;sinus 3
 dc.l	rotsin-rot,0,10,0,2,0,4				;sinus 4
 dc.l	rotsin-rot,0,10,0,6,0,2				;sinus 

 dc.l	rotmrp-rot,rotsin.wrk-rot,rotmrp.2-rot,0,0,0,0	;sinus > normal

rotmrp.1
	dcb.l	vew_hgt-4,(vew_hgt/2)
rotmrp.2
	dc.l	0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
	dc.l	23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
	dc.l	43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62
	dc.l	63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82
	dc.l	83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101
	dc.l	102,103,104,105,106,107,108,109,110,111,112,113,114,115,116
	dc.l	117,118,119,120,121,122,123,124,125,126,127,128,129,130,131
	dc.l	132,133,134,135,136,137,138,139,140,141,142,143,144,145,146
	dc.l	147,148,149,150,151,152,153,154,155,156,157,158,159,160,161
	dc.l	162,163,164,165,166,167,168,169,170,171,172,173,174,175,176
	dc.l	177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
	dc.l	192,193,194,195,196,197,198,199,200,201,202,203,204,205,206
	dc.l	207,208,209,210,211,212,213,214,215,216,217,218,219,220,221
	dc.l	222,223,224,225,226,227,228,229,230,231,232,233,234,235,236
	dc.l	237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
	dc.l	252,253,254,255,256,257,258,259,260,261,262,263,264,265,266
	dc.l	267,268,269,270,271,272,273,274,275,276,277,278,279,280,281
	dc.l	282,283,284,285
rotmrp.3
	dc.l	285,284,283,282,281,280,279,278,277,276,275,274,273,272		
	dc.l	271,270,269,268,267,266,265,264,263,262,261,260,259,258,257		
	dc.l	256,255,254,253,252,251,250,249,248,247,246,245,244,243,242		
	dc.l	241,240,239,238,237,236,235,234,233,232,231,230,229,228,227		
	dc.l	226,225,224,223,222,221,220,219,218,217,216,215,214,213,212		
	dc.l	211,210,209,208,207,206,205,204,203,202,201,200,199,198,197		
	dc.l	196,195,194,193,192,191,190,189,188,187,186,185,184,183,182		
	dc.l	181,180,179,178,177,176,175,174,173,172,171,170,169,168,167
	dc.l	166,165,164,163,162,161,160,159,158,157,156,155,154,153,152
	dc.l	151,150,149,148,147,146,145,144,143,142,141,140,139,138,137		
	dc.l	136,135,134,133,132,131,130,129,128,127,126,125,124,123,122		
	dc.l	121,120,119,118,117,116,115,114,113,112,111,110,109,108,107		
	dc.l	106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90		
	dc.l	89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70		
	dc.l	69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50		
	dc.l	49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30		
	dc.l	29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10		
	dc.l	9,8,7,6,5,4,3,2,1,0
rotmrp.4
	ds.l	vew_hgt-4
rotmrp.5
	dcb.l	vew_hgt-4,vew_hgt-4
rotmrp.6
	dc.l	0,285,2,283,4,281,6,279,8,277,10,275,12,273,14,271,16,269
	dc.l	18,267,20,265,22,263,24,261,26,259,28,257,30,255,32,253,34
	dc.l	251,36,249,38,247,40,245,42,243,44,241,46,239,48,237,50,235
	dc.l	52,233,54,231,56,229,58,227,60,225,62,223,64,221,66,219,68
	dc.l	217,70,215,72,213,74,211,76,209,78,207,80,205,82,203,84,201
	dc.l	86,199,88,197,90,195,92,193,94,191,96,189,98,187,100,185,102
	dc.l	183,104,181,106,179,108,177,110,175,112,173,114,171,116,169
	dc.l	118,167,120,165,122,163,124,161,126,159,128,157,130,155,132
	dc.l	153,134,151,136,149,138,147,140,145,142,143,144,141,146,139
	dc.l	148,137,150,135,152,133,154,131,156,129,158,127,160,125,162
	dc.l	123,164,121,166,119,168,117,170,115,172,113,174,111,176,109
	dc.l	178,107,180,105,182,103,184,101,186,99,188,97,190,95,192,93
	dc.l	194,91,196,89,198,87,200,85,202,83,204,81,206,79,208,77,210
	dc.l	75,212,73,214,71,216,69,218,67,220,65,222,63,224,61,226,59
	dc.l	228,57,230,55,232,53,234,51,236,49,238,47,240,45,242,43,244
	dc.l	41,246,39,248,37,250,35,252,33,254,31,256,29,258,27,260,25		
	dc.l	262,23,264,21,266,19,268,17,270,15,272,13,274,11,276,9,278,7		
	dc.l	280,5,282,3,284,1
rotmrp.7
	dc.l	-142*32,-141*32,-140*32,-139*32,-138*32,-137*32
	dc.l	-136*32,-135*32,-134*32,-133*32,-132*32,-131*32,-130*32,-129*32,-128*32,-127*32,-126*32,-125*32,-124*32,-123*32,-122*32		
	dc.l	-121*32,-120*32,-119*32,-118*32,-117*32,-116*32,-115*32,-114*32,-113*32,-112*32,-111*32,-110*32,-109*32,-108*32,-107*32		
	dc.l	-106*32,-105*32,-104*32,-103*32,-102*32,-101*32,-100*32,-99*32,-98*32,-97*32,-96*32,-95*32,-94*32,-93*32,-92*32,-91*32,-90*32		
	dc.l	-89*32,-88*32,-87*32,-86*32,-85*32,-84*32,-83*32,-82*32,-81*32,-80*32,-79*32,-78*32,-77*32,-76*32,-75*32,-74*32,-73*32,-72*32,-71*32,-70*32		
	dc.l	-69*32,-68*32,-67*32,-66*32,-65*32,-64*32,-63*32,-62*32,-61*32,-60*32,-59*32,-58*32,-57*32,-56*32,-55*32,-54*32,-53*32,-52*32,-51*32,-50*32		
	dc.l	-49*32,-48*32,-47*32,-46*32,-45*32,-44*32,-43*32,-42*32,-41*32,-40*32,-39*32,-38*32,-37*32,-36*32,-35*32,-34*32,-33*32,-32*32,-31*32,-30*32		
	dc.l	-29*32,-28*32,-27*32,-26*32,-25*32,-24*32,-23*32,-22*32,-21*32,-20*32,-19*32,-18*32,-17*32,-16*32,-15*32,-14*32,-13*32,-12*32,-11*32,-10*32
	dc.l	-9*32,-8*32,-7*32,-6*32,-5*32,-4*32,-3*32,-2*32,-1*32
	dc.l	0*32,1*32,2*32,3*32,4*32,5*32,6*32,7*32,8*32,9*32,10*32,11*32,12*32,13*32,14*32,15*32,16*32,17*32,18*32,19*32,20*32,21*32,22*32
	dc.l	23*32,24*32,25*32,26*32,27*32,28*32,29*32,30*32,31*32,32*32,33*32,34*32,35*32,36*32,37*32,38*32,39*32,40*32,41*32,42*32
	dc.l	43*32,44*32,45*32,46*32,47*32,48*32,49*32,50*32,51*32,52*32,53*32,54*32,55*32,56*32,57*32,58*32,59*32,60*32,61*32,62*32
	dc.l	63*32,64*32,65*32,66*32,67*32,68*32,69*32,70*32,71*32,72*32,73*32,74*32,75*32,76*32,77*32,78*32,79*32,80*32,81*32,82*32
	dc.l	83*32,84*32,85*32,86*32,87*32,88*32,89*32,90*32,91*32,92*32,93*32,94*32,95*32,96*32,97*32,98*32,99*32,100*32,101*32
	dc.l	102*32,103*32,104*32,105*32,106*32,107*32,108*32,109*32,110*32,111*32,112*32,113*32,114*32,115*32,116*32
	dc.l	117*32,118*32,119*32,120*32,121*32,122*32,123*32,124*32,125*32,126*32,127*32,128*32,129*32,130*32,131*32
	dc.l	132*32,133*32,134*32,135*32,136*32,137*32,138*32,139*32,140*32,141*32,142*32,143*32

rotsin.wrk
	ds.l	vew_hgt-4
rotmrp.wrk
	ds.l	vew_hgt-4
rotmrp.add
	ds.l	vew_hgt-4
	
rotcopemp	ds.b	192
		cnop	0,4
rotcopscr	ds.b	vew_hgt
		cnop	0,4
	;	posx	posy	spdx	spdy
rotshptab
	rept	2
	dc.l	0,	0,	0,	0	;0 stil
	dc.l	0,	0,	2,	0	;1 -
	dc.l	0,	0,	0,	2	;2 |
	dc.l	0,	180*2,	2,	2	;3 o
	dc.l	180*2,	0,	2,	4	;4 (X)
	dc.l	0,	180*2,	4,	2	;5 8
	dc.l	0,	180*2,	4,	6	;6 weird
	dc.l	0,	0,	0,	0	;7
	dc.l	0,	0,	0,	0	;8
	dc.l	0,	0,	0,	0	;9
	dc.l	0,	0,	0,	0	;10
	dc.l	0,	0,	0,	0	;11
	dc.l	0,	0,	0,	0	;12
	dc.l	0,	0,	0,	0	;13
	dc.l	0,	0,	0,	0	;14
	dc.l	0,	0,	0,	0	;15
	endr

rotsintab
       dc.w       0,286,572,858,1144,1429,1715,2000,2286,2571,2856,3141
       dc.w       3425,3709,3993,4277,4560,4843,5126,5408,5690,5971,6252,6533
       dc.w       6813,7092,7371,7649,7927,8204,8481,8757,9032,9306,9580,9853
       dc.w       10126,10397,10668,10938,11207,11475,11743,12009,12275,12539,12803,13066
       dc.w       13328,13588,13848,14107,14364,14621,14876,15130,15383,15635,15886,16135
       dc.w       16383,16631,16876,17121,17364,17606,17846,18085,18323,18559,18794,19028
       dc.w       19260,19491,19720,19947,20173,20398,20621,20842,21062,21280,21497,21712
       dc.w       21925,22137,22347,22555,22762,22967,23170,23371,23571,23768,23964,24158
       dc.w       24351,24541,24730,24916,25101,25284,25465,25644,25821,25996,26169,26340
       dc.w       26509,26676,26841,27004,27165,27324,27481,27635,27788,27938,28087,28233
       dc.w       28377,28519,28659,28796,28932,29065,29196,29324,29451,29575,29697,29817
       dc.w       29934,30049,30162,30273,30381,30487,30591,30692,30791,30888,30982,31074
       dc.w       31163,31250,31335,31418,31498,31575,31650,31723,31794,31862,31927,31990
       dc.w       32051,32109,32165,32218,32269,32318,32364,32407,32448,32487,32523,32556
       dc.w       32588,32616,32642,32666,32687,32706,32722,32736,32747,32756,32762,32766
       dc.w       32767,32766,32762,32756,32747,32736,32722,32706,32687,32666,32642,32616
       dc.w       32588,32556,32523,32487,32448,32407,32364,32318,32269,32218,32165,32109
       dc.w       32051,31990,31927,31862,31794,31723,31650,31575,31498,31418,31335,31250
       dc.w       31163,31074,30982,30888,30791,30692,30591,30487,30381,30273,30162,30049
       dc.w       29934,29817,29697,29575,29451,29324,29196,29065,28932,28796,28659,28519
       dc.w       28377,28233,28087,27938,27788,27635,27481,27324,27165,27004,26841,26676
       dc.w       26509,26340,26169,25996,25821,25644,25465,25284,25101,24916,24730,24541
       dc.w       24351,24158,23964,23768,23571,23371,23170,22967,22762,22555,22347,22137
       dc.w       21925,21712,21497,21280,21062,20842,20621,20398,20173,19947,19720,19491
       dc.w       19260,19028,18794,18559,18323,18085,17846,17606,17364,17121,16876,16631
       dc.w       16384,16135,15886,15635,15383,15130,14876,14621,14364,14107,13848,13588
       dc.w       13328,13066,12803,12539,12275,12009,11743,11475,11207,10938,10668,10397
       dc.w       10126,9853,9580,9306,9032,8757,8481,8204,7927,7649,7371,7092
       dc.w       6813,6533,6252,5971,5690,5408,5126,4843,4560,4277,3993,3709
       dc.w       3425,3141,2856,2571,2286,2000,1715,1429,1144,858,572,286
       dc.w       0,-285,-571,-857,-1143,-1429,-1714,-2000,-2285,-2570,-2855,-3140
       dc.w       -3425,-3709,-3993,-4276,-4560,-4843,-5125,-5408,-5689,-5971,-6252,-6532
       dc.w       -6812,-7092,-7370,-7649,-7927,-8204,-8480,-8756,-9031,-9306,-9580,-9853
       dc.w       -10125,-10397,-10667,-10937,-11206,-11475,-11742,-12009,-12274,-12539,-12803,-13065
       dc.w       -13327,-13588,-13847,-14106,-14364,-14620,-14875,-15130,-15383,-15635,-15885,-16135
       dc.w       -16383,-16630,-16876,-17120,-17363,-17605,-17846,-18085,-18323,-18559,-18794,-19027
       dc.w       -19259,-19490,-19719,-19947,-20173,-20397,-20620,-20842,-21062,-21280,-21497,-21712
       dc.w       -21925,-22137,-22347,-22555,-22761,-22966,-23169,-23371,-23570,-23768,-23964,-24158
       dc.w       -24350,-24541,-24729,-24916,-25100,-25283,-25464,-25643,-25820,-25995,-26168,-26339
       dc.w       -26509,-26676,-26841,-27004,-27165,-27323,-27480,-27635,-27787,-27938,-28086,-28233
       dc.w       -28377,-28518,-28658,-28796,-28931,-29064,-29195,-29324,-29450,-29575,-29696,-29816
       dc.w       -29934,-30049,-30162,-30272,-30381,-30486,-30590,-30691,-30790,-30887,-30981,-31073
       dc.w       -31163,-31250,-31335,-31417,-31497,-31575,-31650,-31723,-31793,-31861,-31927,-31990
       dc.w       -32050,-32109,-32164,-32218,-32269,-32317,-32363,-32407,-32448,-32486,-32522,-32556
       dc.w       -32587,-32616,-32642,-32665,-32687,-32705,-32722,-32735,-32747,-32755,-32762,-32765
       dc.w       -32767,-32765,-32762,-32755,-32747,-32735,-32722,-32705,-32687,-32665,-32642,-32616
       dc.w       -32587,-32556,-32522,-32486,-32448,-32407,-32363,-32317,-32269,-32218,-32164,-32109
       dc.w       -32050,-31990,-31927,-31861,-31793,-31723,-31650,-31575,-31497,-31417,-31335,-31250
       dc.w       -31163,-31073,-30981,-30887,-30790,-30691,-30590,-30486,-30381,-30272,-30162,-30049
       dc.w       -29934,-29816,-29696,-29575,-29450,-29324,-29195,-29064,-28931,-28796,-28658,-28518
       dc.w       -28377,-28233,-28086,-27938,-27787,-27635,-27480,-27323,-27165,-27004,-26841,-26676
       dc.w       -26509,-26339,-26168,-25995,-25820,-25643,-25464,-25283,-25100,-24916,-24729,-24541
       dc.w       -24350,-24158,-23964,-23768,-23570,-23371,-23169,-22966,-22761,-22555,-22347,-22137
       dc.w       -21925,-21712,-21497,-21280,-21062,-20842,-20620,-20397,-20173,-19947,-19719,-19490
       dc.w       -19259,-19027,-18794,-18559,-18323,-18085,-17846,-17605,-17363,-17120,-16876,-16630
       dc.w       -16383,-16135,-15885,-15635,-15383,-15130,-14875,-14620,-14364,-14106,-13847,-13588
       dc.w       -13327,-13065,-12803,-12539,-12274,-12009,-11742,-11475,-11206,-10937,-10667,-10397
       dc.w       -10125,-9853,-9580,-9306,-9031,-8756,-8480,-8204,-7927,-7649,-7370,-7092
       dc.w       -6812,-6532,-6252,-5971,-5689,-5408,-5125,-4843,-4560,-4276,-3993,-3709
       dc.w       -3425,-3140,-2855,-2570,-2285,-2000,-1714,-1429,-1143,-857,-571,-285
rotsintab.e


rotp.e

	SECTION	4,CODE_c
	cnop	0,8
rotc
	ifd	ocs
	dc.l	'ROTO'
	endc
	ifnd	ocs
	dc.l	'ROTA'
	endc
	rts
	cnop	0,8

rotcop.1
	dc.w	$0080,$0000,$0082,$0000

rotcop.ts
	dc.w	$00c1,$fffe
	dc.w	$0102,$0000
	dc.w	$00e0,$0000,$00e2,$0000	;1
	dc.w	$00e4,$0000,$00e6,$0000	;2
	dc.w	$00e8,$0000,$00ea,$0000	;3
	dc.w	$00ec,$0000,$00ee,$0000	;4
	dc.w	$00f0,$0000,$00f2,$0000	;5
	dc.w	$00f4,$0000,$00f6,$0000	;6
	ifnd	ocs
	dc.w	$00f8,$0000,$00fa,$0000	;7
	dc.w	$00fc,$0000,$00fe,$0000	;8
	endc
rotcop.te
rotcop.t	equ	rotcop.te-rotcop.ts

	rept	vew_hgt-5
	dc.w	$00c1,$fffe
	dc.w	$0102,$0000
	dc.w	$00e0,$0000,$00e2,$0000	;1
	dc.w	$00e4,$0000,$00e6,$0000	;2
	dc.w	$00e8,$0000,$00ea,$0000	;3
	dc.w	$00ec,$0000,$00ee,$0000	;4
	dc.w	$00f0,$0000,$00f2,$0000	;5
	dc.w	$00f4,$0000,$00f6,$0000	;6
	ifnd	ocs
	dc.w	$00f8,$0000,$00fa,$0000	;7
	dc.w	$00fc,$0000,$00fe,$0000	;8
	endc
	endr
	
	dc.w	$0088,$0000
	dc.w	$ffff,$fffe

rotcop.2
	ds.b	rotcop.2-rotcop.1

rotcop_l	equ	rotcop.2-rotcop.1	

rotc.e
rot.e

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

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

		ifd	rout
		cnop	0,8
rotincpic
		ifd	ocs
		incbin	'w:effect/circles512_l4.pic'
		endc
		ifnd	ocs
		incbin	'w:effectaga/schoolgirls_16.bru'
;		incbin	'w:effectaga/act_16.bru'
;		incbin	'w:effectaga/rainbow_256.pic'
		endc
		endc
		
