;KONGOMANS IFF TRANSFORMER V3.0
;DATE:

;TUT RUMTRANSFORMEN

P1X = 640
P1Y = 200
P1D = 1
P1 = P1X/8*P1Y
ExecBase = 4
AllocMem = -198
FreeMem = -210
OpenLibrary = -408
CloseLibrary = -414
Open = -30
Close = -36
Read = -42
ForBid = -132

o:
movem.l	d0-d7/a0-a6,-(a7)
bsr.L	OpenLibs
bsr.L	Alloc

move.l	ExecBase,a6
jsr	forbid(a6)

lea	TT1,a0
bsr	PRINTFOX
lea	TT2,a0
bsr	PRINTFOX
lea	TT3,a0
bsr	PRINTFOX
lea	TT4,a0
bsr	PRINTFOX
bsr	NewDisplay

lea	GODOWN,a4
move.l	#3,d5
GODOWNe:
move.l	a4,a0
movem.l	d5/a4,-(a7)
bsr	PRINTFOX
movem.l	(a7)+,d5/a4
add.l	#4,a4
bsr	WAIT
bsr	WAIT
bsr	WAIT
dbra	d5,GODOWNe
bsr	ZOOMON
lea	O1,a0
lea	PA1,a1
moveq	#0,d7
bsr	PRINTFOX2
lea	O2,a0
lea	PA2,a1
moveq	#0,d7
bsr	PRINTFOX2
lea	O3,a0
lea	PA3,a1
moveq	#0,d7
bsr	PRINTFOX2
lea	O4,a0
lea	PA4,a1
moveq	#0,d7
bsr	PRINTFOX2
bsr	ZOOMON2
LOPPER:
clr.l	d0
move.b	mouse,d1
move.b	$dff00a,d0
cmp.b	#$e0,d1
blo	nok1
cmp.b	#$40,d0
bhi	nok1
nok3:
move.b	d0,mouse
move.b	d0,d1
bra	nok2
nok1:
cmp.b	#$20,d1
bhi	nok2
cmp.b	#$c0,d0
bhi	nok3
nok2:
move.b	d0,d2
lsr.b	#4,d0
lsr.b	#4,d1
sub.b	d0,d1
beq	oktotal
bmi	up
down:
move.b	d2,mouse
tst.w	prg
beq	oktotal
sub.w	#1,prg
bra	oktotal
up:
move.b	d2,mouse
move.w	#4,d1
sub.w	#1,d1
cmp.w	prg,d1
beq	oktotal
add.w	#1,prg
oktotal:
move.l	#0,FIRE
btst	#6,$bfe001
bne	oktoa
move.l	#$1,FIRE
oktoa:
cmp.b	#$ff,$dff006
bne	oktotal
move.w	#$505,ZOOM2
move.w	#$505,ZOOM3
move.w	#$505,ZOOM4
move.w	#$505,ZOOM5
cmp.w	#0,prg
bne	Okto1
move.w	#$00f,ZOOM2
cmp.l	#1,FIRE
bne	OKTO1
oktr1:
lea	O1,a0
lea	PA1,a1
add.l	#1,Va1
move.l	Va1,d7
jsr	printfox2
cmp.l	#1234,d0
bne	okto1a
move.l	#-1,VA1
bra	OKtr1
OKTo1a:
jsr	WAIT
OKto1:
cmp.w	#1,prg
bne	OKto2
move.w	#$00f,ZOOM3
cmp.l	#1,FIRE
bne	OKTO2
oktr2:
lea	O2,a0
lea	PA2,a1
add.l	#1,Va2
move.l	Va2,d7
jsr	printfox2
cmp.l	#1234,d0
bne	okto2a
move.l	#-1,VA2
bra	OKtr2
OKto2a:
jsr	WAIT
OKTO2:
cmp.w	#2,prg
bne	OKto3
move.w	#$00f,ZOOM4
cmp.l	#1,FIRE
bne	OKTO3

oktr3:
lea	O3,a0
lea	PA3,a1
add.l	#1,Va3
move.l	Va3,d7
jsr	printfox2
cmp.l	#1234,d0
bne	okto3a
move.l	#-1,VA3
bra	OKtr3
OKTO3a:
jsr	Wait
OKto3:
cmp.w	#3,prg
bne	OKto4
move.w	#$00f,ZOOM5
cmp.l	#1,FIRE
bne	OKTO4
oktr4:
lea	O4,a0
lea	PA4,a1
add.l	#1,Va4
move.l	Va4,d7
jsr	printfox2
cmp.l	#1234,d0
bne	okto4a
move.l	#-1,VA4
bra	OKtr4
OKto4a:
jsr	Wait
OKto4:
btst	#10,$dff016
bne	LOPPER

