sr.w	#3,d4
		move.w	d3,d5
		bpl.s	.mc013
		neg.w	d5
.mc013		cmp.w	#128,d5
		bpl.s	.mc003
		moveq	#0,d3
		moveq	#0,d4
.mc003		sub.w	d4,d3

		move.w	d3,nmxspeed(a1)
		move.w	d2,nmxspeed(a0)
		ext.l	d3
		ext.l	d2
		add.l	d3,nmactxpos(a1)
		add.l	d2,nmactxpos(a0)
		bra.s	.mc010
		
.mc001		addq.l	#4,a1
		bra	.ml002
		
.mc010		addq.l	#4,a0
		dbra	d0,.ml001

		rts

		move.l	nm-d(a5),a0
		moveq	#_nmeno-1,d7
.l1		tst.w	nmenable(a0)
		beq.s	.c1
		cmp.w	#3,nmmove+2(a0)
		bne.s	.c1
		
		move.w	nmanimpos2(a0),d0
		ext.l	d0
		add.l	d0,nmactxpos(a0)
		
.c1		addq.l	#4,a0
		dbra	d7,.l1

.end		rts
;------------------------------------------------
maskblitxy	maskblitxy_m
;------------------------------------------------
maskblit	maskblit_m
;------------------------------------------------
normblit	normblit_m
;------------------------------------------------
falling_down3	falling_down3_m
;------------------------------------------------
falling_down2	falling_down2_m
;------------------------------------------------
backdrop	backdrop_m
;------------------------------------------------
falling_down	falling_down_m
;------------------------------------------------
falling_down4	falling_down4_m
;-----------------------------------------------
teststomp	teststomp_m
;------------------------------------------------
teststand	moveq	#0,d1
		tst.w	ouchflag-d(a5)
		beq.s	.c1
		bpl.s	.end
.c1		tst.w	jumpflag-d(a5)
		bne.s	.end
		tst.w	jumphold-d(a5)
		bne.s	.end
		move.w	absmanxpos+2-d(a5),d0
		add.w	#44,d0
		cmp.w	nmxpos(a0),d0
		bpl.s	.end
		add.w	#24,d0
		cmp.w	nmxpos(a0),d0
		bmi.s	.end
		move.w	absmanypos+2-d(a5),d0
		add.w	#64+16,d0
		move.w	nmypos(a0),d2
		add.w	#21,d2
		cmp.w	d2,d0
		bpl.s	.end
		add.w	#16,d0
		cmp.w	d2,d0
		bmi.s	.end
		move.w	#1,bobstand-d(a5)
		move.l	absmanypos-d(a5),d1
		moveq	#0,d0
		move.w	nmypos(a0),d0
		sub.w	#69+8-21,d0
		move.l	d0,absmanypos-d(a5)
		sub.l	d0,d1
		sub.w	d1,manypos-d(a5)
		moveq	#-1,d1
.end		rts
;------------------------------------------------
teststand2	moveq	#0,d1
		tst.w	ouchflag-d(a5)
		beq.s	.c1
		bpl.s	.end
.c1		move.w	absmanxpos+2-d(a5),d0
		add.w	#24,d0
		cmp.w	nmxpos(a0),d0
		bpl.s	.end
		add.w	#48,d0
		cmp.w	nmxpos(a0),d0
		bmi.s	.end
		move.w	absmanypos+2-d(a5),d0
		add.w	#64,d0
		move.w	nmypos(a0),d2
		add.w	#20,d2
		cmp.w	d2,d0
		bpl.s	.end
		add.w	#16,d0
		cmp.w	d2,d0
		bmi.s	.end
		move.l	absmanypos-d(a5),d1
		moveq	#0,d0
		move.w	nmypos(a0),d0
		sub.w	#69+8-20,d0
		move.l	d0,absmanypos-d(a5)
		sub.l	d0,d1
		sub.w	d1,manypos-d(a5)
		moveq	#-1,d1
		move.w	#1,bobstand-d(a5)
