1,animcount-d(a5)
		cmp.w	#4,animcount-d(a5)
		bne.s	.rc1
		clr.w	animcount-d(a5)
		addq.w	#1,animphase-d(a5)
		cmp.w	#12,animphase-d(a5)
		bne	.rc1
		clr.w	animphase-d(a5)
.rc1		move.w	animphase-d(a5),d0
		add.w	d0,d0
		add.w	d0,d0
		move.l	(a0,d0.w),animadr-d(a5)
		clr.w	animstand-d(a5)
		rts

*****
punch		lea	d(pc),a4
		tst.w	punchcount-d(a4)
		bne	.mid	
		tst.w	sxpunchflagr-d(a4)
		bne	.punchr
		tst.w	sxpunchflagl-d(a4)
		bne	.punchl
		clr.w	collpointen-d(a4)
		tst.w	duckpos-d(a4)
		beq.s	.c03
		tst.w	animdir-d(a4)
		bne.s	.c02
		move.l	#50*928,animadr-d(a4)
		cmp.w	#4,duckpos-d(a4)
		beq.s	.c01
		move.l	#55*928,animadr-d(a4)
		bra.s	.c01
.c02		move.l	#40*928,animadr-d(a4)
		cmp.w	#4,duckpos-d(a4)
		beq.s	.c01
		move.l	#54*928,animadr-d(a4)
		bra.s	.c01
.c03		move.l	#44*928,animadr-d(a4)
		tst.w	animdir-d(a4)
		bne.s	.c01
		move.l	#45*928,animadr-d(a4)
.c01		move.w	actstick-d(a4),d0
		and.w	#$0303,d0
		cmp.w	#$0300,d0
		beq	.left			;links
		cmp.w	#$0200,d0
		beq	.leftup			;links 'nauf
		cmp.w	#$0301,d0
		beq	.leftdn			;links 'nunter
		cmp.w	#$0003,d0
		beq	.right			;rechts
		cmp.w	#$0002,d0
		beq	.rightdn		;rechts 'nunter
		cmp.w	#$0103,d0
		beq	.rightup		;rechts 'nauf

		clr.l	sxpunchedr-d(a4)

.cont
		tst.w	button-d(a4)
		bne.s	.end
		move.w	#4,punchcount2-d(a4)
		clr.w	punchflag-d(a4)
		clr.l	sxpunchedr-d(a4)
.end		rts

.mid		tst.w	duckpos-d(a4)
		bne.s	.mid2
		move.l	#42*928,d0
		tst.w	animdir-d(a4)
		bne.s	.mc1
		move.l	#43*928,d0
.mc1		cmp.w	#1,punchcount-d(a4)
		bne.s	.mc2
		add.l	#928*2,d0
.mc2		move.l	d0,animadr-d(a4)
		subq.w	#1,punchcount-d(a4)
		rts

.mid2		move.l	#52*928,d0
		tst.w	animdir-d(a4)
		bne.s	.mc3
		move.l	#53*928,d0
.mc3		cmp.w	#1,punchcount-d(a4)
		bne.s	.mc4
		add.l	#928*2,d0
.mc4		move.l	d0,animadr-d(a4)
		subq.w	#1,punchcount-d(a4)
		rts

.leftdn		move.w	#1,floorpunch-d(a4)
		clr.w	highpunch-d(a4)
		bra.s	.lc3
.leftup		move.w	#1,highpunch-d(a4)
		clr.w	floorpunch-d(a4)
		bra.s	.lc3
.left		clr.w	floorpunch-d(a4)
		clr.w	highpunch-d(a4)
.lc3		tst.w	animdir-d(a4)
		bmi.s	.lc2
		beq.s	.lc1
		move.w	#-1,animdir-d(a4)
		move.l	animposfrnt-d(a4),animadr-d(a4)
		tst.w	punchflag-d(a4)
		beq	.end
		cmp.w	#8,duckpos-d(a4)
		beq.s	.ldc1
		move.l	#41*928,animadr-d(a4)
		bra	.end
.ldc1		move.l	#51*928,animadr-d(a4)
		bra	.end
		
.lc2		clr.w	animdir-d(a4)
		bra	.end
.lc1		tst.w	sxpunchedl-d(a4)
		bne	.cont
		move.w	#1,sxpunchedl-d(a4)
		move.w	#1,sxpunchflagl-d(a4)
		bra.s	.punchl
		
.rightdn	move.w	#1,floorpunch-d(a4)
		clr.w	highpunch-d(a4)
		bra.s	.rc3
.rightup	move.w	#1,highpunch-d(a4)
		clr.w	floorpunch-d(a4)
		bra.s	.rc3
