falldown
		cmp.w	#3,d1
		beq	.pflatschr

		bsr	.blktest
		tst.b	(a2,d1.w)
		bne.s	.rc2
		move.l	#1,nmanimpos(a0)
		bra.s	.endr
.rc2		cmp.b	#1,(a2,d1.w)
		beq.s	.rc3
		clr.w	nmxdir(a0)
		bra.s	.endr
.rc3		eor.w	#1,nmanimcount(a0)
		bne.s	.rc1
		addq.w	#1,nmactxpos(a0)
		addq.w	#4,nmanimpos(a0)
		and.w	#28,nmanimpos(a0)
.rc1		lea	.animtabr(pc),a1
		move.w	nmanimpos(a0),d0
		move.l	(a1,d0.w),nmdata(a0)
		move.w	nmactxpos(a0),nmxpos(a0)
		move.w	#6,nmysize(a0)
		move.w	nmactypos(a0),d0
		add.w	#10,d0
		move.w	d0,nmypos(a0)
.endr		movem.l	(a7)+,d0/d1/a1/a2
		bsr	maskblitxy
		move.w	mancoll-d(a5),d0
		or.w	d0,defmancoll-d(a5)
		rts
		
.dropr		cmp.w	#32,nmanimpos(a0)
		bmi.s	.dr1
		addq.w	#1,nmanimpos(a0)
		cmp.w	#64,nmanimpos(a0)
		bmi.s	.endr
		move.l	#2,nmanimpos(a0)
		add.w	#16,nmactypos(a0)
		clr.w	nmyspeed(a0)
		bra.s	.endr
.dr1		lea	.falltabr(pc),a1
		move.w	nmanimpos(a0),d0
		move.l	(a1,d0.w),nmdata(a0)
		lsr.w	#1,d0
		lea	.fallsize(pc),a1
		move.w	(a1,d0.w),nmysize(a0)
		lea	.fallofs(pc),a1
		move.w	(a1,d0.w),d0
		add.w	nmactypos(a0),d0
		move.w	d0,nmypos(a0)
		move.w	nmactxpos(a0),nmxpos(a0)
		eor.w	#1,nmanimcount(a0)
		bne	.end
		addq.w	#4,nmanimpos(a0)
		bra	.end
		
.falldown	bsr	.blktest
		cmp.b	#1,(a2,d1.w)
		beq.s	.fd2
		move.w	nmyspeed(a0),d0
		add.w	d0,nmactypos(a0)
		addq.w	#1,nmanimcount2(a0)
		cmp.w	#4,nmanimcount2(a0)
		bmi.s	.fd1
		clr.w	nmanimcount2(a0)
		addq.w	#1,nmyspeed(a0)
.fd1		move.w	nmactypos(a0),d0
		subq.w	#2,d0
		move.w	d0,nmypos(a0)
		bra	.end
.fd2		move.l	#3,nmanimpos(a0)
		and.w	#$fff0,nmactypos(a0)
		bra	.end
		
.pflatschr	cmp.w	#20,nmanimpos(a0)
		bmi.s	.pr1
		addq.w	#1,nmanimpos(a0)
		cmp.w	#48,nmanimpos(a0)
		bmi	.endr
		clr.l	nmanimpos(a0)
		addq.w	#4,nmactxpos(a0)
		bra	.endr
.pr1		lea	.pfltabr(pc),a1
		move.w	nmanimpos(a0),d0
		move.l	(a1,d0.w),nmdata(a0)
		lsr.w	#1,d0
		lea	.pflsize(pc),a1
		move.w	(a1,d0.w),nmysize(a0)
		lea	.pflofs(pc),a1
		move.w	(a1,d0.w),d1
		add.w	nmactypos(a0),d1
		move.w	d1,nmypos(a0)
		lea	.pflxofs(pc),a1
		move.w	(a1,d0.w),d1
		neg.w	d1
		add.w	nmactxpos(a0),d1
		move.w	d1,nmxpos(a0)
		eor.w	#1,nmanimcount(a0)
		bne	.end
		addq.w	#4,nmanimpos(a0)
		bra	.end
		

