------------------------------
clrmenu		clrmenu_m

clrstatline	clrstatline_m
;------------------------------------------------
moveacticon	moveacticon_m

writemsg	writemsg_m

turninit	turninit_m
;------------------------------------------------
remfrominv	remfrominv_m
;------------------------------------------------
chginventory	chginventory_m
;------------------------------------------------
doobjrout	move.w	objectno-d(a5),d0
		subq.w	#1,d0
		bmi.s	.ret
		add.w	d0,d0
		add.w	d0,d0
		lea	.bratab(pc),a0
		jsr	(a0,d0.w)
.ret		rts
		
.bratab		bra	obj1	; Valdyn
		bra	obj2	; Mönch
		bra	obj3	; Blader
		bra	obj4	; Frau
		bra	obj5	; Wächter
		bra	obj6	; Banane
		bra	obj7	; Melone
		bra	obj8	; Zocker
				
obj1		rts
obj2		rts
obj3		rts
obj4		rts
obj5		rts
obj6		rts
obj7		rts
obj8		rts
;------------------------------------------------
geta5		lea	d(pc),a5
		rts
updstatus	updstatus_m
;------------------------------------------------
menustick	menustick_m
;------------------------------------------------
updcounters	updcounters_m
;------------------------------------------------
printbig	printbig_m
;------------------------------------------------
copyanim	copyanim_m
;------------------------------------------------
setmananim	move.l	(_nmem).w,d0
		move.w	manypos-d(a5),d4

		tst.w	turnflag-d(a5)
		bne.s	.c003
		cmp.w	#4,ropedownflag-d(a5)
		bmi.s	.c003
		lea	.vertofstab(pc),a1
		move.w	ropedowncount-d(a5),d2
		add.w	d2,d2
		move.w	(a1,d2.w),runyofs-d(a5)
		add.w	(a1,d2.w),d4

.c003		cmp.w	#2,ropedownflag-d(a5)
		bne.s	.c002
		lea	.ladderofs(pc),a1
		move.w	ropeanimpos-d(a5),d2
		add.w	d2,d2
		move.w	(a1,d2.w),runyofs-d(a5)
		add.w	(a1,d2.w),d4

.c002		lea	manpos,a0
		add.l	d0,a0
		lea	manpos2,a2
		add.l	d0,a2
		tst.w	fallflag-d(a5)
		bne	.c4
		tst.w	jumpflag2-d(a5)
		beq.s	.c6
		tst.w	janimcount-d(a5)
		beq	.c5

.c6		tst.w	jumpflag-d(a5)
		bne.s	.c21
		clr.w	jumppunchflag-d(a5)
		tst.l	punchcount-d(a5)
		bne.s	.c10
		tst.w	punchflag-d(a5)
		beq.s	.nopunch
.c10		move.w	manxpos-d(a5),d0
		cmp.w	#8,duckpos-d(a5)
		beq.s	.dc01
		lea	punchofsr-d(a5),a3
		tst.w	animdir-d(a5)
		beq.s	.punchr
		lea	punchofsl-d(a5),a3
		bra.s	.punchr		
.dc01		lea	punchofsdr-d(a5),a3
		tst.w	animdir-d(a5)
		beq.s	.punchr
		lea	punchofsdl-d(a5),a3
.punchr		move.w	punchpos-d(a5),d1
		lsr.w	#1,d1
		add.w	(a3,d1.w),d0
		bra	.c3
		
.nopunch	tst.w	button-d(a5)
		beq.s	.c25
		move.w	#4,punchflag-d(a5)
		move.w	#4,punchcount-d(a5)
		bra.s	.c25

.c21		bsr	.testpunch
.c25		moveq	#1,d3
		lea	animlofs-d(a5),a1
		tst.w	animdir-d(a5)
		beq.s	.c1
		lea	animrofs-d(a5),a1
		moveq	#3,d3
		bra.s	.c1
		
.c4		bsr	.testpunch
		moveq	#1,d3
		lea	animlofs-d(a5),a1
		tst.w	animdir-d(a5)
		beq.s	.c1
		lea	animrofs-d(a5),a1
		moveq	#3,d3
		bra.s	.c1

.c5		bsr	.testpunch
		moveq	#3,d3
		lea	animlofs-d(a5),a1
		tst.w	animdir-d(a5)
		beq.s	.c1
		lea	animrofs-d(a5),a1
		moveq	#1,d3

