*******************************************************
*** TrainerMenu#1 by Big Brother of Scoopex Germany ***
*******************************************************
*** needed memory : S to ALLEND ! The rest is free  ***
*******************************************************
*** use any ORG + LOAD adr and it will run fine     ***
*******************************************************
*** enter the right amount of funct. and it'll work ***
*******************************************************
*** anzahl der zeilen inBOARD muessen immer 14 sein ***
*** in the label ACTION bits are set or not         ***
*** if bit 0 is set then the first menu point is off***
*** if bit not set then function is on !!!          ***
*******************************************************
*** if bit1 is set no trainer for 2. point          ***
*** if bit1 is not set => trainer                   ***
*** same with the bits (0-4) (Anz der Funktionen-1) ***
*******************************************************

Anzahl_der_functions = 5

		org	$40000
		load	$40000
s:		movem.l	a0-a6/d0-d7,-(sp)
		move.l	$80,oldirq
		move.l	#start,$80
		trap	#0			;DO MENU
		move.l	#oldirq,$80
		movem.l	(sp)+,a0-a6/d0-d7
*************** here you can start the game with   ***
*************** JMP x or with another program      ***
*************** otherwise he will go back to cli   ***
		rts

start:		lea	adr(pc),a0
		move.l	#planes,d0
		move.w	d0,22(a0)
		swap	d0
		move.w	d0,18(a0)
		move.l	#planes+$50,d0
		move.w	d0,6(a0)
		swap	d0
		move.w	d0,2(a0)

		clr.w	$100
		lea	planes(pc),a0
		lea	allend(pc),a1
cloop1:		clr.l	(a0)+
		cmp.l	a0,a1
		bne.s	cloop1

		bsr.L	writecop1
		bsr.L	makeline

		lea	$dff000,a6
		move.w	2(a6),help
		move.w	28(a6),help+2
		move.w	#$3fff,154(a6)
		move.w	#$87e0,150(a6)
		move.l	#newclist,128(a6)
		move.w	136(a6),d0

maus:		lea	$dff000,a5
		cmp.b	#$ff,$6(a5)
		bne.s	maus

		moveq	#0,d1
		move.w	$100,d0
		move.w	d0,d1
		lea	board+80,a0
		mulu	#40,d1
		add.l	d1,a0

		btst	d0,action+1
		beq.s	no_bit0

		move.b	#"f",34(a0)
		move.b	#"f",35(a0)
		bra.s	no_bits_all

no_bit0:	move.b	#"n",34(a0)
		move.b	#" ",35(a0)

no_bits_all:	moveq	#anzahl_der_functions-1,d6
		lea	board+80,a0
		lea	planes+$50+[2*[7*40]],a1
		bsr.L	overjump
		bsr.L	check
		bsr.L	scrollcolors
		bsr.L	scrollcolors
		bsr.L	writecol1

		btst	#6,$bfe001
		bne.s	maus
waitmaus:	btst	#6,$bfe001
		beq.s	waitmaus

		cmp.w	#anzahl_der_functions,$100
		beq.s	real_exit

		move.w	$100,d0
		bchg	d0,action+1
		bra.L	maus

real_exit:	move.l	$4.w,a6
		lea	gfxbase(pc),a1
		jsr	-408(a6)
		lea	$dff000,a6
		move.l	d0,a0
		move.w	#$7fff,150(a6)
		move.l	38(a0),128(a6)
		move.w	136(a6),d0
		or.l	#$80008000,help
		move.w	help,150(a6)
		move.w	help+2,154(a6)
		move.w	#$2700,SR
		rte			;Out of Trap

makeline:	move.l	#endboard-board,d6
		divu	#40,d6
		subq.l	#1,d6

		lea	board(pc),a0
		lea	planes+$50,a1
overjump:
Wholeboard:	moveq	#39,d0
Wholeline:	move.b	(a0)+,d1
		bsr.s	getchar
		addq.l	#1,a1
		dbf	d0,Wholeline
		add.l	#40*5+40,a1
		dbf	d6,wholeboard
		rts

Getchar:	moveq	#-5,d2
		lea	ascii(pc),a2
		lea	charset(pc),a3