move.l	GfxBase,a0
add.l	#$32,a0
move.w	#$0080,$dff096
move.l	oldcopper,(a0)
move.w	#$80a0,$dff096
jsr	Delloc
jsr	CloseLibs
movem.l	(a7)+,d0-d7/a0-a6             
rts
ZOOMON:
lea	ZOOM,a0
ARSCH:
move.l	#35,d0
LOPPPPER:
cmp.b	#$40,$dff006
bne	LOPPPPER
sub.w	#$0100,(a0)
sub.w	#$0100,12(a0)
add.w	#$0100,44(a0)
add.w	#$0100,52(a0)
move.l	#200,d1
EIMER:
dbra	d1,EIMER
dbra	d0,LOPPPPER
sub.w	#$1600,ZOOM3-6
add.w	#$1000,ZOOM5-6
rts
WAIT:
move.l	#$3f,d0
OKto4B:
cmp.b	#$ff,$dff006
bne	okto4b
dbra	d0,okto4b
rts
ZOOMON2:
move.w	#$f0f,ZOOM2
move.w	#$f0f,ZOOM3
move.w	#$f0f,ZOOM4
move.w	#$f0f,ZOOM5
lea	ZOOM2,a0
move.w	#$f0f,(a0)
move.l	#11,d0
LOPPPPER2:
cmp.b	#$40,$dff006
bne	LOPPPPER2
sub.w	#$0101,(a0)
sub.w	#$0101,ZOOM3
sub.w	#$0101,ZOOM4
sub.w	#$0101,ZOOM5
move.l	#200,d1
EIMER2:
dbra	d1,EIMER2
dbra	d0,LOPPPPER2
rts

PRINTFOX:
		;a0 = Adresse vom Text
move.l	GfxBase,a6
lea	RastPort1,a1
move.l	a0,-(a7)
move.l	#1,d0
jsr	-342(a6)
move.l	(a7)+,a0
clr.l	d0
clr.l	d1
lea	RastPort1,a1
move.b	(a0)+,d0
move.b	(a0)+,d1
move.l	a0,-(a7)
jsr	-240(a6)	;MOVE
move.l	(a7)+,d0
move.l	a0,a1
			;SCANNER
clr.l	d0
SCANLOOP:
cmp.b	#0,(a1)+
beq	SCANEND
add.l	#1,d0
bra	SCANLOOP
SCANEND:		;d0 = LAENGE DES TEXTES
lea	RastPort1,a1
jsr	-60(a6)		
rts
PRINTFOX2:
		;a0 = Adresse vom Text
		;a1 = Adresse vom ParameterText
		;d7 = Nr. vom parm.

move.l	#-1,d0
SCANLOOP4:
cmp.b	#0,(a1)+
beq	SCANEND4
bra	SCANLOOP4
SCANEND4:		;d0 = LAENGE DES TEXTES
add.l	#1,d0
cmp.l	d0,d7
bne	SCANLOOP4
cmp.b	#255,(a1)
beq	PRINTFOXERROR
move.l	GfxBase,a6
clr.l	d0
clr.l	d1
move.b	(a1)+,d0
move.l	a1,a5
move.b	(a0)+,d1
lea	RastPort1,a1
movem.l	d0-d7/a0-a6,-(a7)
jsr	-240(a6)	;MOVE
movem.l	(a7)+,d0-d7/a0-a6
lea	RastPort1,a1
movem.l	d0-d7/a0-a6,-(a7)
move.l	#0,d0
jsr	-342(a6)
movem.l	(a7)+,d0-d7/a0-a6
movem.l	d0-d7/a0-a6,-(a7)
lea	RastPort1,a1
move.l	#0,d0
sub.l	#8,d1
move.l	d1,d3
move.l	#320,d2
add.l	#10,d3
jsr	-306(a6)
movem.l	(a7)+,d0-d7/a0-a6
lea	RastPort1,a1
movem.l	d0-d7/a0-a6,-(a7)
move.l	#1,d0
jsr	-342(a6)
movem.l	(a7)+,d0-d7/a0-a6
			;SCANNER
clr.l	d0
move.l	a5,a1
lea	WORKSPACE,a5
SCANLOOP3:
cmp.b	#0,(a0)
beq	SCANLOOP2
move.b	(a0)+,(a5)+
add.l	#1,d0
bra	SCANLOOP3
SCANLOOP2:
cmp.b	#0,(a1)
beq	SCANEND2
move.b	(a1)+,(a5)+
add.l	#1,d0
bra	SCANLOOP2
SCANEND2:		;d0 = LAENGE DES TEXTES
lea	WORKSPACE,a0
lea	RastPort1,a1
jsr	-60(a6)		
rts
PRINTFOXERROR:
move.l	#1234,d0
rts
	Alloc:
	move.l	ExecBase,a6
	move.l	#P1*P1D,d0
	move.l	#$10000,d1
	jsr	AllocMem(a6)
	move.l	d0,MemPointer1
	move.l	d0,BitMap1+8
	move.w	d0,LO1
	swap	d0
	move.w	d0,HI1
	swap	d0
	move.l	GfxBase,a6
	lea	BitMap1,a0
	move.l	#P1D,d0
	move.l	#P1X,d1
	move.l	#P1Y,d2
	jsr	-390(a6)

	lea	RastPort1,a1
	jsr	-198(a6)
	move.l	#BitMap1,RastPort1+4

rts
Delloc:
	move.l	ExecBase,a6
	move.l	#P1*P1D,d0
	move.l	MemPointer1,a1
	jsr	FreeMem(a6)
	rts

NewDisplay:	
	move.l	GfxBase,a0
	add.l	#$32,a0
	move.w	#$0080,$dff096
	move.l	(a0),oldcopper
	move.l	#newcopper,(a0)
	move.w	#$8080,$dff096
	rts
OpenLibs:
	move.l	ExecBase,a6
	lea	GfxName,a1
	clr.l	d0
	jsr	OpenLibrary(a6)
	move.l	d0,GfxBase
rts
CloseLibs:
	move.l	ExecBase,a6
	move.l	GfxBase,a1
	jsr	CloseLibrary(a6)
	rts
;>>>> COPPERLISTE
NewCopper:
dc.w	$0096,$0020
dc.w	$008e,$2e81,$0090,$39c1
dc.w	$0092,$0038,$0094,$00d0
dc.w	$0100,%0001000000000000
dc.w	$00e0
HI1:	dc.w	$0000,$00e2
LO1:	dc.w	$0000
dc.w	$300f,$fffe
dc.w	$0182,$0500
dc.w	$0180,$0900
dc.w	$330f,$fffe
dc.w	$0180,$0f00
dc.w	$450f,$fffe
dc.w	$0180,$0600
dc.w	$480f,$fffe
dc.w	$0180,$0000

dc.w	$530f,$fffe
dc.w	$0182,$0050
dc.w	$0180,$0090
dc.w	$560f,$fffe
dc.w	$0180,$00f0
dc.w	$670f,$fffe
dc.w	$0180,$0060
dc.w	$6a0f,$fffe
dc.w	$0180,$0000

dc.w	$750f,$fffe
dc.w	$0182,$0005
dc.w	$0180,$0009
dc.w	$780f,$fffe
dc.w	$0180,$000f
dc.w	$890f,$fffe
dc.w	$0180,$0006
dc.w	$8c0f,$fffe
dc.w	$0180,$0000

ZOOM:
dc.w	$bc0f,$fffe
dc.w	$0182
ZOOM2:	dc.w $000f
dc.w	$0180,$0909
dc.w	$bf0f,$fffe
dc.w	$0180,$0f0f
dc.w	$c90f,$fffe
dc.w	$0182
ZOOM3:	dc.w	$00f
dc.w	$ca0f,$fffe
dc.w	$0182
ZOOM4:	dc.w	$00f
dc.w	$cb0f,$fffe
dc.w	$0182
ZOOM5:	dc.w	$00f
dc.w	$d10f,$fffe
dc.w	$0180,$0606
dc.w	$d40f,$fffe
dc.w	$0180,$0000

dc.w	$ffdf,$fffe
dc.w	$070f,$fffe
dc.w	$0182,$0550
dc.w	$0180,$0990
dc.w	$0a0f,$fffe
dc.w	$0180,$0ff0
dc.w	$1b0f,$fffe
dc.w	$0180,$0660
dc.w	$1e0f,$fffe
dc.w	$0180,$0000

dc.w	$fffe,$fffe

Even
GfxName:	dc.b	"graphics.library",0
Even

;>>>> STRUCTURES

BitMap1:	blk.l	12,0
RastPort1:	blk.l	27,0

;>>>> VARIS

Even
GfxBase:	dc.l	0
OldCOpper:	dc.l	0
MemPointer1:	dc.l	0

TT1:	dc.b	90,10,"--> THRUST <--",0
TT2:	dc.b	85,27,"PROUDLY PRESENTS",0
TT3:	dc.b	40,44,"SODAN MEGA TRAINER",0
TT4:	dc.b	55,117,"RIGHT MOUSEBUTTON TO EXIT",0

O1:	dc.b	65,"UNLIMITED LIVES:",0
O2:	dc.b	75,"STARTING LEVEL:",0
O3:	dc.b	85,"TURBO TOSTER:",0
O4:	dc.b	95,"GIGA GREETINGS TO:",0
Even
PA1:	dc.b	0,75,"OFF",0,77,"ON",0,45,"SCHEISSEGAL",0,255
PA2:	dc.b	0,85,"1",0,85,"2",0,85,"3",0,85,"4",0,85,"5",0,255
PA3:	dc.b	0,70,"NO!",0,70,"YES",0,255
PA4:	dc.b	0,43,"RSI & DEFJAM",0,43,"TRILOGY",0,255

EVEN
VA1:	dc.l	0
VA2:	dc.l	0
VA3:	dc.l	0
VA4:	dc.l	0

GODOWN:	dc.b	145,80,"3",0,145,80,"2",0,145,80,"1",0,140,80,"GO!",0

Even
WORKSPACE:	blk.b	60,0
MOUSE:	dc.l	0
PRG:	dc.l	0
FIRE:	dc.l	0