.right		clr.w	floorpunch-d(a4)
		clr.w	highpunch-d(a4)
.rc3		tst.w	animdir-d(a4)
		bmi.s	.rc2
		bne.s	.rc1
		move.w	#-1,animdir-d(a4)
		move.l	animposfrnt-d(a4),animadr-d(a4)
		tst.w	punchflag-d(a4)
		beq	.end
		cmp.w	#8,duckpos-d(a4)
		beq.s	.rdc1
		move.l	#41*928,animadr-d(a4)
		bra	.end
.rdc1		move.l	#51*928,animadr-d(a4)
		bra	.end
.rc2		move.w	#1,animdir-d(a4)
		bra	.end
.rc1		tst.w	sxpunchedr-d(a4)
		bne	.cont
		move.w	#1,sxpunchedr-d(a4)
		move.w	#1,sxpunchflagr-d(a4)
		bra	.punchr
		
.punchl		lea	sxpunchtabl-d(a4),a0
		lea	sxcollofsl-d(a4),a1
		tst.w	highpunch-d(a4)
		bne.s	.pl6
		tst.w	duckpos-d(a4)
		beq.s	.pl2
		tst.w	floorpunch-d(a4)
		bne.s	.pl3
		lea	sxpunchtabdl-d(a4),a0
		lea	sxcollofsdl-d(a4),a1
		bra.s	.pl2
.pl6		lea	sxpunchtabul-d(a4),a0
		lea	sxcollofsul-d(a4),a1
		bra.s	.pl2
.pl3		lea	sxpunchtabdl2-d(a4),a0
		lea	sxcollofsdl2-d(a4),a1
.pl2		move.w	punchpos-d(a4),d0
		move.l	(a0,d0.w),animadr-d(a4)
		tst.w	(a1,d0.w)
		bmi.s	.pl4
		move.w	#1,collpointen-d(a4)
		move.l	absmanxpos-d(a4),d1
		sub.w	#20,d1
		add.w	(a1,d0.w),d1
		move.w	d1,collpointx-d(a4)
		move.l	absmanypos-d(a4),d1
		add.w	2(a1,d0.w),d1
		move.w	d1,collpointy-d(a4)
.pl5		addq.w	#4,punchpos-d(a4)
		cmp.w	#64,punchpos-d(a4)
		bne	.end
		move.w	#0,punchpos-d(a4)
		move.w	#0,sxpunchflagl-d(a4)
		rts

.pl4		clr.w	collpointen-d(a4)
		bra.s	.pl5

.punchr		lea	sxpunchtabr-d(a4),a0
		lea	sxcollofsr-d(a4),a1
		tst.w	highpunch-d(a4)
		bne.s	.pr6
		tst.w	duckpos-d(a4)
		beq.s	.pr2
		tst.w	floorpunch-d(a4)
		bne.s	.pr3
		lea	sxpunchtabdr-d(a4),a0
		lea	sxcollofsdr-d(a4),a1
		bra.s	.pr2
.pr6		lea	sxpunchtabur-d(a4),a0
		lea	sxcollofsur-d(a4),a1
		bra.s	.pr2
.pr3		lea	sxpunchtabdr2-d(a4),a0
		lea	sxcollofsdr2-d(a4),a1
.pr2		move.w	punchpos-d(a4),d0
		move.l	(a0,d0.w),animadr-d(a4)
		tst.w	(a1,d0.w)
		bmi.s	.pr4
		move.w	#1,collpointen-d(a4)
		move.l	absmanxpos-d(a4),d1
		add.w	(a1,d0.w),d1
		move.w	d1,collpointx-d(a4)
		move.l	absmanypos-d(a4),d1
		add.w	2(a1,d0.w),d1
		move.w	d1,collpointy-d(a4)
.pr5		addq.w	#4,punchpos-d(a4)
		cmp.w	#64,punchpos-d(a4)
		bne	.end
		move.w	#0,punchpos-d(a4)
		move.w	#0,sxpunchflagr-d(a4)
		rts

.pr4		clr.w	collpointen-d(a4)
		bra.s	.pr5
		
