eight,a0
.c9		move.l	_scrwidth*3(a0),d1
		not.l	d1
		and.l	(a0),d1
		and.l	_scrwidth*3*2(a0),d1
		and.l	_scrwidth*3*3(a0),d1
		and.l	d3,d1
		bne.s	.add6

		subq.w	#1,d4
		bmi	.fall
		lea	_scrwidth*_scrdepth*3(a0),a0
		addq.w	#1,d7
		cmp.w	#_scrheight,d7
		bmi.s	.c10
		sub.w	#_scrheight,d7
		sub.l	#_scrwidth*_scrdepth*3*_scrheight,a0
.c10		move.l	_scrwidth*3(a0),d1
		not.l	d1
		and.l	(a0),d1
		and.l	_scrwidth*3*2(a0),d1
		and.l	_scrwidth*3*3(a0),d1
		and.l	d3,d1
		bne.s	.add7
		bra	.fall

.add7		addq.l	#7,absmanypos-d(a5)
		addq.w	#7,manypos-d(a5)
		bra.s	.add0

.add6		addq.l	#6,absmanypos-d(a5)
		addq.w	#6,manypos-d(a5)
		bra.s	.add0

.add5		addq.l	#5,absmanypos-d(a5)
		addq.w	#5,manypos-d(a5)
		bra.s	.add0

.add4		addq.l	#4,absmanypos-d(a5)
		addq.w	#4,manypos-d(a5)
		bra.s	.add0

.add3		addq.l	#3,absmanypos-d(a5)
		addq.w	#3,manypos-d(a5)
		bra.s	.add0

.add2		addq.l	#2,absmanypos-d(a5)
		addq.w	#2,manypos-d(a5)
		bra.s	.add0

.add1		addq.l	#1,absmanypos-d(a5)
		addq.w	#1,manypos-d(a5)
		bra.s	.add0
		
.sub4		subq.l	#4,absmanypos-d(a5)
		subq.w	#4,manypos-d(a5)
		bra.s	.add0
		
.sub3		subq.l	#3,absmanypos-d(a5)
		subq.w	#3,manypos-d(a5)
		bra.s	.add0
		
.sub2		subq.l	#2,absmanypos-d(a5)
		subq.w	#2,manypos-d(a5)
		bra.s	.add0
		
.sub1		subq.l	#1,absmanypos-d(a5)
		subq.w	#1,manypos-d(a5)

.add0		bsr	teststauch
		moveq	#0,d0
		move.w	d0,fallpos-d(a5)
		move.w	d0,fallspeed-d(a5)
		move.w	d0,fallflag-d(a5)
		rts

teststauch	cmp.w	#80,fallpos-d(a5)
		bmi.s	.ok
		sub.w	#32,energy-d(a5)
		cmp.w	#4,energy-d(a5)
		bpl.s	.ok2
		move.w	#1,deathflag-d(a5)
		move.w	#$10,priority-d(a5)
		bra.s	.ok

.ok2		move.w	#1,stauchflag-d(a5)
		move.w	#32,ouchflag-d(a5)

.ok		rts	
;------------------------------------------------
calcblockno	calcblockno_m
;------------------------------------------------
jump		lea	d(pc),a5
		move.w	jumpflag-d(a5),jumpflag2-d(a5)
		tst.w	jumpflag-d(a5)
		beq	.end

		moveq	#18,d0
		moveq	#16,d1
		bsr	calcblockno
		move.w	(a0),d0
		and.w	#$fc00,d0
		cmp.w	#$e800,d0
		beq.s	.off

		clr.w	stepstandflag-d(a5)
		lea	jumptab-d(a5),a0
		move.w	jumppos-d(a5),d0
		moveq	#0,d1
		move.w	(a0,d0.w),d1
		sub.w	d1,manypos-d(a5)
		sub.l	d1,absmanypos-d(a5)
		move.w	d1,jumpspeed-d(a5)

		tst.w	jumphold-d(a5)
		beq.s	.c1
		subq.w	#1,jumphold-d(a5)
		bra.s	.end