.c1		move.w	animphase-d(a5),d2
		add.w	d2,d2
		move.w	manxpos-d(a5),d0

		tst.w	animstand-d(a5)
		bne.s	.c2
		add.w	(a1,d2.w),d0

;		move.w	#-1,stepdir-d(a5)
;		move.w	#-8,stepflag-d(a5)
		add.w	d2,d2
		add.w	animcount-d(a5),d2
		add.w	d2,d2

		tst.w	stepstandflag-d(a5)
		beq.s	.c001
		
;		clr.w	runyofs-d(a5)

		move.w	24(a1,d2.w),runyofs-d(a5)
		add.w	24(a1,d2.w),d4

		bra.s	.c3

.c001		move.w	runyofs-d(a5),d5
		beq.s	.c3
		bpl.s	.c012
		add.w	d5,d4
		addq.w	#1,runyofs-d(a5)
		bra.s	.c3
.c012		clr.w	runyofs-d(a5)
		bra.s	.c3

.c2		add.w	d3,d0

.c3		clr.w	collpointen-d(a5)
		tst.w	jumppunchflag-d(a5)
		beq.s	.c22
		
		moveq	#10,d1
		sub.w	jumppunchflag-d(a5),d1
		add.w	d1,d1
		add.w	d1,d1
		lea	.pltab(pc),a1
		lea	.plofs(pc),a3
		lea	.colll(pc),a4
		tst.w	animdir-d(a5)
		beq.s	.c23
		lea	.prtab(pc),a1
		lea	.profs(pc),a3
		lea	.jcollr(pc),a4
.c23		move.l	(a1,d1.w),animadr-d(a5)
		add.l	(a3,d1.w),d0
		move.w	#1,collpointen-d(a5)
		move.l	absmanxpos-d(a5),d2
		sub.w	#20,d2
		add.w	(a4,d1.w),d2
		move.w	d2,collpointx-d(a5)
		move.l	absmanypos-d(a5),d2
		add.w	2(a4,d1.w),d2
		move.w	d2,collpointy-d(a5)
		subq.w	#1,jumppunchflag-d(a5)

.c22		move.w	d0,d1
		lsr.w	#1,d0
		add.w	#$40,d0	
		tst.w	ouchflag-d(a5)
		bpl.s	.c32
		eor.w	#1,invinccount-d(a5)
		beq.s	.c32
		moveq	#0,d0
.c32		move.b	d0,3(a0)
		move.b	d0,11(a0)
		move.b	d0,3(a2)
		move.b	d0,11(a2)
		addq.w	#8,d0
		move.b	d0,19(a0)
		move.b	d0,27(a0)
		move.b	d0,19(a2)
		move.b	d0,27(a2)
		and.w	#$1,d1
		or.b	#$80,d1
		move.b	d1,7(a0)
		move.b	d1,15(a0)
		move.b	d1,23(a0)
		move.b	d1,31(a0)
		move.b	d1,7(a2)
		move.b	d1,15(a2)
		move.b	d1,23(a2)
		move.b	d1,31(a2)
		move.w	d4,d0
		add.w	#$2c,d0
		cmp.w	#252,d0
		bmi.s	.c7
		moveq	#0,d0
.c7		move.b	d0,2(a0)
		move.b	d0,10(a0)
		move.b	d0,18(a0)
		move.b	d0,26(a0)

		tst.w	d0
		beq.s	.c8
		add.w	#56,d0			; Höhe des Protagonisten
		cmp.w	#252,d0
		bmi.s	.c8
		move.w	#252,d0
.c8		move.b	d0,6(a0)
		move.b	d0,14(a0)
		move.b	d0,22(a0)
		move.b	d0,30(a0)
		move.b	d0,6(a2)
		move.b	d0,14(a2)
		move.b	d0,22(a2)
		move.b	d0,30(a2)

		move.w	ouchflag2-d(a5),d0
		move.w	ouchflag-d(a5),ouchflag2-d(a5)
		tst.w	d0
		bmi.s	.c31
		bne	.ouch