;------------------------------------------------
sticky2		lea	d(pc),a5
		moveq	#$1f,d0
		add.l	d0,agaabsmanxpos-d(a5)
		add.w	d0,agamanxpos-d(a5)
		
		move.l	agaabsmanxpos-d(a5),d0
		and.w	#$3f,d0
		and.l	#$ffffffc0,agaabsmanxpos-d(a5)
		sub.w	d0,agamanxpos-d(a5)
		tst.w	turnflag-d(a5)
		bne	.ret
		move.w	actstick-d(a5),d0
		and.w	#$0303,d0
		cmp.w	#$0001,d0
		beq	.down
		cmp.w	#$0002,d0
		beq	.down			;rechts 'nunter
		cmp.w	#$0301,d0
		beq	.down			;links 'nunter
		cmp.w	#$0100,d0
		beq	.up
		cmp.w	#$0200,d0
		beq	.up			;links 'nauf
		cmp.w	#$0103,d0
		beq	.up			;rechts 'nauf
.syc00		bra	.doanim

.up		cmp.w	#3,ropedownflag-d(a5)
		beq.s	.up2
		move.l	absmanypos-d(a5),d0
		sub.w	#16,d0
		cmp.w	ropeystartpos-d(a5),d0
		beq.s	.off

.up2		moveq	#12,d0
		moveq	#52,d1
		bsr	calcblockno
		cmp.b	#20,d0
		bne	.c3
		
;		move.w	(a0),d0
;		and.w	#$fc00,d0
;		cmp.w	#$e800,d0
;		beq	.c3
		eor.w	#1,ropeanimcount-d(a5)
		bne.s	.uc001
		subq.w	#1,manypos-d(a5)
		subq.l	#1,absmanypos-d(a5)
.uc001		addq.w	#1,ropeanimpos-d(a5)
		cmp.w	#32,ropeanimpos-d(a5)
		bmi	.doanim
		clr.w	ropeanimpos-d(a5)
.end		bra.s	.doanim
		
.c3		move.w	#1,jumped-d(a5)
		move.w	#4,ropedownflag-d(a5)
		clr.w	ropedowncount-d(a5)
		rts
		
.off		clr.w	ropeflag-d(a5)
		move.w	#3,ropedownflag-d(a5)
		clr.w	ropedowncount-d(a5)
		rts
		
.down		moveq	#12,d0
		moveq	#72,d1
		bsr	calcblockno
		cmp.b	#20,d0
		bne.s	.c2

;		move.w	(a0),d0
;		and.w	#$fc00,d0
;		cmp.w	#$e800,d0
;		beq.s	.c2
		eor.w	#1,ropeanimcount-d(a5)
		beq.s	.dc001
		addq.w	#1,manypos-d(a5)
		addq.l	#1,absmanypos-d(a5)
.dc001		move.w	#1,dpressflag-d(a5)
		subq.w	#1,ropeanimpos-d(a5)
		bpl.s	.doanim
		move.w	#31,ropeanimpos-d(a5)
		bra.s	.doanim
		
.c2		move.w	#11,turnflag-d(a5)
		move.w	#27,turncount-d(a5)
		clr.w	turned-d(a5)

		clr.w	ropeflag-d(a5)
		clr.w	ropedownflag-d(a5)
.ret		rts

.doanim		rts		
;------------------------------------------------
sticky		cmp.w	#4,duckpos-d(a5)
		beq.s	.doduck
		move.w	actstick-d(a5),d0
		and.w	#$0303,d0
		cmp.w	#$0001,d0
		beq	.down
		cmp.w	#$0002,d0
		beq	.down			;rechts 'nunter
		cmp.w	#$0301,d0
		beq	.down			;links 'nunter
		cmp.w	#$0100,d0
		beq	.up
		tst.w	novertmove-d(a5)
		bne.s	.syc01
		cmp.w	#$0200,d0
		beq	.up			;links 'nauf
		cmp.w	#$0103,d0
		beq	.up			;rechts 'nauf
		bra.s	.syc00
.syc01		cmp.w	#$0200,d0
		beq.s	.syc00
		cmp.w	#$0103,d0
		beq.s	.syc00
		clr.w	novertmove-d(a5)
.syc00		clr.w	dpressflag-d(a5)
		tst.w	punchflag-d(a5)
		bne.s	.end
		clr.w	jumped-d(a5)
		clr.w	jumphold-d(a5)
		bsr	standup
.end		rts

.doduck		tst.w	duckdir-d(a5)
		beq	duck
		bra	standup


.up		tst.w	punchflag-d(a5)
		bne	standup
		tst.w	duckpos-d(a5)
		bne.s	.syc00
		tst.w	jumped-d(a5)
		bne.s	.end
		tst.w	fallflag-d(a5)
		bne	.end
		tst.w	animstand-d(a5)
		bne	.testdoor

.cont		move.w	#1,jumped-d(a5)
		bsr	setjump
		bra	.end
		
		