.end		rts
;------------------------------------------------
calcnmblock	movem.l	a4,-(a7)
		move.l	_xmem,a1
		add.l	ldatofs-d(a5),a1
		lsr.l	#4,d0
		subq.l	#4,d0
		add.l	d0,d0
		lsr.l	#4,d1
		mulu	#_levwidth,d1
		lea	blocktab-d(a5),a4
		add.l	d0,d1
		lea	(a1,d1.l),a1
		move.w	(a1),d2
		and.w	#$3ff,d2
		move.b	(a4,d2.w),d0
		movem.l	(a7)+,a4
		rts

calcnmblock2	move.l	_xmem,a1
		add.l	ldatofs-d(a5),a1
		lsr.l	#4,d0
		add.l	d0,d0
		lsr.l	#4,d1
		mulu	#_levwidth,d1
		lea	blocktab-d(a5),a4
		add.l	d0,d1
		lea	(a1,d1.l),a1
		move.w	(a1),d0
		rts
;------------------------------------------------
move1		clr.l	nmdata(a0)
		bsr	maskblit
		rts
		
;------------------------------------------------
d		;data-start
;------------------------------------------------
move2		cmp.w	#10,enterflag2-d(a5)
		bmi.s	.end

		move.l	absmanxpos-d(a5),d0
		add.w	#80,d0
		cmp.w	nmxpos(a0),d0
		bmi.s	.end
		sub.w	#32,d0
		cmp.w	nmxpos(a0),d0
		bpl.s	.end

		move.l	absmanypos-d(a5),d0
		add.w	#16,d0
		cmp.w	nmypos(a0),d0
		bmi.s	.end
		sub.w	#64,d0
		cmp.w	nmypos(a0),d0
		bpl.s	.end

		move.l	nmanimpos(a0),d0
		and.l	#$fffffffc,d0
		add.l	#nrmbobs,d0
		move.l	d0,nmdata(a0)
		bsr	normblit
		cmp.l	#16,nmanimpos(a0)
		bpl.s	.end
		addq.l	#1,nmanimpos(a0)
.end		rts
;------------------------------------------------
move3		tst.w	nmstartflag(a0)
		beq.s	.c1
		clr.w	nmstartflag(a0)
		moveq	#0,d0
		move.w	nmstartxpos(a0),d0
		lsl.l	#8,d0
		move.l	d0,nmactxpos(a0)
		move.w	nmypos(a0),d0
		add.w	d0,d0
		and.w	#$ffe0,d0
		move.w	d0,nmactypos(a0)
		move.l	#0*160+4,nmdata(a0)
		move.w	#31,nmysize(a0)
		move.w	#12,nmypos+2(a0)
		clr.w	nmanimpos2(a0)
		clr.w	nmxspeed(a0)
		clr.w	nmyspeed(a0)
		move.w	nmxpos(a0),nmxdir+2(a0)
		move.w	nmypos(a0),nmydir+2(a0)
.c1		
		clr.w	nmactypos+2(a0)

		tst.w	bobstand-d(a5)
		bne	.c002
		
		tst.w	nmanimpos(a0)
		beq.s	.test2
		bmi.s	.test3

		move.w	#1,lorryflag-d(a5)
		move.w	#1,bobstand-d(a5)
		move.w	#1,nmactypos+2(a0)
		
		tst.w	jumped-d(a5)
		bne	.c003
		
		move.w	actstick-d(a5),d1
		and.w	#$0303,d1
		cmp.w	#$0100,d1
		beq.s	.c0014
		cmp.w	#$0200,d1
		bne.s	.c0011
		add.w	#48,nmxspeed(a0)
		bra.s	.c0014

.c0011		cmp.w	#$0103,d1
		bne	.c003
		sub.w	#48,nmxspeed(a0)
.c0014		bsr	setjump
		move.w	#1,jumped-d(a5)
		move.w	#2,jumphold-d(a5)
		move.w	#1,outoflorry-d(a5)
		move.w	#1,nmactypos+2(a0)
		move.w	#-1,nmanimpos(a0)
		bra.s	.c003
		
.test3		clr.w	nmanimpos(a0)
		move.w	#1,lorryflag-d(a5)
		bra.s	.c003
		
.test2		bsr	teststand
		tst.w	d1
		beq.s	.c001
		
		move.w	#1,nmactypos+2(a0)
		move.w	actstick-d(a5),d1
		and.w	#$0303,d1
		cmp.w	#$0100,d1
		beq.s	.c0004
		cmp.w	#$0200,d1
		bne.s	.c0001
		add.w	#48,nmxspeed(a0)
		bra.s	.c0004

.c0001		cmp.w	#$0103,d1
		bne.s	.c0002
		sub.w	#48,nmxspeed(a0)
.c0004		move.w	#2,jumphold-d(a5)
.c0002		
		move.w	#1,lorryflag-d(a5)
		tst.w	nmanimpos(a0)
		bne.s	.c001

		move.l	manxspeed-d(a5),d1
		asl.l	#6,d1
		add.w	d1,nmxspeed(a0)
		bra.s	.c001
		
.c002		clr.w	nmanimpos(a0)
		move.w	#1,lorryflag-d(a5)
		bra.s	.c003

.c001		move.w	bobstand-d(a5),nmanimpos(a0)
.c003		movem.l	a1/a2,-(a7)

		tst.w	nmxspeed(a0)
		bmi	m3left
		beq	.tfall

.m3r		move.w	nmxspeed(a0),d0
		ext.l	d0
		add.l	d0,nmactxpos(a0)
		move.l	nmactxpos(a0),d0
		asr.l	#8,d0
;		add.w	nmstartxpos(a0),d0
		move.w	nmxpos(a0),nmxdir+2(a0)
		move.w	d0,nmxpos(a0)

		moveq	#20,d0
		add.w	nmxpos(a0),d0
		moveq	#58*2,d1
		add.w	nmactypos(a0),d1
		asr.w	#1,d1
		bsr	calcnmblock

		move.w	(a1),d1
		and.w	#$3ff,d1
		sub.w	#27*20,d1
		beq	.faster3
		subq.w	#1,d1
		beq	.faster4
		subq.w	#1,d1
		beq	.faster1
		subq.w	#1,d1
		beq	.faster2
		sub.w	#17,d1
		beq	.faster3
		subq.w	#1,d1
		beq	.faster4
		subq.w	#1,d1
		beq	.faster1
		subq.w	#1,d1
		beq	.faster2
		cmp.b	#16,d0
		beq	.down
		
		moveq	#28,d0
		add.w	nmxpos(a0),d0
		moveq	#56*2,d1
		add.w	nmactypos(a0),d1
		asr.w	#1,d1
		bsr	calcnmblock
		move.w	(a1),d1
		and.w	#$3ff,d1
		sub.w	#27*20+4,d1
		beq	.slower1
		subq.w	#1,d1
		beq	.slower2
		subq.w	#1,d1
		beq	.slower3
		subq.w	#1,d1
		beq	.slower4
		sub.w	#17,d1
		beq	.slower1
		subq.w	#1,d1
		beq	.slower2
		subq.w	#1,d1
		beq	.slower3
		subq.w	#1,d1
		beq	.slower4
		cmp.b	#14,d0
		beq	.up
		bra	.horiz

.slower3	subq.w	#2,nmxspeed(a0)
		
		move.w	nmxdir+2(a0),d1
		move.w	nmxpos(a0),d0
		subq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs4(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase4(pc),a1
		move.w	(a1,d0.w),d2
		lea	m3phasetab(pc),a1
		move.l	(a1,d2.w),nmdata(a0)
		move.w	6(a1,d2.w),nmysize(a0)
		subq.w	#2,nmxspeed(a0)
		
		moveq	#0,d0
		move.w	nmxpos(a0),d2
		bra	.uc4
		
.slower4	subq.w	#4,nmxspeed(a0)

		move.w	nmxdir+2(a0),d1
		move.w	nmxpos(a0),d0
		subq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs4+32(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase4+32(pc),a1
		move.w	(a1,d0.w),d2
		lea	m3phasetab(pc),a1
		move.l	(a1,d2.w),nmdata(a0)
		move.w	6(a1,d2.w),nmysize(a0)

		moveq	#0,d0
		move.w	nmxpos(a0),d2
		bra	.uc4

.slower1	move.w	nmxpos(a0),d0
		subq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs3(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase3(pc),a1
		move.w	(a1,d0.w),d1
		lea	m3phasetab(pc),a1
		move.l	(a1,d1.w),nmdata(a0)
		move.w	6(a1,d1.w),nmysize(a0)
		subq.w	#4,nmxspeed(a0)
		bra	.c2
		
.slower2	move.w	nmxpos(a0),d0
		subq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs3+32(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase3+32(pc),a1
		move.w	(a1,d0.w),d1
		lea	m3phasetab(pc),a1
		move.l	(a1,d1.w),nmdata(a0)
		move.w	6(a1,d1.w),nmysize(a0)
		subq.w	#2,nmxspeed(a0)
		bra	.c2

		
.faster3	addq.w	#4,nmxspeed(a0)
		cmp.w	#_lorrymaxspeed,nmxspeed(a0)
		bmi.s	.f3c1
		move.w	#_lorrymaxspeed,nmxspeed(a0)
.f3c1		
		move.w	nmxdir+2(a0),d1

		move.w	nmxpos(a0),d0
		
		addq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs2(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase2(pc),a1
		move.w	(a1,d0.w),d2
		lea	m3phasetab(pc),a1
		move.l	(a1,d2.w),nmdata(a0)
		move.w	6(a1,d2.w),nmysize(a0)
		moveq	#0,d0
		move.w	nmxpos(a0),d2
		bra	.dc4
		
.faster4	addq.w	#2,nmxspeed(a0)
		cmp.w	#_lorrymaxspeed,nmxspeed(a0)
		bmi.s	.f4c1
		move.w	#_lorrymaxspeed,nmxspeed(a0)
.f4c1		
		move.w	nmxdir+2(a0),d1
		move.w	nmxpos(a0),d0
		addq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs2+32(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase2+32(pc),a1
		move.w	(a1,d0.w),d2
		lea	m3phasetab(pc),a1
		move.l	(a1,d2.w),nmdata(a0)
		move.w	6(a1,d2.w),nmysize(a0)
		moveq	#0,d0
		move.w	nmxpos(a0),d2
		bra	.dc4

.faster1	move.w	nmxpos(a0),d0
		addq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase(pc),a1
		move.w	(a1,d0.w),d1
		lea	m3phasetab(pc),a1
		move.l	(a1,d1.w),nmdata(a0)
		move.w	6(a1,d1.w),nmysize(a0)
		addq.w	#2,nmxspeed(a0)
		bra	.c2
		
.faster2	move.w	nmxpos(a0),d0
		addq.w	#4,d0
		and.w	#$f,d0
		add.w	d0,d0
		lea	m3ofs+32(pc),a1
		move.w	(a1,d0.w),nmypos+2(a0)
		
		lea	m3phase+32(pc),a1
		move.w	(a1,d0.w),d1
		lea	m3phasetab(pc),a1
		move.l	(a1,d1.w),nmdata(a0)
		move.w	6(a1,d1.w),nmysize(a0)
		addq.w	#4,nmxspeed(a0)
		bra	.c2

		
.down		move.l	#0*160+22,nmdata(a0)
		move.w	#36,nmysize(a0)
		move.w	#19,nmypos+2(a0)
		
		addq.w	#8,nmxspeed(a0)
.dc2		cmp.w	#_lorrymaxspeed,nmxspeed(a0)
		bmi.s	.dc1
		move.w	#_lorrymaxspeed,nmxspeed(a0)
.dc1		move.w	nmxdir+2(a0),d1
		move.w	nmxpos(a0),d0
		move.w	d0,d2
		and.w	#$f,d0
		lsr.w	#1,d0

.dc4		lsr.w	#4,d2
		lsr.w	#4,d1
		cmp.w	d2,d1
		beq.s	.dc3
		add.w	#16,nmactypos(a0)
		
.dc3		move.w	nmactypos(a0),d1
		and.w	#$fff0,d1
		lsr.w	#1,d1
		add.w	d1,d0
		add.w	nmypos+2(a0),d0
		subq.w	#6,d0
		move.w	nmypos(a0),nmydir+2(a0)
		move.w	d0,nmypos(a0)
		bra	.ret01
		
.up		move.l	#33*160+10,nmdata(a0)
		move.w	#36,nmysize(a0)
		move.w	#19,nmypos+2(a