.c31		tst.w	boatrideflag-d(a5)
		bne	.boatride
		tst.w	turnflag-d(a5)
		bne	.turnanim
		tst.w	leaveflag-d(a5)
		bne.s	.end		
		tst.w	enterflag2-d(a5)
		bne.s	.end
		cmp.w	#2,ropedownflag-d(a5)
		beq.s	.ladder
		cmp.w	#4,ropedownflag-d(a5)
		bpl	.crawl
		tst.w	ropedownflag-d(a5)
		bne.s	.end
		tst.w	ropeflag-d(a5)
		bne.s	.end

		IFNE	_talk
		tst.w	dospeakflag-d(a5)
		bne	.end
		ENDC
		
		tst.w	textflag-d(a5)
		bne	.talkanim
		move.l	animadr-d(a5),d1
.c30		bsr	doanim
		
		tst.w	janimcount-d(a5)
		beq.s	.end
		subq.w	#1,janimcount-d(a5)
.end		rts


.ladder		lea	.ladderanimtab(pc),a2
		move.w	ropeanimpos-d(a5),d0
		and.w	#$fffc,d0
		move.l	_xmem,a0		;mananim
		add.l	#_manofs,a0
		add.l	(a2,d0.w),a0
		lea	_sprite,a1
		add.l	(_nmem).w,a1
		bsr	copyanim
		lea	d(pc),a5
		rts
		
.ladderanimtab	dc.l	87*928,88*928,89*928,90*928,91*928,84*928,85*928,86*928

.crawl		lea	.crawlanimtab(pc),a2
		move.w	ropedowncount-d(a5),d0
		and.w	#$fffc,d0
		move.l	_xmem,a0		;mananim
		add.l	#_manofs,a0
		add.l	(a2,d0.w),a0
		lea	_sprite,a1
		add.l	(_nmem).w,a1
		bsr	copyanim
		lea	d(pc),a5
		rts

.crawlanimtab	dc.l	92*928,93*928,94*928,95*928,96*928,97*928,98*928


.ouch		tst.w	stauchflag-d(a5)
		bne.s	.stauch
		move.l	#83*928,d1
		tst.w	animdir-d(a5)
		beq	.c30
		move.l	#82*928,d1
		bra	.c30
		
.stauch		move.l	#26*928,d1
		tst.w	animdir-d(a5)
		beq.s	.c0001
		move.l	#27*928,d1
.c0001		cmp.w	#4,d0
		bmi	.c30
		cmp.w	#28,d0
		bpl	.c30
		add.l	#928*2,d1
		bra	.c30
		

.boatride	move.l	#98*928,d1
		bsr	doanim
		move.w	#$10,priority-d(a5)
		rts

.turnanim	move.w	turncount-d(a5),d0
		add.w	d0,d0
		add.w	d0,d0
		lea	.turnanimtabl(pc),a0
		tst.w	animdir-d(a5)
		beq.s	.tc1
		lea	.turnanimtabr(pc),a0
.tc1		move.l	(a0,d0.w),d1
		bsr	doanim
		subq.w	#1,turnflag-d(a5)
		addq.w	#1,turncount-d(a5)
		rts

.talkanim	tst.w	turned-d(a5)
		bne	.end
		cmp.w	#1,textflag-d(a5)
		bne	.end
		move.l	#30*928,d1
		tst.w	talkflag-d(a5)
		beq.s	.end2
		addq.w	#1,talkcount-d(a5)
		cmp.w	#3,talkcount-d(a5)
		bne	.end
		clr.w	talkcount-d(a5)
		lea	rndtab-d(a5),a2
		move.w	rndseed-d(a5),d0
		addq.w	#1,rndseed-d(a5)
		and.w	#$ff,rndseed-d(a5)
		move.b	(a2,d0.w),d1
		and.w	#7,d1
		add.w	d1,d1
		add.w	d1,d1
		lea	.talktab(pc),a1
		move.l	(a1,d1.w),d1
.end2		bsr	doanim
		rts
		

.testpunch	tst.w	jumppunchflag-d(a5)
		bne.s	.c20
		tst.w	button-d(a5)
		beq.s	.c24
		tst.w	tboldbutt-d(a5)
		bne.s	.c20
		move.w	#1,tboldbutt-d(a5)
		move.w	#10,jumppunchflag-d(a5)
.c20		rts
.c24		clr.w	tboldbutt-d(a5)
		rts