.c1		addq.w	#2,jumppos-d(a5)
		cmp.w	#12,d0
		bne.s	.end
.off		clr.w	jumpflag-d(a5)
		clr.w	jumphold-d(a5)
.end		rts

setjump		tst.w	jumpflag-d(a5)
		bne.s	.end
		move.w	#1,jumpflag-d(a5)
		move.w	#0,jumppos-d(a5)
		move.w	#4,janimcount-d(a5)
		move.w	#14,jumphold-d(a5)
.end		rts

*****
;------------------------------------------------
duck		lea	d(pc),a5
		clr.w	duckdir-d(a5)
		cmp.w	#8,duckpos-d(a5)
		beq.s	.end
		addq.w	#1,duckcount-d(a5)
		cmp.w	#3,duckcount-d(a5)
		bne.s	.end
		move.w	#0,duckcount-d(a5)
		addq.w	#4,duckpos-d(a5)
.end		rts	

standup		lea	d(pc),a5
		move.w	#1,duckdir-d(a5)
		tst.w	duckpos-d(a5)
		beq.s	.end
		addq.w	#1,duckcount-d(a5)
		cmp.w	#3,duckcount-d(a5)
		bne.s	.end
		move.w	#0,duckcount-d(a5)
		subq.w	#4,duckpos-d(a5)
.end		rts

;------------------------------------------------
getobj		move.l	nm-d(a5),a0
		moveq	#_nmeno-1,d7
.l1		cmp.w	nmobj(a0),d0
		beq.s	.c1
		addq.l	#4,a0
		dbra	d7,.l1
.c1		rts
;------------------------------------------------
boatride	tst.w	boatrideflag-d(a5)
		bne.s	.end
		move.w	boatflag-d(a5),d0
		cmp.w	#2,d0
		bpl.s	.doride
		moveq	#22,d0
		bsr	getobj
		tst.w	d7
		bpl.s	.c1
		clr.w	boatflag-d(a5)
.end		rts
.c1		move.l	absmanxpos-d(a5),d1
		move.w	nmxpos(a0),d0
		sub.w	#56,d0
		cmp.w	d1,d0
		bpl.s	.c2
		addq.w	#8,d0
		cmp.w	d1,d0
		bmi.s	.c3
		addq.w	#1,boatflag-d(a5)
		rts
.c2		move.w	#$0003,actstick-d(a5)
		bra	stickx
.c3		move.w	#$0300,actstick-d(a5)
		bra	stickx
		
.doride		cmp.w	#5,d0
		bmi.s	.c6
		tst.w	animdir-d(a5)
		beq.s	.c4
		cmp.w	#25,d0
		bpl.s	.c5
		cmp.w	#15,d0
		bmi.s	.c6
		move.w	#$0001,actstick-d(a5)
.c6		addq.w	#1,boatflag-d(a5)
		bsr	stickx
		bra	sticky
		
.c5		move.w	#1,boatrideflag-d(a5)
		rts
		
.c4		move.w	#$3,actstick-d(a5)
		bra	stickx

;------------------------------------------------
ropedown	cmp.w	#2,ropedownflag-d(a5)
		beq	sticky2
		cmp.w	#4,ropedownflag-d(a5)
		beq	.next
		tst.w	turnflag-d(a5)
		bne	.ret
		cmp.w	#5,ropedownflag-d(a5)
		beq	.next3
		cmp.w	#6,ropedownflag-d(a5)
		beq	.next2

		move.w	#10,turnflag-d(a5)
		move.w	#2,turncount-d(a5)
		move.w	#1,turned-d(a5)
		addq.w	#1,ropedownflag-d(a5)
		rts
		
.next		cmp.w	#27,ropedowncount-d(a5)
		beq.s	.c1
		addq.w	#1,ropedowncount-d(a5)
		rts

.next3		add.w	#19,manypos-d(a5)
		add.l	#19,absmanypos-d(a5)
		addq.w	#1,ropedownflag-d(a5)
		