.down		tst.w	fallflag-d(a5)
		bne	.end
		tst.w	jumpflag-d(a5)
		bne	.end
		tst.w	dpressflag-d(a5)
		bne	.end
		tst.w	animstand-d(a5)
		bne	.testdoor2
		
.cont1		bsr	duck
		bra	.end



.testdoor	moveq	#8,d0
		moveq	#40,d1
		bsr	calcblockno
		move.w	(a0),d2
		and.w	#$fc00,d2
		cmp.w	#$e400,d2
		beq.s	.enter
		move.w	(a0),d2
		and.w	#$3ff,d2
		cmp.b	#20,(a4,d2.w)
		bne	.cont
		moveq	#-8,d0
		moveq	#40,d1
		bsr	calcblockno
		cmp.b	#20,d0
		beq	.cont

		move.w	#1,ropedownflag-d(a5)
		clr.w	ropedowncount-d(a5)
		clr.w	ropeanimpos-d(a5)
		clr.w	ropeanimcount-d(a5)
		rts


.enter		move.w	#1,enterflag2-d(a5)
		move.w	#10,turnflag-d(a5)
		move.w	#2,turncount-d(a5)
		move.w	#1,turned-d(a5)
		rts
		
.testdoor2	moveq	#8,d0
		moveq	#40,d1
		bsr	calcblockno
		move.w	(a0),d2
		and.w	#$fc00,d2
		cmp.w	#$e000,d2
		beq.s	.leave
		move.w	2*_levwidth(a0),d2
		and.w	#$3ff,d2
		cmp.b	#20,(a4,d2.w)
		bne	.cont1
		moveq	#-8,d0
		moveq	#72,d1
		bsr	calcblockno
		cmp.b	#20,d0
		beq	.cont1

		move.w	#5,ropedownflag-d(a5)
		move.w	#27,ropedowncount-d(a5)
		move.w	#10,turnflag-d(a5)
		move.w	#2,turncount-d(a5)
		move.w	#1,turned-d(a5)
		rts


.leave		move.w	#1,leaveflag-d(a5)
		rts
		


;------------------------------------------------
testxborders	lea	d(pc),a5
		tst.w	boatrideflag-d(a5)
		bne.s	.end
		tst.w	xholdflag-d(a5)
		bne.s	.end
		cmp.w	#184,manxpos-d(a5)
		bpl	.right
		cmp.w	#104,manxpos-d(a5)
		bmi	.left
.end		rts

.left		tst.w	roomlevel-d(a5)
		beq.s	.lc001
		move.l	xpos-d(a5),d0
		subq.l	#1,d0
		cmp.l	roomxstart-d(a5),d0
		bmi	.end

.lc001		tst.l	xpos-d(a5)
		beq.s	.end
		tst.w	xscrflag-d(a5)
		bne.s	.end
		moveq	#-8,d0
		move.w	d0,xscrflag-d(a5)
		moveq	#0,d0
		move.l	d0,yscrollofs-d(a5)
		move.l	d0,xsetpos1-d(a5)
		move.l	d0,xsetlpos1-d(a5)
		move.l	d0,xsetsoft1-d(a5)
		move.l	#_scrwidth*_scrdepth*3*16*14,xsetpos2-d(a5)
		add.l	#16*14,d0
		move.l	d0,xsetsoft2-d(a5)
		move.l	#_levwidth*14,xsetlpos2-d(a5)
		move.w	d0,xsetspos-d(a5)
		move.l	yshard-d(a5),actypos-d(a5)
		move.l	yhard-d(a5),actyhard-d(a5)
		move.l	ysoftabs-d(a5),actysoftabs-d(a5)
		bra	.end

.right		tst.w	roomlevel-d(a5)
		beq.s	.rc001
		move.l	xpos-d(a5),d0
		move.l	roomxsize-d(a5),d1
		add.l	roomxstart-d(a5),d1
		move.l	d0,$1fff00
		move.l	roomxsize-d(a5),$1fff04
		move.l	roomxstart-d(a5),$1fff08
		cmp.l	d1,d0
		bpl	.end

.rc001		cmp.l	#_levwidth-40,xpos-d(a5)
		beq	.end
		tst.w	xscrflag-d(a5)
		bne	.end
		moveq	#8,d0
		move.w	d0,xscrflag-d(a5)
		moveq	#0,d0
		move.l	d0,yscrollofs-d(a5)
		move.l	d0,xsetpos1-d(a5)
		move.l	d0,xsetlpos1-d(a5)
		move.l	d0,xsetsoft1-d(a5)
		move.l	#_scrwidth*_scrdepth*3*16*14,xsetpos2-d(a5)
		add.l	#16*14,d0
		move.l	d0,x