loop:		addq.l	#5,d2
		cmp.b	(a2)+,d1
		bne.s	loop
		add.l	d2,a3
		moveq	#4,d2
loop2:		move.b	(a3)+,(a1)
		add.l	#40,a1
		dbf	d2,loop2
		sub.l	#$c8,a1
		rts

Help:		dc.l	0
gfxbase:	dc.b	"graphics.library",0,0
oldirq:		dc.l	0

newclist:
	dc.w	$008e,$7081,$0090,$d2c1,$0092,$0038,$0094,$00d0
	dc.w	$0102,$0040,$0104,$0000,$0108,$0000,$0100,$2400
	dc.w	$0108,0
	dc.w	$120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
	dc.w	$130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
adr:
	dc.w	$00e0,$0006,$00e2,$0050,$0180,$0000,$0182,$eee
	dc.w	$00e4,$0006,$00e6,$0000,$0192,$0666
	dc.w	$6811,$fffe,$0180,$0eee
	dc.w	$6911,$fffe,$0180,$0999

coolone:	blk.l	[5*42],0

	;dc.w	$7e11,$fffe,$0182,$0
	;dc.w	$8411,$fffe,$0182,$eee

	dc.w	$d811,$fffe,$0180,$0666
	dc.w	$d911,$fffe,$0180,$0000
	dc.w	$ffff,$fffe

ascii:
	dc.b	"abcdefghijklmnopqrstuvwxyz0123456789!: -"

charset:
	dc.b	$7F,$03,$7F,$63,$63
	dc.b	$7F,$03,$7E,$63,$7F
	dc.b	$7F,$00,$60,$60,$7F
	dc.b	$7E,$03,$63,$63,$7E
	dc.b	$7F,$00,$78,$60,$7F
	dc.b	$7F,$00,$78,$60,$60
	dc.b	$7F,$00,$63,$61,$7F
	dc.b	$63,$63,$7F,$63,$63
	dc.b	$7E,$18,$18,$18,$7E
	dc.b	$1F,$06,$06,$66,$7E
	dc.b	$63,$66,$7C,$66,$63
	dc.b	$60,$60,$60,$63,$7F
	dc.b	$63,$77,$7F,$6B,$63
	dc.b	$73,$7B,$6F,$67,$63
	dc.b	$7F,$03,$63,$63,$7F
	dc.b	$7E,$06,$7E,$60,$60
	dc.b	$7F,$03,$63,$67,$7F
	dc.b	$7F,$03,$7F,$66,$63
	dc.b	$7F,$00,$7F,$03,$7F
	dc.b	$FF,$18,$18,$18,$18
	dc.b	$63,$63,$63,$63,$7F
	dc.b	$63,$63,$63,$36,$1C
	dc.b	$63,$6B,$7F,$77,$63
	dc.b	$63,$3E,$1C,$3E,$63
	dc.b	$63,$63,$7F,$03,$7F
	dc.b	$7F,$07,$1C,$70,$7F
	dc.b	$7F,$67,$6B,$73,$7F
	dc.b	$38,$18,$18,$18,$7E
	dc.b	$7F,$03,$7F,$60,$7F
	dc.b	$7F,$03,$0F,$03,$7F
	dc.b	$60,$66,$7F,$06,$06
	dc.b	$7F,$60,$7F,$03,$7F
	dc.b	$7F,$60,$7F,$63,$7F
	dc.b	$7F,$06,$0C,$0C,$0C
	dc.b	$7F,$63,$7F,$63,$7F
	dc.b	$7F,$60,$7F,$03,$03
	dc.b	$38,$38,$38,$00,$38
	dc.b	$00,$38,$00,$38,$00
	dc.b	$00,$00,$00,$00,$00
	dc.b	$00,$00,$ff,$00,$00
board:
	dc.b	"----------------- name -----------------"
	dc.b	"                                        "
	dc.b	"      infinite energy          - on     "
	dc.b	"      infinite lives           - on     "
	dc.b	"      infinite ghosters        - on     "
	dc.b	"      infinite ghosters2       - on     "
	dc.b	"      infinite ghosters2       - on     "
	dc.b	"         ----- start game -----         "
	dc.b	"                                        "
	dc.b	"           cracked by quartex           "
	dc.b	"           trained by scoopex           "
	dc.b	"                                        "
	
	dc.b	"       call our boards in usa at:       "
	dc.b	"usa-804-499-2266   or   usa-313-847-1941"