.next2		tst.w	ropedowncount-d(a5)
		beq.s	.c2
		subq.w	#1,ropedowncount-d(a5)
		rts
		
.c1		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)
		clr.w	ropedowncount-d(a5)
		clr.w	runyofs-d(a5)
		sub.w	#16,manypos-d(a5)
		sub.l	#16,absmanypos-d(a5)
.ret		rts
		

.c2		addq.w	#1,manypos-d(a5)
		addq.l	#1,absmanypos-d(a5)
		move.w	#2,ropedownflag-d(a5)
		clr.w	ropedowncount-d(a5)
		move.w	#8,ropeanimpos-d(a5)
		clr.w	ropeanimcount-d(a5)
		rts

;------------------------------------------------
stick		tst.w	testflag-d(a5)
		bne.s	.test
		tst.w	enterflag2-d(a5)
		bne	.enter
		tst.w	leaveflag2-d(a5)
		bne	.leave
		tst.w	ropedownflag-d(a5)
		bne.s	.c4	
		tst.w	ropeflag-d(a5)
		bne.s	.c5
		tst.w	boatflag-d(a5)
		beq.s	.c1
		bsr	boatride
		bra.s	.c2
.c4		bsr	ropedown
		bra.s	.c2
.c5		bsr	sticky2
		bra.s	.c2

.c1		tst.w	ouchflag-d(a5)
		bmi.s	.c8
		bne.s	.c7
.c8		bsr	testfall
		bsr	stickx
		bsr	sticky
.c2		rts

.c7		tst.w	stauchflag-d(a5)
		bne.s	.c01
		bsr	testfall
.c01		rts

.test		bsr	teststick
		rts

.enter		cmp.w	#40,enterflag2-d(a5)
		beq.s	.enter2
		addq.w	#1,enterflag2-d(a5)
		rts
.enter2		move.w	#1,enterflag-d(a5)
		rts		

.leave		cmp.w	#50,leaveflag2-d(a5)
		beq.s	.leave2
		addq.w	#1,leaveflag2-d(a5)
		rts
.leave2		move.w	#1,leaveflag-d(a5)
		rts		
;------------------------------------------------
teststick	teststick_m
;------------------------------------------------
stickx		lea	d(pc),a5
		tst.w	stepflag-d(a5)
		beq	.stickxcont
		bmi	.dostepl
		bra	.dostepr
		
.stickxcont	tst.w	punchcount2-d(a5)
		bne	.mid
		cmp.w	#1,punchflag-d(a5)
		beq	punch
		bpl.s	.sxca

		tst.w	duckpos-d(a5)
		bne.s	.sxc00		
		move.w	actstick-d(a5),d0
		and.w	#$0303,d0
		cmp.w	#$0300,d0
		beq	.left			;links
		cmp.w	#$0200,d0
		beq	.left			;links 'nauf
		cmp.w	#$0301,d0
		beq	.left			;links 'nunter
		cmp.w	#$0003,d0
		beq	.right			;rechts
		cmp.w	#$0002,d0
		beq	.right			;rechts 'nunter
		cmp.w	#$0103,d0
		beq	.right			;rechts 'nauf
		bra.s	.sxc00

.sxca		subq.w	#1,punchflag-d(a5)
.sxc00		moveq	#0,d1
.sxc4		tst.l	manxspeed-d(a5)
		beq.s	.sxc2
		bmi.s	.sxc1

		tst.w	fallflag-d(a5)
		bne.s	.sxc003
		tst.w	jumpflag-d(a5)
		bne.s	.sxc003
		clr.w	blktype-d(a5)
		subq.l	#2,manxspeed-d(a5)
		bpl.s	.sxc001
		clr.l	manxspeed-d(a5)
.sxc001		move.w	#1,animdir-d(a5)
		bra.s	.sxc2
.sxc003		addq.w	#1,manxcount-d(a5)
		cmp.w	#2,manxcount-d(a5)
		bmi.s	.sxc2
		clr.w	manxcount-d(a5)
		subq.l	#1,manxspeed-d(a5)
		bra.s	.sxc2

.sxc1		tst.w	fallflag-d(a5)
		bne.s	.sxc004
		tst.w	jumpflag-d(a5)
		bne.s	.sxc004
		clr.w	blktype-d(a5)
		addq.l	#2,manxspeed-d(a5)
		bmi.s	.sxc002
		clr.l	manxspeed-d(a5)
.sxc002		clr.w	animdir-d(a5)
		bra.s	.sxc2
.sxc004		addq.w	#1,manxcount-d(a5)
		cmp.w	#2,manxcount-d(a5)
		bmi.s	.sxc2
		clr.w	manxcount-d(a5)
		addq.l	#1,manxspeed-d(a5)

.sxc2		

		move.w	#1,animstand-d(a5)
		move.w	#0,animphase-d(a5)

		move.w	duckpos-d(a5),d0
		tst.w	fallflag-d(a5)
		beq.s	.sxc5
		moveq	#32,d0
.sxc5		tst.w	jumpflag-d(a5)
		beq.s	.sxc6
		tst.w	janimcount-d(a5)
		bne.s	.sxc7
		moveq	#28,d0
		bra.s	.sxc6
.sxc7		moveq	#24,d0		
.sxc6		
		move.w	#2,lrcount-d(a5)
		move.w	#0,lrphase-d(a5)

		tst.w	animdir-d(a5)
		beq.s	.ldir
		lea	animposs-d(a5),a0
		move.l	(a0,d0.w),animadr-d(a5)
		bra.s	.checky
.ldir		lea	animposs+12-d(a5),a0
		move.l	(a0,d0.w),animadr-d(a5)
		
.checky		tst.w	blktype-d(a5)
		bpl	.spd
		tst.w	sxruncount-d(a5)
		beq	.ccy
		bmi	.ccy3
		and.w	#$fffe,sxruncount-d(a5)
		lea	sxruntab2-d(a5),a0
		move.w	sxruncount-d(a5),d0
		lsr.w	#1,d0
		subq.w	#2,sxruncount-d(a5)
		
		tst.l	manxspeed-d(a5)
		beq	.ccy
		bpl	.cr
		
		move.l	d0,d3
		move.l	a0,a3
		moveq	#8,d0
		moveq	#64,d1
		bsr	calcblockno
		
		move.w	(a0),d2
		move.w	#$fc00,d6
		move.w	#$e800,d5
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth*2(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		
;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth*2(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend

		move.l	a3,a0
		move.l	d3,d0
		bra	.lcont

.cr		move.l	d0,d3
		move.l	a0,a3
		moveq	#24,d0
		moveq	#64,d1
		bsr	calcblockno

		move.w	(a0),d2
		move.w	#$fc00,d6
		move.w	#$e800,d5
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth*2(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend

;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth*2(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend

		move.l	a3,a0
		move.l	d3,d0
		bra	.rcont

.ccy3		clr.w	sxruncount-d(a5)
		
.ccy		tst.l	manxspeed-d(a5)
		bpl	.ccyrcheck
		moveq	#8,d0
		moveq	#64,d1
		bsr	calcblockno

		move.w	(a0),d2
		move.w	#$fc00,d6
		move.w	#$e800,d5
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend
		move.w	-_levwidth*2(a0),d2
		and.w	d6,d2
		cmp.w	d5,d2
		beq	.ccyend

;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend
;		move.w	-_levwidth*2(a0),d2
;		and.w	#$3ff,d2
;		move.b	(a4,d2.w),d0
;		cmp.b	#10,d0
;		beq	.ccyend

.ccydo		tst.l	manxspeed-d(a5)
		bpl.s	.ccydo2
		cmp.l	#8,absmanxpos-d(a5)
		bmi	.ccyend
.ccydo2		tst.w	stepstandflag-d(a5)
		bne	.end
		move.l	manxspeed-d(a5),d0
		add.w	d0,agamanxpos-d(a5)
		add.l	d0,agaabsmanxpos-d(