.blktest	add.w	nmactxpos(a0),d0
		lsr.w	#4,d0
		add.w	d0,d0
		subq.w	#6,d0
		move.w	nmactypos(a0),d1
		lsr.w	#4,d1
		addq.w	#1,d1
		mulu	#_levwidth,d1
		ext.l	d0
		add.l	d1,d0
		move.l	_xmem,a1
		add.l	#_ldatofs,a1
		lea	blocktab-d(a5),a2
		move.w	(a1,d0.l),d1
		and.w	#$3ff,d1
		rts

.dieanim	move.w	nmdieyspd(a0),d0
		lea	mudysizetab(pc),a1
		move.w	(a1,d0.w),d2
		move.w	d2,nmysize(a0)
		neg.w	d2
		add.w	#16,d2
		add.w	nmactypos(a0),d2
		move.w	d2,nmypos(a0)
		add.w	d0,d0
		lea	muddatatab(pc),a1
		move.l	(a1,d0.w),d0
		add.l	#5*16*160,d0
		add.l	d1,d0
		move.l	d0,nmdata(a0)

		eor.w	#1,nmdieyspd+2(a0)
		bne	.end
		addq.w	#2,nmdieyspd(a0)
		cmp.w	#28,nmdieyspd(a0)
		bne	.end
		clr.w	nmenable(a0)
		bra	.end

.teststomp	tst.w	fallflag-d(a5)
		beq.s	.tsend
		move.w	absmanxpos+2-d(a5),d0
		add.w	#68,d0
		cmp.w	nmxpos(a0),d0
		bpl.s	.tsend
		add.w	#24,d0
		cmp.w	nmxpos(a0),d0
		bmi.s	.tsend
		move.w	absmanypos+2-d(a5),d0
		add.w	#65,d0
		cmp.w	nmypos(a0),d0
		bpl.s	.tsend
		addq.w	#8,d0
		cmp.w	nmypos(a0),d0
		bmi.s	.tsend
		move.w	#1,nmcoll(a0)
		move.w	#1,stompflag-d(a5)
		clr.w	fallflag-d(a5)
		clr.w	fallspeed-d(a5)
		clr.w	fallpos-d(a5)
		move.w	#1,jumpflag-d(a5)
		clr.w	jumppos-d(a5)
		move.w	#4,janimcount-d(a5)
		move.w	#3,jumphold-d(a5)
.tsend		rts


.animtabl	dc.l	34*160+20,34*160+22,34*160+24,34*160+26,34*160+26,34*160+24,34*160+22,34*160+20
.animtabr	dc.l	40*160+20,40*160+22,40*160+24,40*160+26,40*160+26,40*160+24,40*160+22,40*160+20
.falltabl	dc.l	80*160+4,84*160+4,90*160+4,97*160+4,106*160+4,117*160+4,130*160+4,145*160+4
.falltabr	dc.l	80*160+6,84*160+6,90*160+6,97*160+6,106*160+6,117*160+6,130*160+6,145*160+6
.pfltabl	dc.l	161*160+4,173*160+4,181*160+4,186*160+4,189*160+4
.pfltabr	dc.l	161*160+6,173*160+6,181*160+6,186*160+6,189*160+6
.fallsize	dc.w	4,6,7,9,11,13,15,16
.fallofs	dc.w	13,13,13,13,13,13,14,14
.pflsize	dc.w	12,8,5,3,3
.pflofs		dc.w	4,8,11,13,13
.pflxofs	dc.w	-2,-4,-4,-4,-4
;------------------------------------------------
objrout		move.w	d1,nmobj(a0)
		cmp.w	takenobj-d(a5),d1
		beq.s	.reset
		move.l	d0,nmdata(a0)
		add.w	nmstartypos(a0),d2
		move.w	d2,nmypos(a0)
		move.l	d1,-(a7)
		bsr	maskblit
		move.l	(a7)+,d1
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.w	d1,touchtext-d(a5)
		move.w	d1,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		rts
.reset		clr.w	takenobj-d(a5)
		clr.w	nmenable(a0)
		rts
;------------------------------------------------
move14		moveq	#6,d1			; Kurbel
		moveq	#11,d2
		move.l	#52*160+38,d0
		bra	objrout		
;------------------------------------------------
move15		moveq	#7,d1			; Holz
		moveq	#9,d2
		move.l	#31*160+36,d0
		bra	objrout		
;------------------------------------------------
move16		moveq	#8,d1			; Feuersteine
		moveq	#10,d2
		move.l	#34*160+28,d0
		bra	objrout		
;------------------------------------------------
move17		moveq	#9,d1			; Hammer
		moveq	#10,d2
		move.l	#52*160+36,d0
		bra	objrout		
;------------------------------------------------
move18		moveq	#10,d1			; Kerzen
		moveq	#12,d2
		move.l	#41*160+30,d0
		bra	objrout		
;------------------------------------------------
move19		moveq	#11,d1			; Schlüssel
		moveq	#12,d2
		move.l	#40*160+28,d0
		bra	objrout		
;------------------------------------------------
move20		moveq	#12,d1			; Kristall
		moveq	#9,d2
		move.l	#34*160+30,d0
		bra	objrout		
;------------------------------------------------
move21		moveq	#13,d1			; Paddel
		moveq	#10,d2
		move.l	#25*160+36,d0
		bra	objrout		
;------------------------------------------------
move22		moveq	#14,d1			; kaputte Winde
		moveq	#0,d2
		moveq	#38,d0
		bra	objrout
;------------------------------------------------
move23		moveq	#15,d1			; kaputte Winde
		moveq	#0,d2
		moveq	#0,d0
		bra	objrout
;------------------------------------------------
move24		movem.l	a1/d2,-(a7)
		moveq	#16,d1
		lea	fpgtab-d(a5),a1
		move.w	#_language,d0
		tst.w	d0
		beq.s	.c1
		lea	fpetab-d(a5),a1
.c1		move.w	fpstatusflag-d(a5),d0
		add.w	d0,d0
		add.w	d0,d0
		move.l	(a1,d0.w),(actiontab+15*16+12)-d(a5)
		move.l	12(a1,d0.w),(actiontab+15*16+8)-d(a5)

		move.w	d1,nmobj(a0)
		
		
		add.w	#32,nmypos(a0)
		move.w	#16,nmysize(a0)
		move.l	#nrmbobs+48*160,d0
		cmp.w	#2,fpstatusflag-d(a5)
		bne.s	.c2
		move.l	#nrmbobs+16*160+4,d0
		lea	.animtab(pc),a1
		move.w	nmanimpos(a0),d2
		add.l	(a1,d2.w),d0
		addq.w	#1,nmanimcount(a0)
		cmp.w	#4,nmanimcount(a0)
		bmi.s	.c2
		clr.w	nmanimcount(a0)
		addq.w	#4,nmanimpos(a0)
		and.w	#12,nmanimpos(a0)
.c2		movem.l	(a7)+,a1/d2
		move.l	d0,nmdata(a0)
		moveq	#0,d5
		bsr	normblit
		
		moveq	#0,d1
		move.w	nmstartypos(a0),nmypos(a0)
		move.w	#32,nmysize(a0)
		move.l	#nrmbobs+16*160,nmdata(a0)
		moveq	#0,d5
		bsr	normblit
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.w	#16,touchtext-d(a5)
		move.w	#16,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		rts

.animtab	dc.l	0,16*160,32*160,48*160
;------------------------------------------------
move25		moveq	#17,d1
		move.w	d1,nmobj(a0)
		move.l	#nrmbobs+8,nmdata(a0)
		moveq	#0,d5
		bsr	normblit
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.w	#17,touchtext-d(a5)
		move.w	#17,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		rts
;------------------------------------------------
move26		moveq	#18,d1			; Nägel
		moveq	#9,d2
		move.l	#16*160+38,d0
		bra	objrout
;------------------------------------------------
move27		moveq	#19,d1			; Seil
		moveq	#2,d2
		move.l	#38*160+36,d0
		bra	objrout
;------------------------------------------------
move28		moveq	#20,d1
		move.w	d1,nmobj(a0)
		moveq	#-1,d5
		bsr	normblit
		tst.w	ropedownflag-d(a5)
		bne.s	.ret
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.w	#20,touchtext-d(a5)
		move.w	#20,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		rts
;------------------------------------------------
move29		moveq	#21,d1
		move.w	d1,nmobj(a0)
		moveq	#-1,d5
		bsr	normblit
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.w	#21,touchtext-d(a5)
		move.w	#21,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		rts
;------------------------------------------------
move30		move.w	#22,nmobj(a0)
		move.w	boatrideflag-d(a5),d0
		tst.w	d0
		beq	.c1
		tst.w	nmstartflag(a0)
		beq.s	.c001
		clr.w	nmstartflag(a0)
		movem.l	a1/d1/d2,-(a7)
		move.l	nm-d(a5),a1
		moveq	#_nmeno-1,d1
.l001		cmp.l	a0,a1
		bmi.s	.c003
		tst.w	nmenable(a1)
		beq.s	.set
.c003		addq.l	#4,a1
		dbra	d1,.l001
		bra.s	.c002
		
.set		moveq	#41,d2
		bsr	setboba1c

.c002		movem.l	(a7)+,a1/d1/d2
.c001		movem.l	a1/d2/d1,-(a7)
		lea	surfacedata-d(a5),a1
		move.w	surfacepos-d(a5),d2
		sub.w	#32,d2
		and.w	#2047,d2
		move.w	(a1,d2.w),d2
		cmp.w	#2,d0
		beq.s	.c4
		cmp.w	#2,d2
		bpl.s	.c2
		addq.w	#1,boatrideflag-d(a5)
		bra.s	.c2
.c4		add.w	#(_levheight*16)-65,d2	;#1219
		cmp.w	nmypos(a0),d2
		beq.s	.c6
		bpl.s	.c3
		subq.w	#1,nmypos(a0)
		subq.w	#1,manypos-d(a5)
		subq.l	#1,absmanypos-d(a5)
		bra.s	.c6
.c3		addq.w	#1,nmypos(a0)
		addq.w	#1,manypos-d(a5)
		addq.l	#1,absmanypos-d(a5)
.c6		moveq	#0,d0
		move.l	nmactxpos(a0),d2
		lsr.l	#8,d2
		move.w	nmxspeed(a0),d0
		add.l	d0,nmactxpos(a0)
		move.l	nmactxpos(a0),d0
		lsr.l	#8,d0
		move.w	d0,d1
		add.w	nmstartxpos(a0),d0
		move.w	d0,nmxpos(a0)
		sub.l	d2,d1
		lsl.w	#2,d1
		add.w	d1,agamanxpos-d(a5)
		add.l	d1,agaabsmanxpos-d(a5)
		addq.w	#1,nmxspeed(a0)
		addq.w	#1,boatanimcount-d(a5)
		cmp.w	#4,boatanimcount-d(a5)
		bmi.s	.c2
		clr.w	boatanimcount-d(a5)
		addq.w	#4,boatanimpos-d(a5)
		cmp.w	#24,boatanimpos-d(a5)
		bmi.s	.c2
		clr.w	boatanimpos-d(a5)

.c2		movem.l	(a7)+,a1/d2/d1
		bra.s	.c5
.c1		clr.w	nmxspeed(a0)
		clr.l	nmactxpos(a0)
.c5		move.l	#5*16*160+22,nmdata(a0)	;repariertes Boot
		bsr	maskblitxy
		tst.w	mancoll-d(a5)
		beq.s	.ret
		clr.w	mancoll-d(a5)
		move.w	#1,touchflag-d(a5)
		move.l	#objectspr+3*4*16,touchdata-d(a5)
		move.w	#22,touchtext-d(a5)
		move.w	#22,touchtext2-d(a5)
		move.l	a0,touchpos-d(a5)
.ret		cmp.w	#320,manxpos-d(a5)
		bpl.s	.quit
		rts

.quit		move.w	#1,qui