endboard:
code:	dc.b	"Code by Big Brother/Chris : 02202/36903"

even

writecop1:	lea	coolone(pc),a0
		move.l	#$7e3ffffe,d0
		move.l	#$01820f00,d1
		moveq	#4,d4
nextline:	moveq	#39,d2
		move.l	d0,(a0)+
loop2btc:	move.l	d1,(a0)+
		subq.l	#2,d1
		dbf	d2,loop2btc
		move.l	#$01820eee,(a0)+
		add.l	#$01000000,d0
		dbf	d4,nextline
		rts

writecol1:	lea	coolone+6,a1
		lea	colors(pc),a0
		moveq	#4,d1
nextcline:	move.l	a0,a2
		moveq	#39,d0
newone:		move.w	(a2)+,(a1)
		addq.l	#4,a1
		dbf	d0,newone
		addq.l	#8,a1
		addq.l	#2,a0
		dbf	d1,nextcline
		rts

scrollcolors:	lea	colors(pc),a0
		lea	ecolors(pc),a1
		move.w	(a0),d0
wait2:		move.w	2(a0),(a0)+
		cmp.l	a0,a1
		bne.s	wait2
		move.w	d0,ecolors-2
		rts

check:		move.b	$dff00a,d0
		move.b	btc4,d1
		cmp.b	d0,d1
		beq.s	b180
		bge.s	b18a
		ble.s	b1de
b180:		move.b	d0,btc4
		moveq	#0,d0
b188:		rts

b18a:		move.w	btca,d3
		addq.w	#1,btc6
		cmp.w	btc6,d3
		bne.s	b1da

		clr.w	btc6
		clr.w	btc8
		clr.w	d5

		move.w	#$100,d4
		cmp.w	d5,d4
		beq.s	b1da
		tst.w	$100
		beq.s	b180
		subq.w	#1,$100
		sub.w	#$0700,coolone
		sub.w	#$0700,coolone+168
		sub.w	#$0700,coolone+[2*168]
		sub.w	#$0700,coolone+[3*168]
		sub.w	#$0700,coolone+[4*168]
b1da:		bra.s	b180
b1de:		move.w	btca,d2
		addq.w	#1,btc8
		cmp.w	btc8,d2
		bne.s	b230
		clr.w	btc8
		clr.w	btc6
		move.w	btcc,d5
		move.w	#$100,d4
		cmp.w	d4,d5
		beq.s	b230
		move.l	#endboard-board,d4
		divu	#64,d4
		subq.l	#3,d4
		;cmp.w	$100,d4
		cmp.w	#anzahl_der_functions,$100
		beq.L	b180
		addq.w	#1,$100
		add.w	#$0700,coolone+[0*168]
		add.w	#$0700,coolone+[1*168]
		add.w	#$0700,coolone+[2*168]
		add.w	#$0700,coolone+[3*168]
		add.w	#$0700,coolone+[4*168]
b230:		bra.L	b180
		rts

colors:
	dc.w	$100,$200,$300,$400,$500,$600,$700,$800,$900,$a00,$b00
	dc.w	$c00,$d00,$e00,$f00,$f10,$f20,$f30,$f40,$f50,$f60,$f70
	dc.w	$f80,$f90,$fa0,$fb0,$fc0,$fd0,$fe0,$ff0,$ef0,$df0,$cf0
	dc.w	$bf0,$af0,$9f0,$8f0,$7f0,$6f0,$5f0,$4f0,$3f0,$2f0,$1f0;44
	dc.w	$f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd
	dc.w	$fe,$ff,$ef,$df,$cf,$bf,$af,$9f,$8f,$7f,$6f,$5f,$4f,$3f
	dc.w	$2f,$1f,$0f,$0e,$d,$c,$b,$a,9,8,7,6,5,4,3,2,1	;89
ecolors:

btc4:		dc.b	$ac,0
btc6:		dc.b	0,0
btc8:		dc.b	0,0
btca:		dc.w	2
btcc:		dc.w	3
helper:		dc.w	0
action:		dc.w	0
planes:		blk.b	[40*7*14]+120
allend:

