ve28		moveq	#20,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	#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
		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)
.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,quitflag-d(a5)
		move.w	#1,fadeflag-d(a5)
		rts
;------------------------------------------------
move31		tst.w	textflag-d(a5)
		bne	maskblitxy
		
		movem.l	a1/a2/d0/d1/d2,-(a7)
		tst.w	nmstartflag(a0)
		beq.s	.c1
		clr.w	nmstartflag(a0)
		clr.l	nmanimpos2(a0)
		clr.l	nmyspeed(a0)
		move.w	#1,nmnoreset(a0)
.c1		tst.w	nmcoll(a0)
		beq.s	.lc2
		bsr	falling_down
		bra	.ret2
		
.lc2		lea	surfacedata-d(a5),a1
		move.w	nmanimpos2(a0),d0
		move.w	(a1,d0.w),d0
		add.w	nmstartypos(a0),d0
		sub.w	#24,d0
		move.w	d0,nmypos(a0)
		addq.w	#8,nmanimpos2(a0)
		and.w	#2046,nmanimpos2(a0)
		tst.w	nmxdir(a0)
		bne	.right

.left		subq.w	#2,nmxpos(a0)
		move.l	#160*160+16,d1
		bra.s	.ret
		
.right		addq.w	#2,nmxpos(a0)
		move.l	#192*160+16,d1

.ret		addq.w	#1,nmanimcount2(a0)
		cmp.w	#64,nmanimcount2(a0)
		bne.s	.c2
		clr.w	nmanimcount2(a0)

		moveq	#31,d2
		bsr	setboba1
		move.w	nmxpos(a0),nmxpos(a1)
		move.w	nmypos(a0),d0
		add.w	#24,d0
		move.w	d0,nmypos(a1)
		move.w	nmxpos(a0),nmstartxpos(a1)
		move.w	d0,nmstartypos(a1)
		move.w	nmxdir(a0),nmxdir(a1)
		
.c2		addq.w	#1,nmanimcount(a0)
		cmp.w	#3,nmanimcount(a0)
		bne.s	.lc1
		clr.w	nmanimcount(a0)
		addq.w	#4,nmanimpos(a0)
		cmp.w	#24,nmanimpos(a0)
		bmi.s	.lc1
		clr.w	nmanimpos(a0)		
.lc1		moveq	#0,d0
		move.w	nmanimpos(a0),d0
		add.l	d1,d0
		move.l	d0,nmdata(a0)

.ret2		movem.l	(a7)+,a1/a2/d0/d1/d2
		bsr	maskblitxy
		move.w	mancoll-d(a5),d0
		or.w	d0,defmancoll-d(a5)
		rts
;------------------------------------------------
move32		tst.w	textflag-d(a5)
		bne	maskblitxy
		movem.l	d0/d1/d3/a1/a2,-(a7)
		add.w	#4,nmanimpos(a0)
		and.w	#12,nmanimpos(a0)
		move.w	nmanimpos(a0),d0
		lea	.tabr(pc),a1
		tst.w	nmdieyspd+2(a0)
		bne.s	.c4
		tst.w	nmxdir(a0)
		bne.s	.right
		subq.w	#1,nmxpos(a0)
		lea	.tabl(pc),a1
		bra.s	.c4
.right		addq.w	#1,nmxpos(a0)
		lea	.tabr(pc),a1
.c4		move.l	(a1,d0),nmdata(a0)
		move.w	#1,nmnoreset(a0)
		moveq	#9,d3
		bsr	falling_down4
		eor.w	#1,nmanimpos+2(a0)
		bne.s	.c3
		subq.w	#1,nmdieyspd(a0)
.c3		movem.l	(a7)+,d0/d1/d3/a1/a2
		bsr	maskblitxy
		move.w	mancoll-d(a5),d0
		beq.s	.c2
		tst.w	nmdieyspd+2(a0)
		bne.s	.c2
		move.w	#1,nmdieyspd+2(a0)
		or.w	d0,defmancoll-d(a5)
.c2		rts
.tabr		dc.l	90*160+12,97*160+12,104*160+12,111*160+12
.tabl		dc.l	111*160+12,104*160+12,97*160+12,90*160+12
;------------------------------------------------
move33		movem.l	a1/d1-d4,-(a7)
		move.l	#128*160+28,d3
		moveq	#1,d4

move33ii	tst.w	nmcoll(a0)
		beq.s	.c6
		addq.w	#1,nmyspeed(a0)
		move.w	nmyspeed(a0),d0
		cmp.w	#64,d0
		bpl.s	.off
		lsr.w	#2,d0
		add.w	d0,nmypos(a0)
		eor.w	#1,nmxspeed(a0)
		bne.s	.c7
		sub.w	d4,nmxpos(a0)
.c7		bra	.blit

.off		bsr	doreset
		bra	.blit
		
.c6		tst.w	nmstartflag(a0)
		beq.s	.c1
		clr.w	nmanimcount2(a0)
		move.w	nmstartxpos(a0),nmxpos(a0)
		move.w	nmstartypos(a0),nmypos(a0)
		subq.w	#1,nmstartflag(a0)
		clr.w	nmyspeed(a0)
.c1		move.w	nmanimcount2(a0),d0
		cmp.w	#254,d0
		bne.s	.c2
		moveq	#0,d2
		lea	rndtab-d(a5),a1
		move.w	rndseed-d(a5),d1
		addq.w	#7,rndseed-d(a5)
		and.w	#255,rndseed-d(a5)
		move.b	(a1,d1.w),d2
		move.w	d2,nmstartflag(a0)
.c2		eor.w	#1,nmxspeed(a0)
		bne.s	.c3
		add.w	d4,nmxpos(a0)
.c3		addq.w	#2,nmanimcount2(a0)
		lea	sinus-d(a5),a1
		move.w	(a1,d0.w),d1
		asr.w	#8,d1
		asr.w	#1,d1
		neg.w	d1
		add.w	nmstartypos(a0),d1
		subq.w	#8,d1
		move.w	d1,nmypos(a0)
		lea	.animtab(pc),a1
		move.w	nmanimcount2(a0),d1
		lsr.w	#4,d1
		add.w	d1,d1
		add.w	d1,d1
		add.l	(a1,d1.w),d3
		move.l	d3,nmdata(a0)

.blit		movem.l	(a7)+,a1/d1-d4

		move.w	nmstartypos(a0),d0
		subq.w	#8,d0
		sub.w	nmypos(a0),d0
		bmi.s	.c4
		cmp.w	#32,d0
		bmi.s	.c5
		moveq	#32,d0
.c5		move.w	d0,nmysize(a0)
.c4		tst.w	nmysize(a0)
		beq.s	.end
		bsr	maskblitxy
		move.w	mancoll-d(a5),d0
		or.w	d0,defmancoll-d(a5)
.end		rts

.animtab	dc.l	0,0,0,0,4,8,8,8,8,8,8,4,0,0,0,0
;------------------------------------------------
move34		movem.l	a1/d1-d4,-(a7)
		move.l	#96*160+28,d3
		moveq	#-1,d4
		bra	move33ii
;------------------------------------------------
move35		moveq	#-1,d5
		bsr	normblit
		move.w	#1,nocopflag-d(a5)
		rts
;------------------------------------------------
move36		tst.w	nmcoll(a0)
		bne	.die
		clr.w	nmdieyspd(a0)
		movem.l	a1/d1,-(a7)
		moveq	#0,d1
		move.w	nmanimpos(a0),d0
		lea	.counttab(pc),a1
		move.b	(a1,d0.w),d1
		addq.w	#1,nmanimcount(a0)
		cmp.w	nmanimcount(a0),d1
		bne.s	.c1
		addq.w	#1,nmanimpos(a0)
		and.w	#15,nmanimpos(a0)
		clr.w	nmanimcount(a0)
.c1		lea	.animtab(pc),a1
		add.w	d0,d0
		add.w	d0,d0
		move.l	(a1,d0.w),nmdata(a0)
		move.w	nmstartypos(a0),d0
		add.w	#10,d0
		move.w	d0,nmypos(a0)
		cmp.w	#12,nmanimpos(a0)
		bne.s	.c2
		tst.w	nmanimcount(a0)
		bne.s	.c2

		moveq	#31,d2
		bsr	setboba1
		move.w	nmxpos(a0),d0
		addq.w	#8,d0
		move.w	d0,nmxpos(a1)
		move.w	d0,nmstartxpos(a1)
		move.w	nmypos(a0),nmypos(a1)
		move.w	nmypos(a0),nmstartypos(a1)
		move.w	#1,nmxdir(a1)
		move.w	#-18,nmdieyspd(a1)
		
		moveq	#31,d2
		bsr	setboba1
		move.w	nmxpos(a0),d0
		addq.w	#8,d0
		move.w	d0,nmxpos(a1)
		move.w	d0,nmstartxpos(a1)
		move.w	nmypos(a0),nmypos(a1)
		move.w	nmypos(a0),nmstartypos(a1)
		clr.w	nmxdir(a1)
		move.w	#-18,nmdieyspd(a1)

.c2		movem.l	(a7)+,a1/d1
		moveq	#0,d5
		bsr	normblit
		move.w	mancoll-d(a5),d0
		or.w	d0,defmancoll-d(a5)
		rts

.die		move.l	#nrmbobs+44*160+32,d0
		cmp.w	#4,nmdieyspd(a0)
		bpl.s	.res1
		addq.w	#1,nmdieyspd(a0)
		move.l	d0,nmdata(a0)
		moveq	#0,d5
		bsr	normblit
		rts
		
.res1		clr.w	nmenable(a0)
		rts
		

		
.animtab	dc.l	nrmbobs+16,nrmbobs+20,nrmbobs+24,nrmbobs+28
		dc.l	nrmbobs+32,nrmbobs+36,nrmbobs+22*160+16,nrmbobs+22*160+20
		dc.l	nrmbobs+22*160+24,nrmbobs+22*160+28,nrmbobs+22*160+32,nrmbobs+22*160+36
		dc.l	nrmbobs+44*160+16,nrmbobs+44*160+20,nrmbobs+44*160+24,nrmbobs+44*160+28
.counttab	dc.b	200,2,2,2,2,2,2,3,4,8,2,2,2,2,2,2
;------------------------------------------------
move37		movem.l	a1/a2/d1,-(a7)
		tst.w	nmstartflag(a0)
		beq.s	.c1
		clr.w	nmstartflag(a0)
		clr.w	nmyspeed(a0)
		move.w	nmstartypos(a0),nmactypos(a0)
.c1		move.w	nmanimpos(a0),d0
		lea	.size(pc),a1
		move.b	(a1,d0.w),nmysize+1(a0)
		lea	.add(pc),a1
		move.b	(a1,d0.w),d1
		ext.w	d1
		add.w	d0,d0
		add.w	d0,d0
		lea	.tab(pc),a1
		move.l	(a1,d0.w),nmdata(a0)
		move.w	nmactypos(a0),d0
		add.w	d1,d0
		move.w	d0,nmypos(a0)
		
		cmp.w	#12,nmanimpos(a0)
		beq	.new
		
		cmp.w	#8,nmanimpos(a0)
		bpl	.c2
		tst.w	nmanimcount+2(a0)
		bne	.dec
		cmp.w	#3,nmanimpos(a0)
		beq	.wait
		bmi.s	.c2

		moveq	#0,d0
		move.w	nmxpos(a0),d0
		lsr.w	#4,d0
		add.w	d0,d0
		subq.w	#8,d0
		move.w	nmypos(a0),d1
		lsr.w	#4,d1
		addq.w	#1,d1
		mulu	#_levwidth,d1
		add.l	d1,d0
		move.l	_xmem,a1
		add.l	ldatofs-d(a5),a1
		lea	blocktab-d(a5),a2
		move.w	(a1,d0.l),d1
		and.w	#$3ff,d1
		cmp.b	#1,(a2,d1.w)
		bpl.s	.hit
		
		move.w	nmyspeed(a0),d0
		lsr.w	#2,d0
		add.w	d0,nmactypos(a0)
		cmp.w	#16,d0
		bpl.s	.c2
		addq.w	#1,nmyspeed(a0)
		
.c2		cmp.w	#7,nmanimpos(a0)
		beq.s	.end
		addq.w	#1,nmanimcount(a0)
		cmp.w	#4,nmanimcount(a0)
		bmi.s	.end
		clr.w	nmanimcount(a0)
.c3		addq.w	#1,nmanimpos(a0)
.end		movem.l	(a7)+,a1/a2/d1
		bsr	maskblit
		move.w	mancoll-d(a5),d0
		or.w	d0,defmancoll-d(a5)
		rts		

.dec		subq.w	#1,nmanimcount+2(a0)
		bra.s	.end
		
.wait		lea	rndtab-d(a5),a1
		move.w	rndseed-d(a5),d0
		move.b	(a1,d0.w),d0
		addq.w	#6,rndseed-d(a5)
		and.w	#255,rndseed-d(a5)
		lsr.w	#1,d0
		cmp.w	#40,d0
		bpl.s	.c4
		moveq	#40,d0
.c4		ext.w	d0
		move.w	d0,nmanimcount+2(a0)
		bra.s	.c3

.hit		move.w	#8,nmanimpos(a0)
		and.w	#$fff0,nmactypos(a0)
		bra.s	.end

.new		clr.l	nmanimpos(a0)
		move.w	nmstartypos(a0),nmactypos(a0)
		clr.l	nmanimcount(a0)
		clr.w	nmyspeed(a0)
		bra.s	.end


.tab		dc.l	90*160+10,92*160+10,95*160+10,99*160+10
		dc.l	104*160+10,110*160+10,118*160+10,128*160+10
		dc.l	140*160+10,150*160+10,158*160+10,162*160+10,162*160+10
.size		dc.b	2,3,4,5,6,8,10,12,10,8,4,2,2
.add		dc.b	0,0,0,0,0,0,0,0,6,8,12,14,14
;------------------------------------------------
move38		move.l	a1,-(a7)
		move.w	nmanimpos(a0),d0
		and.w	#$fffc,d0
		lea	.animtab(pc),a1
		move.l	(a1,d0.w),nmdata(a0)
		addq.w	#1,nmanimpos(a0)
		and.w	#31,nmanimpos(a0)
		move.l	(a7)+,a1
		bsr	maskblit
		tst.w	mancoll-d(a5)
		beq.s	.end
		move.w	#224,energy-d(a5)
		clr.w	nmenable(a0)
.end		rts
.animtab	dc.l	192*160,192*160+2,192*160+4,192*160+6
		dc.l	208*160,208*160+2,208*160+4,208*160+6
;-----------------------------------------------