.ladderofs	dc.w	0,0,1,1
		dc.w	0,0,1,1
		dc.w	-4,-4,-3,-3
		dc.w	-2,-2,-1,-1
		dc.w	0,0,1,1
		dc.w	0,0,1,1
		dc.w	-4,-4,-3,-3
		dc.w	-2,-2,-1,-1
		
.vertofstab	dc.w	-3,-3,-3,-3
		dc.w	-3,-3,-3,-3
		dc.w	-3,-3,-3,-3
		dc.w	-3,-3,-3,-3
		dc.w	-3,-3,-3,-3
		dc.w	-9,-9,-9,-9
		dc.w	-9,-9,-9,-9
		dc.w	-5,-5,-5,-5
		
.turnanimtabr	dc.l	25*928,73*928,73*928,74*928,74*928,75*928,75*928,76*928,76*928
		dcb.l	20,77*928
		dc.l	76*928,76*928,75*928,75*928,74*928,74*928,73*928,73*928,25*928

.turnanimtabl	dc.l	24*928,81*928,81*928,80*928,80*928,79*928,79*928,78*928,78*928
		dcb.l	20,77*928
		dc.l	78*928,78*928,79*928,79*928,80*928,80*928,81*928,81*928,24*928

.talktab	dc.l	30*928,70*928,71*928,72*928
		dc.l	30*928,70*928,71*928,30*928

.prtab		dc.l	928*66,928*66
		dc.l	928*68,928*68,928*68,928*68
		dc.l	928*66,928*66,928*66,928*66
.profs		dc.l	0,0,8,8,8,8,0,0,0,0
.pltab		dc.l	928*67,928*67
		dc.l	928*69,928*69,928*69,928*69
		dc.l	928*67,928*67,928*67,928*67
.plofs		dc.l	0,0,-8,-8,-8,-8,0,0,0,0
.collr		dc.w	80+20,18,80+20,18
		dc.w	80+32,16,80+32,16,80+32,16,80+32,16
		dc.w	80+20,18,80+20,18,80+20,18,80+20,18
.jcollr		dc.w	96+20,18,96+20,18
		dc.w	96+32,16,96+32,16,96+32,16,96+32,16
		dc.w	96+20,18,96+20,18,96+20,18,96+20,18
.colll		dc.w	112-20,18,112-20,18
		dc.w	112-32,16,112-32,16,112-32,16,112-32,16
		dc.w	112-20,18,112-20,18,112-20,18,112-20,18
;------------------------------------------------
doanim		move.l	_xmem,a0		;mananim
		add.l	#_manofs,a0
		add.l	d1,a0
		lea	_sprite,a1
		add.l	(_nmem).w,a1
		bsr	copyanim
		lea	d(pc),a5
		rts
;------------------------------------------------
setsun		move.w	#204+$2c,d1
		sub.w	absypos-d(a5),d1
		lea	sunpos,a0
		add.l	(_nmem).w,a0
		moveq	#0,d0
		move.w	d0,2(a0)
		move.w	d0,6(a0)
		move.w	d0,10(a0)
		move.w	d0,14(a0)
		move.w	sunxpos-d(a5),d0
		move.w	d0,d3
		and.b	#$1,d3
		move.b	d3,7(a0)
		move.b	d3,15(a0)
		lsr.w	#1,d0
		move.b	d0,3(a0)
		addq.w	#8,d0
		move.b	d0,11(a0)
		move.w	sunypos-d(a5),d0
		cmp.w	d1,d0
		bpl.s	.e1
		move.b	d0,2(a0)
		move.b	d0,10(a0)
		add.w	#31,d0
		cmp.w	d1,d0
		bmi.s	.c1
		move.w	d1,d0
.c1		move.b	d0,6(a0)
		move.b	d0,14(a0)
.e1		rts
;------------------------------------------------
setwaveanim	setwaveanim_m
;------------------------------------------------
setwaveanim2	setwaveanim2_m
;------------------------------------------------
setwavespr	setwavespr_m

setwaves	setwaves_m
;------------------------------------------------
setwater	setwater_m
;------------------------------------------------
getbutton	getbutton_m
;------------------------------------------------
setybgnd	moveq	#0,d6
		move.l	oldwavepos-d(a5),d2
		beq.s	.c3
		move.l	d2,a1
		move.l	oldwavedata-d(a5),(a1)+
		move.l	oldwavedata+4-d(a5),(a1)+
		move.l	oldwav