∙·∙· ╪O ╪O ╪O ╪O ╪O ╪O ╪O ╪O ╪OBlit:	macro
	btst	#14,2(a6)
	dc.w	$66f8
	endm

; FileFormat offsets
sd_songname	EQU	0	;songname offset
sd_sampleinfo	EQU	20	;first sample starts here
sd_numofpatt	EQU	950	;number of patterns are stored here
sd_pattpos	EQU	952	;pattern positions table is here
sd_mahokakt	EQU	1080	;"M.K." :)
sd_patterndata	EQU	1084	;first pattern starts at this position

; Song offsets. W/L/B means word/longword/byte length.
n_note		EQU	0  	;W
n_cmd		EQU	2  	;W
n_cmdlo		EQU	3  	;low B of cmd
n_start		EQU	4  	;L
n_length	EQU	8  	;W
n_loopstart	EQU	10 	;L
n_replen	EQU	14 	;W
n_period	EQU	16 	;W
n_finetune	EQU	18 	;B
n_volume	EQU	19 	;B
n_dmabit	EQU	20 	;W
n_toneportdirec	EQU	22 	;B
n_toneportspeed	EQU	23 	;B
n_wantedperiod	EQU	24 	;W
n_vibratocmd	EQU	26 	;B
n_vibratopos	EQU	27 	;B
n_tremolocmd	EQU	28 	;B
n_tremolopos	EQU	29 	;B
n_wavecontrol	EQU	30 	;B
n_glissfunk	EQU	31 	;B
n_sampleoffset	EQU	32 	;B
n_pattpos	EQU	33 	;B
n_loopcount	EQU	34 	;B
n_funkoffset	EQU	35 	;B
n_wavestart	EQU	36 	;L
n_reallength	EQU	40 	;W
n_trigger	EQU	42 	;B
n_samplenum	EQU	43 	;B

_LVOExec		=4
_LVOOldOpenLib	=-408
_LVOCloseLibrary	=-414
_LVOOpenScreen	=-198
_LVOCloseScreen	=-66
_LVOOpenWindow	=-204
_LVOCloseWindow	=-72
_LVOAutoRequest	=-348
_LVOWaitPort	=-384
_LVOGetMsg		=-372
_LVOText		=-60
_LVOMove		=-240
_LVOSetAPen		=-342
_LVOOpenDiskFont	=-30
_LVOOpenFont	=-72
_LVOSetFont		=-66
_LVOAskSoftStyle	=-84
_LVOSetSoftStyle	=-90
_LVOCloseFont	=-78
_LVOPrintIText	=-216
_LVOSetRGB4		=	-288
_LVOGetRGB4		=	-582
_LVOLoadRGB4		=	-192
_LVOMoveScreen		=	-162
_LVODeleteFile	=	-72
_LVOOpen	=	-30
_LVOClose	=	-36
_LVORead	=	-42
_LVOWrite	=	-48
_LVOInput	=	-54
_LVOOutput	=	-60
_LVOSeek	=	-66
_LVORename	=	-78
_LVOLock	=	-84
_LVOUnLock	=	-90
_LVODupLock	=	-96
_LVOExaminIVE	
_LVOExNext	=	-108
_LVOInfo	=	-114
_LVOCreateDir	=	-120
_LVOCurrentDir	=	-126
_LVOIoErr	=	-132
_LVOCreateProc	=	-138
_LVOExit	=	-144
_LVOLoadSeg	=	-150
_LVOUnLoadSeg	=	-156
_LVOGetPacket	=	-162
_LVOQueuePacket	=	-168
_LVODeviceProc	=	-174
_LVOSetComment	=	-180
_LVOSetProtection=	-186
_LVODateStamp	=	-192
_LVODelay	=	-198
_LVOWaitForChar	=	-204
_LVOParentDir	=	-210
_LVOIsInteractive=	-216
_LVOFreeMem	=	-$d2
_LVOAllocMem	=	-$c6
_LVOAcces_mode	= 	-2
_LVOOpenWorkBench=	-210


WBENCHSCREEN	=	$0001
CUSTOMSCREEN	=	$000F
SHOWTITLE	=	$0010
BEEPING		=	$0020
CUSTOMBITMAP	=	$0040
SCREENBEHIND	=	$0080
SCREENQUIET	=	$0100
STDSCREENHEIGHT	=	-1




ILE_COLOROW=16
CREDITS_MODULO_S=64
CREDITS_MODULO_P=2
ILE_KOPIUJ=64
OFFSET1=-41
OFFSET=198
OFFSET2=240
ILE_W_DOOL=4
ILE_DODAC=OFFSET2*ILE_W_DOOL	;-4
ILE_ZOOM=3
ODD=$FF-$25
IL_LINI=$135-$25
ILE_REZERWOWAC=IL_LINI*12+20
ILE_SCROLUJ=1600
ILEP=280000

ZOOOM	=	3
WYS	=	71

	section code,code_c

STARTF1:

	move.l	#0000,$dff1fc
	move.w	#$c00,$dff106

	move.l	#$180000,d0

	move.l	d0,ADRES_PAMIECI

	move.l	#ILEP,d7
	move.l	ADRES_PAMIECI,a1
BBBIII:
	move.b	#$00,(a1)+
	dbf	d7,BBBIII

	add.l	d0,PICTR1
	add.l	d0,PICTR2
	add.l	d0,PICTR3
	add.l	d0,PICTR4


	move.l	#picture+ILE_W_DOOL*40,a0
	move.l	PICTR1,a1
	add.l	#42,a1
	jsr	x_zoom

	move.l	#picture+71*40+ILE_W_DOOL*40,a0
	move.l	PICTR2,a1
	add.l	#42,a1
	jsr	x_zoom

	move.l	#picture+71*40+71*40+ILE_W_DOOL*40,a0
	move.l	PICTR3,a1
	add.l	#42,a1
	jsr	x_zoom

	move.l	#picture+71*40+71*40+71*40+ILE_W_DOOL*40,a0
	move.l	PICTR4,a1
	add.l	#42,a1
	jsr	x_zoom


	move.l	ADRES_PAMIECI,d0
	add.l	#80*1024,d0
	move.l	d0,BUF1
	add.l	d0,PICTR1K
	add.l	d0,PICTR2K
	add.l	d0,PICTR3K
	move.l	d0,a0		; Where decrunch it
	move.l	#PICTUREKOLO,a1	; What must be decrunch
	jsr	DECRUNCH

	move.l	ADRES_PAMIECI,d0
	add.l	#$3200*3,d0
	add.l	#80*1024,d0
	add.l	d0,creditsa
	move.l	d0,a0		; Where decrunch it
	move.l	#CREDITS,a1	; What must be decrunch
	jsr	DECRUNCH

	move.l	ADRES_PAMIECI,d0
	add.l	#$3200*3,d0
	add.l	#80*1024,d0
	add.l	#10000,d0

	move.l	d0,GET_C_COLORS_LIST
	add.l	#34*4,d0
	move.l	d0,GET_C_COLORS_LIST_BUF
	add.l	#34*4,d0
	move.l	d0,COLOR_WHITE
	add.l	#100,d0
	move.l	d0,TABLE_DRAW
	add.l	#2000,d0
	move.l	#SHADE_TABLE,a0
	move.l	#E_SHADE_TABLE,a1
	move.l	d0,(a0)+
	move.l	d0,(a1)+
	add.l	#$8000,d0
	move.l	d0,(a0)+
	move.l	d0,(a1)+
	add.l	#$8000,d0
	move.l	d0,(a0)+
	move.l	d0,(a1)+
	add.l	#$8000,d0
	move.l	d0,(a0)+
	move.l	d0,(a1)+
	add.l	#$8000,d0
	move.l	d0,(a0)+
	move.l	d0,(a1)+
	add.l	#$8000,d0



	bra	BLEF

X_ZOOM:
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d3
	moveq	#0,d4
	moveq	#0,d5
	moveq	#0,d6
	moveq	#0,d7
	move.w	#15,d7
	move.w	#$00008000,RORL
X_ZOOM_LOOP_BPL1:
	move.w	#ZOOOM,d6
X_ZOOM_LOOP_BPL12:
	add.w	#1,PUNKT

	jsr	WAIT_BLITTER
	move.l	a0,$dff050
	move.l	a1,d1

	move.w	PUNKT,d0
	sub.w	ROLM,d0
	And.w	#$fff0,d0
	Lsr.w	#3,d0
	Add.w	d0,d1
	Add.l	#0,d1	

	move.l	d1,$dff054
	move.l	d1,$dff04c
	move.w	RORL,$dff044
	move.w	#000,$dff046

	move.w	PUNKT,d0
	sub.w	ROLM,d0
	And.w	#$000f,d0
	Lsl.w	#8,d0
	Lsl.w	#4,d0
	Or.w	#$0dfc,d0

	move.w	d0,$dff040
	move.w	#0000,$dff042
	move.w	#236,$dff062
	move.w	#036,$dff064
	move.w	#236,$dff066
	move.w	#[WYS*64+2],$dff058

	btst #6,$bfe001
	beq.w X_ZOOM_EXIT

	cmp.w	#320*4,PUNKT
	bgt	X_ZOOM_EXIT

X_ZOMM:
	dbf	d6,X_ZOOM_LOOP_BPL12
	ror.w	#1,RORL
	add.w	#1,ROLM
	dbf	d7,X_ZOOM_LOOP_BPL1
	add.l	#2,a0
	move.w	#0,ROLM
	move.w	#15,d7
	move.w	#$0008000,RORL
	bra	X_ZOOM_LOOP_BPL1
X_ZOOM_EXIT:
	move.w	#0,PUNKT
	rts
PUNKT:	dc.w	0
RORL:	dc.l	0
ROLM:	dc.w	0


DECRUNCH:
	clr.l	d0
	clr.l	d1
	clr.l	d2
	clr.l	d3
	clr.l	d4
	clr.l	d5
	clr.l	d6
	clr.l	d7
	move.l	(a1),d7
	add.l	#4,a1
DCR_LOOP:
	clr.l	d0
	move.b	(a1)+,d0
	sub.l	#1,d7
	tst.l	d7
	beq	DCR_E
	btst	#7,d0
	bne	DCR_F1
	move.b	(a1)+,d1
	sub.l	#1,d7
DCR_F:
	move.b	d1,(a0)+
	dbf	d0,DCR_F
	tst.l	d7
	beq	DCR_E
	jmp	DCR_LOOP
DCR_F1:
	bclr	#7,d0
DCR_F2:
	move.b	(a1)+,(a0)+
	sub.l	#1,d7
	tst.l	d7
	beq	DCR_E

	dbf	d0,DCR_F2
	jmp	DCR_LOOP
DCR_E:
	rts



	;нннннннннннннннннннннннннннннн
	;нннннннннннннннннннннннннннннн
	;нннннннннннннннннннннннннннннн
	;нннннннннннннннннннннннннннннн
	;нннннннннннннннннннннннннннннн
	;нннннннннннннннннннннннннннннн

BLEF:

POCZATEK:
    lea     $dff000,a6		; ZABICIE PRZERWAN
     move.w  $1c(a6),Mem
     move.w  $02(a6),Mem+2
     or.l    #$80008000,Mem
     move.w  #$7fff,$9a(a6)
		jsr	pt_InitMusic
		jsr	PRZERWANIE_INIT


	move.l	_LVOExec,a6			; exec do a6
	lea	DosName(pc),a1	; nazwa do a1
	jsr	_LVOOldOpenLib(a6)		; Open library
	move.l	d0,DosBase		; baza do bufora
	beq	End

	move.l	_LVOExec,a6			; exec do a6
	lea	IntuiName(pc),a1	; nazwa do a1
	jsr	_LVOOldOpenLib(a6)		; Open library
	move.l	d0,IntuiBase		; baza do bufora
	beq	End

	move.l	_LVOExec,a6			; exec do a6
	lea	GraphName(pc),a1	; nazwa do a1
	jsr	_LVOOldOpenLib(a6)		; Open library
	move.l	d0,GraphBase		; baza do bufora
	beq	End

	move.l	IntuiBase(pc),a6
	jsr	_LVOOpenWorkBench(a6)	
	move.l	d0,WBHandle

ILE_COLORS=2	

GET_C_ILE_COLORS=32

	move.l	GET_C_COLORS_LIST,a5
	move.l	GET_C_COLORS_LIST_BUF,a4
	move.l	#GET_C_ILE_COLORS,d5

GET_C_COLORS_GET:
	move.l	GraphBase,a6
	move.l	WbHandle,a0
	lea	$2c(a0),a0		; Viev PORT
	move.l	4(a0),a0
	move.l	d5,d0			; nr koloru

	move.l	#GET_C_ILE_COLORS,d3
	sub.l	d0,d3
	move.l	d3,d0
	jsr	_LVOGetRGB4(a6)
	move.w	d0,(a5)+
	move.w	d0,(a4)+
	dbf	d5,GET_C_COLORS_GET

	move.l	#16,d7

GET_C_MOUSE:

	move.l	GET_C_COLORS_LIST,a0 
	move.l	COLOR_WHITE,a1
	jsr	GET_C_FADE_PROCEDURE

	move.l	GraphBase,a6
	move.l	WbHandle,a0
	lea	$2c(a0),a0		; Viev PORT
	move.l	#GET_C_ILE_COLORS,d0			; ilosc kolorow
	move.l	GET_C_COLORS_LIST,a1
	jsr	_LVOLoadRGB4(a6)

	jsr	WAIT255
	jsr	WAIT255

	dbf	d7,GET_C_MOUSE

		
BITPLANY:				; organizacja bitplanow
		move.l PICTR1,d0
		move.w d0,BITPLAN1+2
		swap d0
		move.w d0,BITPLAN0+2
		move.l PICTR2,d0
		move.w d0,BITPLAN3+2
		swap d0
		move.w d0,BITPLAN2+2
		move.l PICTR3,d0
		move.w d0,BITPLAN5+2
		swap d0
		move.w d0,BITPLAN4+2
		move.l PICTR4,d0
		move.w d0,BITPLAN7+2
		swap d0
		move.w d0,BITPLAN6+2

		jsr	USTAW_VIRTUAL_SPRITES
		jsr	ZOOM
		jsr	CHANGE_PALETTE

		move.l #CopperList,$dff080
		clr.w  $dff088
	jsr	SCR
	rts
MOUSE:
	jsr	WAIT255
	jsr	WAIT255
	jsr	MOUSE_WALL1
 ;*** Koni. Dema ***
		jsr	pt_StopMusic
	move.l	STARY_WEKTOR,$6c

     lea     $dff000,a6
     move.w  Mem,$9a(a6)
     move.w  Mem+2,$96(a6)

End	
;	** CloseGraph:
	move.l	_LVOExec,a6			; exec do a6
	move.l	GraphBase(pc),a1	; baza do a1
	jsr	_LVOCloseLibrary(a6)	; zamknij
;	** CloseIntui:
	move.l	_LVOExec,a6			; exec do a6
	move.l	IntuiBase(pc),a1	; baza do a1
	jsr	_LVOCloseLibrary(a6)	; zamknij
;	** CloseDos:
	move.l	_LVOExec,a6			; exec do a6
	move.l	DosBase(pc),a1		; baza do a1
	jsr	_LVOCloseLibrary(a6)	; zamknij

ERREND1:
	move.l	_LVOExec,a6
	move.l	#ILEP,d0
	move.l	ADRES_PAMIECI,a1
	jsr	_LVOFreeMem(a6)

ERREND:
	rts

IntuiName:	dc.b	"intuition.library",0
GraphName:	dc.b	"graphics.library",0
DosName:	dc.b	'dos.library',0
		even
WBHandle:	dc.l	0
Ile_Zjechal	dc.l	0
ScreenHandle:	dc.l	0
IntuiBase:	dc.l	0
ReqBase:	dc.l	0
GraphBase:	dc.l	0
DiskFontBase:	dc.l	0
DosBase:	dc.l	0

pt_InitMusic
	MOVEM.L	D0-D3/A0-A2,-(SP)
	move.l	#pt_data,a0
	MOVE.L	A0,pt_SongDataPtr
	LEA	sd_pattpos(A0),A1
	MOVEQ	#128-1,D0
	MOVEQ	#0,D1
	MOVEQ	#0,D2
	moveq	#$1e,d3
pt_lop2 MOVE.B	(A1)+,D1
	CMP.B	D2,D1
	BLE.B	pt_lop
	MOVE.L	D1,D2
pt_lop	DBRA	D0,pt_lop2
	ADDQ.W	#1,d2
	ASL.L	#8,D2
	ASL.L	#2,D2
	LEA	4(A1,D2.L),A2
	LEA	pt_SampleStarts(PC),A1
	ADD.W	#2*20+2,A0		;find first sample length
	MOVEQ	#31-1,D0
pt_lop3 MOVE.L	A2,(A1)+
	MOVEQ	#0,D1
	MOVE.W	(A0),D1
	ASL.L	#1,D1
	ADD.L	D1,A2
	ADD.L	D3,A0
	DBRA	D0,pt_lop3
	MOVE.B	#6,pt_Speed		;default speed
	OR.B	#2,$BFE001
	MOVEQ	#0,D0
	LEA	$DFF000,A0
	MOVE.W	D0,$A8(A0)
	MOVE.W	D0,$B8(A0)
	MOVE.W	D0,$C8(A0)
	MOVE.W	D0,$D8(A0)
	CLR.B	pt_SongPos
	CLR.B	pt_Counter
	CLR.B	pt_PattPos
	MOVEM.L	(SP)+,D0-D3/A0-A2
	RTS

pt_StopMusic
	MOVEM.L	D0/A0,-(SP)
	MOVEQ	#0,D0
	LEA	$DFF000,A0
	MOVE.W	D0,$A8(A0)
	MOVE.W	D0,$B8(A0)
	MOVE.W	D0,$C8(A0)
	MOVE.W	D0,$D8(A0)
	MOVE.W	#$000F,$DFF096		;stop AudioDMA activity
	MOVEM.L	(SP)+,D0/A0
	RTS

pt_PlayMusic
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	pt_SongDataPtr(PC),A0
	ADDQ.L	#1,pt_Counter
	MOVE.L	pt_Counter(PC),D0
	CMP.L	pt_CurrSpeed(PC),D0
	BLO.B	pt_NoNewNote
	CLR.L	pt_Counter
	TST.B	pt_PattDelayTime2
	BEQ.B	pt_GetNewNote
	BSR.B	pt_NoNewAllChannels
	BRA.W	pt_dskip

pt_NoNewNote
	BSR.B	pt_NoNewAllChannels
	BRA.W	pt_NoNewPositionYet

pt_NoNewAllChannels
	LEA	pt_audchan1temp(PC),A6
	LEA	$DFF0A0,A5
	BSR.W	pt_CheckEffects
	LEA	pt_audchan2temp(PC),A6
	LEA	$DFF0B0,A5
	BSR.W	pt_CheckEffects
	LEA	pt_audchan3temp(PC),A6
	LEA	$DFF0C0,A5
	BSR.W	pt_CheckEffects
	LEA	pt_audchan4temp(PC),A6
	LEA	$DFF0D0,A5
	BRA.W	pt_CheckEffects

pt_GetNewNote
	LEA	12(A0),A3
	LEA	sd_pattpos(A0),A2
	LEA	sd_patterndata(A0),A0
	MOVEQ	#0,D1
	MOVE.L	pt_SongPosition(PC),D0
	MOVE.B	0(a2,D0.W),D1
	ASL.L	#8,D1				;*1024
	ASL.L	#2,D1

	ADD.L	pt_PatternPosition(PC),D1
	MOVE.L	D1,pt_PatternPtr
	CLR.W	pt_DMACONtemp
	LEA	$DFF0A0,A5
	LEA	pt_audchan1temp(PC),A6
	MOVEQ	#1,D2
	BSR.W	pt_PlayVoice
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	MOVE.W	D0,8(A5)
	LEA	$DFF0B0,A5
	LEA	pt_audchan2temp(PC),A6
	MOVEQ	#2,D2
	BSR.B	pt_PlayVoice
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	MOVE.W	D0,8(A5)
	LEA	$DFF0C0,A5
	LEA	pt_audchan3temp(PC),A6
	MOVEQ	#3,D2
	BSR.B	pt_PlayVoice
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	MOVE.W	D0,8(A5)
	LEA	$DFF0D0,A5
	LEA	pt_audchan4temp(PC),A6
	MOVEQ	#4,D2
	BSR.B	pt_PlayVoice
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	MOVE.W	D0,8(A5)
	BRA.W	pt_SetDMA

pt_CheckMetronome
	CMP.B	pt_MetroChannel,D2
	BNE.W	pt_Return
	MOVE.B	pt_MetroSpeed,D2
	BEQ.W	pt_Return
	MOVE.L	pt_PatternPosition,D3
	LSR.L	#4,D3
	DIVU	D2,D3
	SWAP	D3
	TST.W	D3
	BNE.W	pt_Return
	AND.L	#$00000FFF,(A6)
	OR.L	#$10D6F000,(A6) 	;Play sample $1F at period $0D6 (214)
	RTS

pt_PlayVoice
	TST.L	(A6)
	BNE.B	pt_plvskip
	BSR.W	pt_PerNop
pt_plvskip
	MOVE.L	0(a0,D1.L),(A6)		;Read one track from pattern
	BSR.B	pt_CheckMetronome
	ADDQ.L	#4,D1
	MOVEQ	#0,D2
	MOVE.B	n_cmd(A6),D2		;Get lower 4 bits of instrument
	AND.B	#$F0,D2
	LSR.B	#4,D2
	MOVE.B	(A6),D0			;Get higher 4 bits of instrument
	AND.B	#$F0,D0
	OR.B	D0,D2
	TST.B	D2
	BEQ.B	pt_SetRegisters		;Instrument was zero
	MOVEQ	#0,D3
	LEA	pt_SampleStarts(PC),A1
	MOVE	D2,D4
	MOVE.B	D2,n_samplenum(A6)
	SUBQ.L	#1,D2
	LSL.L	#2,D2
	MULU	#30,D4
	MOVE.L	0(a1,D2.L),n_start(A6)
	MOVE.W	0(a3,D4.L),n_length(A6)
	MOVE.W	0(a3,D4.L),n_reallength(A6)
	MOVE.B	2(A3,D4.L),n_finetune(A6)
	MOVE.B	3(A3,D4.L),n_volume(A6)
	MOVE.W	4(A3,D4.L),D3 		;Get repeat
	TST.W	D3
	BEQ.B	pt_NoLoop
	MOVE.L	n_start(A6),D2		;Get start
	ASL.W	#1,D3
	ADD.L	D3,D2			;Add repeat
	MOVE.L	D2,n_loopstart(A6)
	MOVE.L	D2,n_wavestart(A6)
	MOVE.W	4(A3,D4.L),D0		;Get repeat
	ADD.W	6(A3,D4.L),D0		;Add replen
	MOVE.W	D0,n_length(A6)
	MOVE.W	6(A3,D4.L),n_replen(A6)	;Save replen
	BRA.B	pt_SetRegisters

pt_NoLoop
	MOVE.L	n_start(A6),D2
	ADD.L	D3,D2
	MOVE.L	D2,n_loopstart(A6)
	MOVE.L	D2,n_wavestart(A6)
	MOVE.W	6(A3,D4.L),n_replen(A6)	;Save replen
pt_SetRegisters
	MOVE.W	(A6),D0
	AND.W	#$0FFF,D0
	BEQ.W	pt_CheckMoreEffects	;If no note ->
	MOVE.W	2(A6),D0
	AND.W	#$0FF0,D0
	CMP.W	#$0E50,D0 		;finetune?
	BEQ.B	pt_DoSetFineTune
	MOVE.B	2(A6),D0
	AND.B	#$0F,D0
	CMP.B	#3,D0			;TonePortamento?
	BEQ.B	pt_ChkTonePorta
	CMP.B	#5,D0			;TonePortamento + VolSlide?
	BEQ.B	pt_ChkTonePorta
	CMP.B	#9,D0			;Sample Offset?
	BNE.B	pt_SetPeriod
	BSR.W	pt_CheckMoreEffects
	BRA.B	pt_SetPeriod

pt_DoSetFineTune
	BSR.W	pt_SetFineTune
	BRA.B	pt_SetPeriod

pt_ChkTonePorta
	BSR.W	pt_SetTonePorta
	BRA.W	pt_CheckMoreEffects

pt_SetPeriod
	MOVEM.L	D0-D1/A0-A1,-(SP)
	MOVE.W	(A6),D1
	AND.W	#$0FFF,D1
	LEA	pt_PeriodTable(PC),A1
	MOVEQ	#0,D0
	MOVEQ	#$24,D7
pt_ftuloop
	CMP.W	0(a1,D0.W),D1
	BHS.B	pt_ftufound
	ADDQ.L	#2,D0
	DBRA	D7,pt_ftuloop
pt_ftufound
	MOVEQ	#0,D1
	MOVE.B	n_finetune(A6),D1
	MULU	#37*2,D1
	ADD.L	D1,A1
	MOVE.W	0(a1,D0.W),n_period(A6)
	MOVEM.L	(SP)+,D0-D1/A0-A1

	MOVE.W	2(A6),D0
	AND.W	#$0FF0,D0
	CMP.W	#$0ED0,D0
	BEQ.W	pt_CheckMoreEffects

	MOVE.W	n_dmabit(A6),$DFF096
	BTST	#2,n_wavecontrol(A6)
	BNE.B	pt_vibnoc
	CLR.B	n_vibratopos(A6)
pt_vibnoc
	BTST	#6,n_wavecontrol(A6)
	BNE.B	pt_trenoc
	CLR.B	n_tremolopos(A6)
pt_trenoc
	MOVE.W	n_length(A6),4(A5)	;Set length
	MOVE.L	n_start(A6),(A5)	;Set start
	BNE.B	pt_sdmaskp
	CLR.L	n_loopstart(A6)
	MOVEQ	#1,D0
	MOVE.W	D0,4(A5)
	MOVE.W	D0,n_replen(A6)
pt_sdmaskp
	MOVE.W	n_period(A6),D0
	MOVE.W	D0,6(A5)		;Set period
	ST	n_trigger(A6)
	MOVE.W	n_dmabit(A6),D0
	OR.W	D0,pt_DMACONtemp
	BRA.W	pt_CheckMoreEffects
 
pt_SetDMA
	move.b	pt_timeout,$bfe701	;TimerB HI
	move.b	pt_timeout+1,$bfe601	;TimerB LO
	move.b	#%000011001,$bfef01	;set commandbits: OneShot & CLK & Start
pt_timerwait1
	btst	#0,$bfef01		;timeout on timerB? (ICR TimerB)
	bne.s	pt_timerwait1		;nope...
	MOVE.W	pt_DMACONtemp,D0
	AND.W	pt_ActiveChannels,D0	;mask out inactive channels
	OR.W	#$8000,D0
	MOVE.W	D0,$DFF096
	move.b	pt_timeout,$bfe701	;TimerB HI
	move.b	pt_timeout+1,$bfe601	;TimerB LO
	move.b	#%000011001,$bfef01	;set commandbits: OneShot & CLK & Start
pt_timerwait2
	btst	#0,$bfef01		;timeout on timerB? (ICR TimerB)
	bne.s	pt_timerwait2		;nope...
	LEA	$DFF000,A5
	LEA	pt_audchan4temp(PC),A6
	MOVE.L	n_loopstart(A6),$D0(A5)
	MOVE.W	n_replen(A6),$D4(A5)
	LEA	pt_audchan3temp(PC),A6
	MOVE.L	n_loopstart(A6),$C0(A5)
	MOVE.W	n_replen(A6),$C4(A5)
	LEA	pt_audchan2temp(PC),A6
	MOVE.L	n_loopstart(A6),$B0(A5)
	MOVE.W	n_replen(A6),$B4(A5)
	LEA	pt_audchan1temp(PC),A6
	MOVE.L	n_loopstart(A6),$A0(A5)
	MOVE.W	n_replen(A6),$A4(A5)

pt_dskip
	ADD.L	#16,pt_PatternPosition
	MOVE.B	pt_PattDelayTime,D0
	BEQ.B	pt_dskpc
	MOVE.B	D0,pt_PattDelayTime2
	CLR.B	pt_PattDelayTime
pt_dskpc
	TST.B	pt_PattDelayTime2
	BEQ.B	pt_dskpa
	SUBQ.B	#1,pt_PattDelayTime2
	BEQ.B	pt_dskpa
	SUB.L	#16,pt_PatternPosition
pt_dskpa
	TST.B	pt_PBreakFlag
	BEQ.B	pt_nnpysk
	SF	pt_PBreakFlag
	MOVEQ	#0,D0
	MOVE.B	pt_PBreakPosition(PC),D0
	LSL.W	#4,D0
	MOVE.L	D0,pt_PatternPosition
	CLR.B	pt_PBreakPosition
pt_nnpysk
	CMP.L	#1024,pt_PatternPosition
	BNE.B	pt_NoNewPositionYet
pt_NextPosition	
	MOVEQ	#0,D0
	MOVE.B	pt_PBreakPosition(PC),D0
	LSL.W	#4,D0
	MOVE.L	D0,pt_PatternPosition
	CLR.B	pt_PBreakPosition
	CLR.B	pt_PosJumpAssert
	ADDQ.L	#1,pt_SongPosition
	AND.L	#$7F,pt_SongPosition
	MOVE.L	pt_SongPosition(PC),D1
	MOVE.L	pt_SongDataPtr(PC),A0
	CMP.B	sd_numofpatt(A0),D1
	BLO.B	pt_NoNewPositionYet
	CLR.L	pt_SongPosition
pt_NoNewPositionYet
	TST.B	pt_PosJumpAssert
	BNE.B	pt_NextPosition
	MOVEM.L	(SP)+,D0-D7/A0-A6
	RTS

pt_CheckEffects
	BSR.B	pt_chkefx2
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	MOVE.W	D0,8(A5)
	RTS

pt_chkefx2
	BSR.W	pt_UpdateFunk
	MOVE.W	n_cmd(A6),D0
	AND.W	#$0FFF,D0
	BEQ.B	pt_Return
	MOVE.B	n_cmd(A6),D0
	AND.B	#$0F,D0
	TST.B	D0
	BEQ.B	pt_Arpeggio
	CMP.B	#1,D0
	BEQ.W	pt_PortaUp
	CMP.B	#2,D0
	BEQ.W	pt_PortaDown
	CMP.B	#3,D0
	BEQ.W	pt_TonePortamento
	CMP.B	#4,D0
	BEQ.W	pt_Vibrato
	CMP.B	#5,D0
	BEQ.W	pt_TonePlusVolSlide
	CMP.B	#6,D0
	BEQ.W	pt_VibratoPlusVolSlide
	CMP.B	#$E,D0
	BEQ.W	pt_ECommands
pt_SetBack
	MOVE.W	n_period(A6),6(A5)
	CMP.B	#7,D0
	BEQ.W	pt_Tremolo
	CMP.B	#$A,D0
	BEQ.W	pt_VolumeSlide
	CMP.B	#8,D0
	BEQ.W	pt_CompSet
pt_Return
	RTS

pt_CompSet:
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	move.b	d0,MCBIT
	rts

pt_PerNop
	MOVE.W	n_period(A6),6(A5)
	RTS

pt_Arpeggio
	MOVEQ	#0,D0
	MOVE.L	pt_Counter(PC),D0
	DIVS	#3,D0
	SWAP	D0
	CMP.W	#1,D0
	BEQ.B	pt_Arpeggio1
	CMP.W	#2,D0
	BEQ.B	pt_Arpeggio2
pt_Arpeggio0
	MOVE.W	n_period(A6),D2
	BRA.B	pt_ArpeggioSet

pt_Arpeggio1
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	LSR.B	#4,D0
	BRA.B	pt_ArpeggioFind

pt_Arpeggio2
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#15,D0
pt_ArpeggioFind
	ASL.W	#1,D0
	MOVEQ	#0,D1
	MOVE.B	n_finetune(A6),D1
	MULU	#37*2,D1
	LEA	pt_PeriodTable(PC),A0
	ADD.L	D1,A0
	MOVEQ	#0,D1
	MOVE.W	n_period(A6),D1
	MOVEQ	#$24,D7
pt_arploop
	MOVE.W	0(a0,D0.W),D2
	CMP.W	(A0),D1
	BHS.B	pt_ArpeggioSet
	ADDQ.L	#2,A0
	DBRA	D7,pt_arploop
	RTS

pt_ArpeggioSet
	MOVE.W	D2,6(A5)
	RTS

pt_FinePortaUp
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVE.B	#$0F,pt_LowMask
pt_PortaUp
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	pt_LowMask,D0
	MOVE.B	#$FF,pt_LowMask
	SUB.W	D0,n_period(A6)
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	CMP.W	#$0071,D0
	BPL.B	pt_PortaUskip
	AND.W	#$F000,n_period(A6)
	OR.W	#$0071,n_period(A6)
pt_PortaUskip
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	MOVE.W	D0,6(A5)
	RTS

pt_FinePortaDown
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVE.B	#$0F,pt_LowMask
pt_PortaDown
	CLR.W	D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	pt_LowMask,D0
	MOVE.B	#$FF,pt_LowMask
	ADD.W	D0,n_period(A6)
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	CMP.W	#$0358,D0
	BMI.B	pt_Portadskip
	AND.W	#$F000,n_period(A6)
	OR.W	#$0358,n_period(A6)
pt_Portadskip
	MOVE.W	n_period(A6),D0
	AND.W	#$0FFF,D0
	MOVE.W	D0,6(A5)
	RTS

pt_SetTonePorta
	MOVE.L	A0,-(SP)
	MOVE.W	(A6),D2
	AND.W	#$0FFF,D2
	MOVEQ	#0,D0
	MOVE.B	n_finetune(A6),D0
	MULU	#37*2,D0
	LEA	pt_PeriodTable(PC),A0
	ADD.L	D0,A0
	MOVEQ	#0,D0
pt_StpLoop
	CMP.W	0(a0,D0.W),D2
	BHS.B	pt_StpFound
	ADDQ.W	#2,D0
	CMP.W	#37*2,D0
	BLO.B	pt_StpLoop
	MOVEQ	#35*2,D0
pt_StpFound
	MOVE.B	n_finetune(A6),D2
	AND.B	#8,D2
	BEQ.B	pt_StpGoss
	TST.W	D0
	BEQ.B	pt_StpGoss
	SUBQ.W	#2,D0
pt_StpGoss
	MOVE.W	0(a0,D0.W),D2
	MOVE.L	(SP)+,A0
	MOVE.W	D2,n_wantedperiod(A6)
	MOVE.W	n_period(A6),D0
	CLR.B	n_toneportdirec(A6)
	CMP.W	D0,D2
	BEQ.B	pt_ClearTonePorta
	BGE.W	pt_Return
	MOVE.B	#1,n_toneportdirec(A6)
	RTS

pt_ClearTonePorta
	CLR.W	n_wantedperiod(A6)
	RTS	
 
pt_TonePortamento
	MOVE.B	n_cmdlo(A6),D0
	BEQ.B	pt_TonePortNoChange
	MOVE.B	D0,n_toneportspeed(A6)
	CLR.B	n_cmdlo(A6)
pt_TonePortNoChange
	TST.W	n_wantedperiod(A6)
	BEQ.W	pt_Return
	MOVEQ	#0,D0
	MOVE.B	n_toneportspeed(A6),D0
	TST.B	n_toneportdirec(A6)
	BNE.B	pt_TonePortaUp
pt_TonePortaDown
	ADD.W	D0,n_period(A6)
	MOVE.W	n_wantedperiod(A6),D0
	CMP.W	n_period(A6),D0
	BGT.B	pt_TonePortaSetPer
	MOVE.W	n_wantedperiod(A6),n_period(A6)
	CLR.W	n_wantedperiod(A6)
	BRA.B	pt_TonePortaSetPer

pt_TonePortaUp
	SUB.W	D0,n_period(A6)
	MOVE.W	n_wantedperiod(A6),D0
	CMP.W	n_period(A6),D0
	BLT.B	pt_TonePortaSetPer
	MOVE.W	n_wantedperiod(A6),n_period(A6)
	CLR.W	n_wantedperiod(A6)

pt_TonePortaSetPer
	MOVE.W	n_period(A6),D2
	MOVE.B	n_glissfunk(A6),D0
	AND.B	#$0F,D0
	BEQ.B	pt_GlissSkip
	MOVEQ	#0,D0
	MOVE.B	n_finetune(A6),D0
	MULU	#37*2,D0
	LEA	pt_PeriodTable(PC),A0
	ADD.L	D0,A0
	MOVEQ	#0,D0
pt_GlissLoop
	CMP.W	0(a0,D0.W),D2
	BHS.B	pt_GlissFound
	ADDQ.W	#2,D0
	CMP.W	#37*2,D0
	BLO.B	pt_GlissLoop
	MOVEQ	#35*2,D0
pt_GlissFound
	MOVE.W	0(a0,D0.W),D2
pt_GlissSkip
	MOVE.W	D2,6(A5) 		;Set period
	RTS

pt_Vibrato
	MOVE.B	n_cmdlo(A6),D0
	BEQ.B	pt_Vibrato2
	MOVE.B	n_vibratocmd(A6),D2
	AND.B	#$0F,D0
	BEQ.B	pt_vibskip
	AND.B	#$F0,D2
	OR.B	D0,D2
pt_vibskip
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	BEQ.B	pt_vibskip2
	AND.B	#$0F,D2
	OR.B	D0,D2
pt_vibskip2
	MOVE.B	D2,n_vibratocmd(A6)
pt_Vibrato2
	MOVE.L	A4,-(SP)
	MOVE.B	n_vibratopos(A6),D0
	LEA	pt_VibratoTable(PC),A4
	LSR.W	#2,D0
	AND.W	#$001F,D0
	MOVEQ	#0,D2
	MOVE.B	n_wavecontrol(A6),D2
	AND.B	#$03,D2
	BEQ.B	pt_vib_sine
	LSL.B	#3,D0
	CMP.B	#1,D2
	BEQ.B	pt_vib_rampdown
	MOVE.B	#255,D2
	BRA.B	pt_vib_set
pt_vib_rampdown
	TST.B	n_vibratopos(A6)
	BPL.B	pt_vib_rampdown2
	MOVE.B	#255,D2
	SUB.B	D0,D2
	BRA.B	pt_vib_set
pt_vib_rampdown2
	MOVE.B	D0,D2
	BRA.B	pt_vib_set
pt_vib_sine
	MOVE.B	0(A4,D0.W),D2
pt_vib_set
	MOVE.B	n_vibratocmd(A6),D0
	AND.W	#15,D0
	MULU	D0,D2
	LSR.W	#7,D2
	MOVE.W	n_period(A6),D0
	TST.B	n_vibratopos(A6)
	BMI.B	pt_VibratoNeg
	ADD.W	D2,D0
	BRA.B	pt_Vibrato3
pt_VibratoNeg
	SUB.W	D2,D0
pt_Vibrato3
	MOVE.W	D0,6(A5)
	MOVE.B	n_vibratocmd(A6),D0
	LSR.W	#2,D0
	AND.W	#$003C,D0
	ADD.B	D0,n_vibratopos(A6)
	MOVE.L	(SP)+,A4
	RTS

pt_TonePlusVolSlide
	BSR.W	pt_TonePortNoChange
	BRA.W	pt_VolumeSlide

pt_VibratoPlusVolSlide
	BSR.B	pt_Vibrato2
	BRA.W	pt_VolumeSlide

pt_Tremolo
	MOVE.L	A4,-(SP)
	MOVE.B	n_cmdlo(A6),D0
	BEQ.B	pt_Tremolo2
	MOVE.B	n_tremolocmd(A6),D2
	AND.B	#$0F,D0
	BEQ.B	pt_treskip
	AND.B	#$F0,D2
	OR.B	D0,D2
pt_treskip
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	BEQ.B	pt_treskip2
	AND.B	#$0F,D2
	OR.B	D0,D2
pt_treskip2
	MOVE.B	D2,n_tremolocmd(A6)
pt_Tremolo2
	MOVE.B	n_tremolopos(A6),D0
	LEA	pt_VibratoTable(PC),A4
	LSR.W	#2,D0
	AND.W	#$001F,D0
	MOVEQ	#0,D2
	MOVE.B	n_wavecontrol(A6),D2
	LSR.B	#4,D2
	AND.B	#$03,D2
	BEQ.B	pt_tre_sine
	LSL.B	#3,D0
	CMP.B	#1,D2
	BEQ.B	pt_tre_rampdown
	MOVE.B	#255,D2
	BRA.B	pt_tre_set
pt_tre_rampdown
	TST.B	n_vibratopos(A6)
	BPL.B	pt_tre_rampdown2
	MOVE.B	#255,D2
	SUB.B	D0,D2
	BRA.B	pt_tre_set
pt_tre_rampdown2
	MOVE.B	D0,D2
	BRA.B	pt_tre_set
pt_tre_sine
	MOVE.B	0(A4,D0.W),D2
pt_tre_set
	MOVE.B	n_tremolocmd(A6),D0
	AND.W	#15,D0
	MULU	D0,D2
	LSR.W	#6,D2
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0
	TST.B	n_tremolopos(A6)
	BMI.B	pt_TremoloNeg
	ADD.W	D2,D0
	BRA.B	pt_Tremolo3
pt_TremoloNeg
	SUB.W	D2,D0
pt_Tremolo3
	BPL.B	pt_TremoloSkip
	CLR.W	D0
pt_TremoloSkip
	CMP.W	#$40,D0
	BLS.B	pt_TremoloOk
	MOVE.W	#$40,D0
pt_TremoloOk
	MOVE.W	D0,8(A5)
	MOVE.B	n_tremolocmd(A6),D0
	LSR.W	#2,D0
	AND.W	#$003C,D0
	ADD.B	D0,n_tremolopos(A6)
	MOVE.L	(SP)+,A4
	ADDQ.L	#4,SP
	RTS

pt_SampleOffset
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	BEQ.B	pt_sononew
	MOVE.B	D0,n_sampleoffset(A6)
pt_sononew
	MOVE.B	n_sampleoffset(A6),D0
	LSL.W	#7,D0
	CMP.W	n_length(A6),D0
	BGE.B	pt_sofskip
	SUB.W	D0,n_length(A6)
	LSL.W	#1,D0
	ADD.L	D0,n_start(A6)
	RTS
pt_sofskip
	MOVE.W	#1,n_length(A6)
	RTS

pt_VolumeSlide
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	LSR.B	#4,D0
	TST.B	D0
	BEQ.B	pt_VolSlideDown
pt_VolSlideUp
	ADD.B	D0,n_volume(A6)
	CMP.B	#$40,n_volume(A6)
	BMI.B	pt_vsuskip
	MOVE.B	#$40,n_volume(A6)
pt_vsuskip
	MOVE.B	n_volume(A6),D0
	RTS

pt_VolSlideDown
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
pt_VolSlideDown2
	SUB.B	D0,n_volume(A6)
	BPL.B	pt_vsdskip
	CLR.B	n_volume(A6)
pt_vsdskip
	MOVE.B	n_volume(A6),D0
	RTS

pt_PositionJump
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	SUBQ.B	#1,D0
	MOVE.L	D0,pt_SongPosition
pt_pj2	CLR.B	pt_PBreakPosition
	ST 	pt_PosJumpAssert
	RTS

pt_VolumeChange
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	CMP.B	#$40,D0
	BLS.B	pt_VolumeOk
	MOVEQ	#$40,D0
pt_VolumeOk
	MOVE.B	D0,n_volume(A6)
	RTS

pt_PatternBreak
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	MOVE.L	D0,D2
	LSR.B	#4,D0
	MULU	#10,D0
	AND.B	#$0F,D2
	ADD.B	D2,D0
	CMP.B	#63,D0
	BHI.B	pt_pj2
	MOVE.B	D0,pt_PBreakPosition
	ST	pt_PosJumpAssert
	RTS

pt_SetSpeed
	MOVE.B	3(A6),D0
	AND.W	#$FF,D0
	BEQ.B	pt_SpeedNull
;	CMP.W	#32,D0			;change this for lev6/CIA users
;	BLO.B	normspd			;it updates the countervalues (Tempo)
;	MOVE.W	D0,RealTempo		;for the BPM timer
;	MOVEM.L	D0-D7/A0-A6,-(SP)
;	ST	UpdateTempo
;	JSR	SetTempo
;	MOVEM.L	(SP)+,D0-D7/A0-A6
;	RTS
pt_normspd
	CLR.L	pt_Counter
	MOVE.W	D0,pt_CurrSpeed+2
	RTS
pt_SpeedNull
	RTS

pt_CheckMoreEffects
	MOVE.B	2(A6),D0
	AND.B	#$0F,D0
	CMP.B	#$9,D0
	BEQ.W	pt_SampleOffset
	CMP.B	#$B,D0
	BEQ.W	pt_PositionJump
	CMP.B	#$D,D0
	BEQ.B	pt_PatternBreak
	CMP.B	#$E,D0
	BEQ.B	pt_ECommands
	CMP.B	#$F,D0
	BEQ.B	pt_SetSpeed
	CMP.B	#$C,D0
	BEQ.W	pt_VolumeChange
	BRA.W	pt_PerNop

pt_ECommands
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F0,D0
	LSR.B	#4,D0
	BEQ.B	pt_FilterOnOff
	CMP.B	#1,D0
	BEQ.W	pt_FinePortaUp
	CMP.B	#2,D0
	BEQ.W	pt_FinePortaDown
	CMP.B	#3,D0
	BEQ.B	pt_SetGlissControl
	CMP.B	#4,D0
	BEQ.W	pt_SetVibratoControl
	CMP.B	#5,D0
	BEQ.W	pt_SetFineTune
	CMP.B	#6,D0
	BEQ.W	pt_JumpLoop
	CMP.B	#7,D0
	BEQ.W	pt_SetTremoloControl
	CMP.B	#8,D0
	BEQ.W	pt_KarplusStrong
	CMP.B	#$E,D0
	BEQ.W	pt_PatternDelay
	CMP.B	#9,D0
	BEQ.W	pt_RetrigNote
	CMP.B	#$A,D0
	BEQ.W	pt_VolumeFineUp
	CMP.B	#$B,D0
	BEQ.W	pt_VolumeFineDown
	CMP.B	#$C,D0
	BEQ.W	pt_NoteCut
	CMP.B	#$D,D0
	BEQ.W	pt_NoteDelay
	CMP.B	#$F,D0
	BEQ.W	pt_FunkIt
	RTS

pt_FilterOnOff
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#1,D0
	ASL.B	#1,D0
	AND.B	#$FD,$BFE001
	OR.B	D0,$BFE001
	RTS	

pt_SetGlissControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	AND.B	#$F0,n_glissfunk(A6)
	OR.B	D0,n_glissfunk(A6)
	RTS

pt_SetVibratoControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	AND.B	#$F0,n_wavecontrol(A6)
	OR.B	D0,n_wavecontrol(A6)
	RTS

pt_SetFineTune
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	MOVE.B	D0,n_finetune(A6)
	RTS

pt_JumpLoop
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BEQ.B	pt_SetLoop
	TST.B	n_loopcount(A6)
	BEQ.B	pt_jumpcnt
	SUB.B	#1,n_loopcount(A6)
	BEQ.W	pt_Return
pt_jmploop
	MOVE.B	n_pattpos(A6),pt_PBreakPosition
	ST	pt_PBreakFlag
	RTS

pt_jumpcnt
	MOVE.B	D0,n_loopcount(A6)
	BRA.B	pt_jmploop

pt_SetLoop
	MOVE.L	pt_PatternPosition,D0
	LSR.L	#4,D0
	AND.B	#63,D0
	MOVE.B	D0,n_pattpos(A6)
	RTS

pt_SetTremoloControl
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	LSL.B	#4,D0
	AND.B	#$0F,n_wavecontrol(A6)
	OR.B	D0,n_wavecontrol(A6)
	RTS

pt_KarplusStrong
	MOVEM.L	D1-D2/A0-A1,-(SP)
	MOVE.L	n_loopstart(A6),A0
	MOVE.L	A0,A1
	MOVE.W	n_replen(A6),D0
	ADD.W	D0,D0
	SUBQ.W	#2,D0
pt_karplop
	MOVE.B	(A0),D1
	EXT.W	D1
	MOVE.B	1(A0),D2
	EXT.W	D2
	ADD.W	D1,D2
	ASR.W	#1,D2
	MOVE.B	D2,(A0)+
	DBRA	D0,pt_karplop
	MOVE.B	(A0),D1
	EXT.W	D1
	MOVE.B	(A1),D2
	EXT.W	D2
	ADD.W	D1,D2
	ASR.W	#1,D2
	MOVE.B	D2,(A0)
	MOVEM.L	(SP)+,D1-D2/A0-A1
	RTS

pt_RetrigNote
	MOVE.L	D1,-(SP)
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BEQ.W	pt_rtnend
	MOVE.L	pt_Counter,D1
	BNE.B	pt_rtnskp
	MOVE.W	n_note(A6),D1
	AND.W	#$0FFF,D1
	BNE.W	pt_rtnend
	MOVE.L	pt_Counter,D1
pt_rtnskp
	DIVU	D0,D1
	SWAP	D1
	TST.W	D1
	BNE.W	pt_rtnend
pt_DoRetrg
	MOVE.W	n_dmabit(A6),$DFF096	;Audio DMA off
	MOVE.L	n_start(A6),(A5)	;Set sampledata pointer
	MOVE.W	n_length(A6),4(A5)	;Set length
	MOVE.W	n_period(A6),6(A5)
	MOVEQ	#0,D0
	MOVE.B	n_volume(A6),D0

	move.b	pt_timeout,$bfe701	;TimerB HI
	move.b	pt_timeout+1,$bfe601	;TimerB LO
	move.b	#%000011001,$bfef01	;set commandbits: OneShot & CLK & Start
pt_timerwait3
	btst	#0,$bfef01		;timeout on timerB? (ICR TimerB)
	bne.s	pt_timerwait3		;nope...

	MOVE.W	n_dmabit(A6),D0
	BSET	#15,D0
	MOVE.W	D0,$DFF096

	move.b	pt_timeout,$bfe701	;TimerB HI
	move.b	pt_timeout+1,$bfe601	;TimerB LO
	move.b	#%000011001,$bfef01	;set commandbits: OneShot & CLK & Start
pt_timerwait4
	btst	#0,$bfef01		;timeout on timerB? (ICR TimerB)
	bne.s	pt_timerwait4		;nope...

	MOVE.L	n_loopstart(A6),(A5)
	MOVE.L	n_replen(A6),4(A5)
pt_rtnend
	MOVE.L	(SP)+,D1
	RTS

pt_VolumeFineUp
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$F,D0
	BRA.W	pt_VolSlideUp

pt_VolumeFineDown
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	BRA.W	pt_VolSlideDown2

pt_NoteCut
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	CMP.L	pt_Counter,D0
	BNE.W	pt_Return
	CLR.B	n_volume(A6)
	RTS

pt_NoteDelay
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	CMP.L	pt_Counter,D0
	BNE.W	pt_Return
	MOVE.W	(A6),D0
	AND.W	#$0FFF,D0
	BEQ.W	pt_Return
	MOVE.L	D1,-(SP)
	BRA.W	pt_DoRetrg

pt_PatternDelay
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVEQ	#0,D0
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	TST.B	pt_PattDelayTime2
	BNE.W	pt_Return
	ADDQ.B	#1,D0
	MOVE.B	D0,pt_PattDelayTime
	RTS

pt_FunkIt
	TST.L	pt_Counter
	BNE.W	pt_Return
	MOVE.B	n_cmdlo(A6),D0
	AND.B	#$0F,D0
	LSL.B	#4,D0
	AND.B	#$0F,n_glissfunk(A6)
	OR.B	D0,n_glissfunk(A6)
	TST.B	D0
	BEQ.W	pt_Return
pt_UpdateFunk
	MOVEM.L	A0/D1,-(SP)
	MOVEQ	#0,D0
	MOVE.B	n_glissfunk(A6),D0
	LSR.B	#4,D0
	BEQ.B	pt_funkend
	LEA	pt_FunkTable(PC),A0
	MOVE.B	0(a0,D0.W),D0
	ADD.B	D0,n_funkoffset(A6)
	BTST	#7,n_funkoffset(A6)
	BEQ.B	pt_funkend
	CLR.B	n_funkoffset(A6)
	MOVE.L	n_loopstart(A6),D0
	MOVEQ	#0,D1
	MOVE.W	n_replen(A6),D1
	ADD.L	D1,D0
	ADD.L	D1,D0
	MOVE.L	n_wavestart(A6),A0
	ADDQ.L	#1,A0
	CMP.L	D0,A0
	BLO.B	pt_funkok
	MOVE.L	n_loopstart(A6),A0
pt_funkok
	MOVE.L	A0,n_wavestart(A6)
	MOVEQ	#-1,D0
	SUB.B	(A0),D0
	MOVE.B	D0,(A0)
pt_funkend
	MOVEM.L	(SP)+,A0/D1
	RTS

pt_FunkTable
	dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128

pt_VibratoTable	
	dc.b 0,24,49,74,97,120,141,161
	dc.b 180,197,212,224,235,244,250,253
	dc.b 255,253,250,244,235,224,212,197
	dc.b 180,161,141,120,97,74,49,24

pt_PeriodTable
; -> Tuning 0
	dc.w	856,808,762,720,678,640,604,570,538,508,480,453
	dc.w	428,404,381,360,339,320,302,285,269,254,240,226
	dc.w	214,202,190,180,170,160,151,143,135,127,120,113,0
; -> Tuning 1
	dc.w	850,802,757,715,674,637,601,567,535,505,477,450
	dc.w	425,401,379,357,337,318,300,284,268,253,239,225
	dc.w	213,201,189,179,169,159,150,142,134,126,119,113,0
; -> Tuning 2
	dc.w	844,796,752,709,670,632,597,563,532,502,474,447
	dc.w	422,398,376,355,335,316,298,282,266,251,237,224
	dc.w	211,199,188,177,167,158,149,141,133,125,118,112,0
; -> Tuning 3
	dc.w	838,791,746,704,665,628,592,559,528,498,470,444
	dc.w	419,395,373,352,332,314,296,280,264,249,235,222
	dc.w	209,198,187,176,166,157,148,140,132,125,118,111,0
; -> Tuning 4
	dc.w	832,785,741,699,660,623,588,555,524,495,467,441
	dc.w	416,392,370,350,330,312,294,278,262,247,233,220
	dc.w	208,196,185,175,165,156,147,139,131,124,117,110,0
; -> Tuning 5
	dc.w	826,779,736,694,655,619,584,551,520,491,463,437
	dc.w	413,390,368,347,328,309,292,276,260,245,232,219
	dc.w	206,195,184,174,164,155,146,138,130,123,116,109,0
; -> Tuning 6
	dc.w	820,774,730,689,651,614,580,547,516,487,460,434
	dc.w	410,387,365,345,325,307,290,274,258,244,230,217
	dc.w	205,193,183,172,163,154,145,137,129,122,115,109,0
; -> Tuning 7
	dc.w	814,768,725,684,646,610,575,543,513,484,457,431
	dc.w	407,384,363,342,323,305,288,272,256,242,228,216
	dc.w	204,192,181,171,161,152,144,136,128,121,114,108,0
; -> Tuning -8
	dc.w	907,856,808,762,720,678,640,604,570,538,508,480
	dc.w	453,428,404,381,360,339,320,302,285,269,254,240
	dc.w	226,214,202,190,180,170,160,151,143,135,127,120,0
; -> Tuning -7
	dc.w	900,850,802,757,715,675,636,601,567,535,505,477
	dc.w	450,425,401,379,357,337,318,300,284,268,253,238
	dc.w	225,212,200,189,179,169,159,150,142,134,126,119,0
; -> Tuning -6
	dc.w	894,844,796,752,709,670,632,597,563,532,502,474
	dc.w	447,422,398,376,355,335,316,298,282,266,251,237
	dc.w	223,211,199,188,177,167,158,149,141,133,125,118,0
; -> Tuning -5
	dc.w	887,838,791,746,704,665,628,592,559,528,498,470
	dc.w	444,419,395,373,352,332,314,296,280,264,249,235
	dc.w	222,209,198,187,176,166,157,148,140,132,125,118,0
; -> Tuning -4
	dc.w	881,832,785,741,699,660,623,588,555,524,494,467
	dc.w	441,416,392,370,350,330,312,294,278,262,247,233
	dc.w	220,208,196,185,175,165,156,147,139,131,123,117,0
; -> Tuning -3
	dc.w	875,826,779,736,694,655,619,584,551,520,491,463
	dc.w	437,413,390,368,347,328,309,292,276,260,245,232
	dc.w	219,206,195,184,174,164,155,146,138,130,123,116,0
; -> Tuning -2
	dc.w	868,820,774,730,689,651,614,580,547,516,487,460
	dc.w	434,410,387,365,345,325,307,290,274,258,244,230
	dc.w	217,205,193,183,172,163,154,145,137,129,122,115,0
; -> Tuning -1
	dc.w	862,814,768,725,684,646,610,575,543,513,484,457
	dc.w	431,407,384,363,342,323,305,288,272,256,242,228
	dc.w	216,203,192,181,171,161,152,144,136,128,121,114,0

pt_audchan1temp	dc.l	0,0,0,0,0,$00010000,0,0,0,0,0
pt_audchan2temp	dc.l	0,0,0,0,0,$00020000,0,0,0,0,0
pt_audchan3temp	dc.l	0,0,0,0,0,$00040000,0,0,0,0,0
pt_audchan4temp	dc.l	0,0,0,0,0,$00080000,0,0,0,0,0

pt_SampleStarts	dcb.l	31,0

pt_timeout	dc.w	330		;CIA-B timeout-value
pt_Counter	dc.l	0
pt_CurrSpeed	dc.l	6
pt_PattPos	dc.w	0
pt_DMACONtemp	dc.w	0
pt_ActiveChannels
		dc.w	%00001111
pt_PatternPtr	dc.l	0
pt_PatternPosition
		dc.l	0
pt_SongPosition	dc.l	0	
pt_SongDataPtr	dc.l	0
pt_MetroSpeed	dc.b	0
pt_MetroChannel	dc.b	0
pt_Speed	dc.b	6
pt_SongPos	dc.b	0
pt_PBreakPosition
		dc.b	0
pt_PosJumpAssert
		dc.b	0
pt_PBreakFlag	dc.b	0
pt_LowMask	dc.b	0
pt_PattDelayTime
		dc.b	0
pt_PattDelayTime2
		dc.b	0
		even
pt_data:	incbin	"df0:mods/mod.hand4"

MCBIT:	dc.b	0
	even


WAIT_BLITTER:
waitblit:	btst	#$e,$dff002
waitblit2:	btst	#$e,$dff002
		bne.s	waitblit2
		rts
WAIT255:
	cmp.b #$fe,$dff006
	bne.s WAIT255
WAIT255a:
	cmp.b #$FF,$dff006
	bne.s WAIT255a
	rts

BLIT1:

	jsr	WAIT_BLITTER
	move.l	a0,$dff050
	move.l	#S1,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S3,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S4,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S5,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S6,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
 	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S7,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	
	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S8,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

		sub.l	#14,a0

	jsr	WAIT_BLITTER
	add.l	#64*66,a0
	move.l	a0,$dff050
	move.l	#S1+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S2+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S3+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S4+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S5+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S6+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S7+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058

	jsr	WAIT_BLITTER
	add.l	#2,a0
	move.l	a0,$dff050
	move.l	#S8+2,$dff054
	move.w	#$ffff,$dff044
	move.w	#$ffff,$dff046
	move.w	#$0000,$dff042
	move.w	#$09f0,$dff040
	move.w	#CREDITS_MODULO_S,$dff064
	move.w	#CREDITS_MODULO_P,$dff066
	move.w	#[ILE_KOPIUJ*64+1],$dff058
	rts

PRZERWANIE_INIT:
	move.l	$6c,STARY_WEKTOR
	move.l	#PRZERWANIE_LOOP,$6c
	move.w	#%1100000000100000,$dff09a	; intena
	rts

STARY_WEKTOR:
	dc.l	0
PRZERWANIE_LOOP:


	movem.l	d0-d7/a0-a6,-(a7)

	move.w	$dff01e,d0		; intreqr
	and.w	#%100000,d0
	beq.b	NIE_TO_PRZERWANIE
	move.w	#%0000000000100000,$dff09c	; intreq

	jsr	pt_PlayMusic

	movem.l	(a7)+,d0-d7/a0-a6
	rte
NIE_TO_PRZERWANIE:
	movem.l	(a7)+,d0-d7/a0-a6
	rte	

USTAW_SPRITES:
		move.l	#CopperList,a0

		move.l #SPRITTE1,d0	;	N
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE2,d0	;	N
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE3,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE4,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE5,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE6,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE7,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)
		add.l	#8,a0
		move.l #SPRITTE8,d0	;	T
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)

		rts

USTAW_VIRTUAL_SPRITES:
		move.l	#CopperList,a0

		move.l #VIRSPR,d0
		move.w d0,6(a0)
		swap d0
		move.w d0,2(a0)

		move.l #VIRSPR,d0
		move.w d0,14(a0)
		swap d0
		move.w d0,10(a0)

		move.l #VIRSPR,d0
		move.w d0,22(a0)
		swap d0
		move.w d0,18(a0)

		move.l #VIRSPR,d0
		move.w d0,30(a0)
		swap d0
		move.w d0,26(a0)

		move.l #VIRSPR,d0
		move.w d0,38(a0)
		swap d0
		move.w d0,34(a0)

		move.l #VIRSPR,d0
		move.w d0,46(a0)
		swap d0
		move.w d0,42(a0)

		move.l #VIRSPR,d0
		move.w d0,54(a0)
		swap d0
		move.w d0,50(a0)

		move.l #VIRSPR,d0
		move.w d0,62(a0)
		swap d0
		move.w d0,58(a0)

		rts

ZOOM:
	move.l	#IL_LINI,d7
	move.l	#0,d5
	move.l	#ZOOMER,a0
	move.l	START_POSITION,d0
	move.l	END_POSITION,d1
	move.w	#$0108,d2
	move.w	#$010a,d3
	move.l	#ILE_ZOOM,d4
	rol.l	#8,d4
	rol.l	#8,d4
	rol.l	#8,d4

ZOOM_LOOP:
	btst	#0,CCBIT
	bne	ZZZ
	cmp.l	#ODD,d5
	beq	ZOOM_END
	bgt	ZOOM_END
ZZZ:
	move.l	d0,(a0)+
	move.w	d2,(a0)+
	move.w	#OFFSET1,(a0)+
	move.w	d3,(a0)+
	move.w	#OFFSET1,(a0)+

	add.l	#ILE_ZOOM,d5
	sub.l	#ILE_ZOOM,d7
	cmp.l	#$0,d7
	beq	ZOOM_END1
	bmi	ZOOM_END1
	add.l	d4,d0
	btst	#0,CCBIT
	bne	ZZZ1
	cmp.l	#ODD,d5
	beq	ZOOM_END2
	bgt	ZOOM_END2
ZZZ1:
	move.l	d0,(a0)+
	move.w	d2,(a0)+
	move.w	#OFFSET,(a0)+
	move.w	d3,(a0)+
	move.w	#OFFSET,(a0)+

	add.l	#$01000000,d0
	add.l	#1,d5
	sub.l	#1,d7
	cmp.l	#$0,d7
	beq	ZOOM_END1
	bmi	ZOOM_END1
	bra	ZOOM_LOOP
ZOOM_END1:
	move.l	#$FFFFFFFE,(a0)
	rts
ZOOM_END:
	bset	#0,CCBIT
	move.l	#$FFDFFFFE,(a0)+
	bra	ZZZ
ZOOM_END2:
	bset	#0,CCBIT
	move.l	#$FFDFFFFE,(a0)+
	bra	ZZZ1
SCR:
	move.w	#ILE_SCROLUJ,d7
	move.w	#$00FF,SCROLL+2
SCROLL_PR:
	btst	#1,CCBIT
	bne	FADESCREDS

	btst	#2,CCBIT
	bne	FADESCREDS12

	cmp.b	#$01,MCBIT
	beq	EBPILS

	btst	#3,CCBIT
	bne	FADES

	cmp.w	#1500,d7
	beq	ZMSP1

	cmp.w	#1280,d7
	beq	ZPSPV

	cmp.w	#1260,d7
	beq	ZMSP2

	cmp.w	#940,d7
	beq	ZPSPV

	cmp.w	#920,d7
	beq	ZMSP3

	cmp.w	#600,d7
	beq	ZPSPV

	cmp.w	#580,d7
	beq	ZMSP4

	cmp.w	#260,d7
	beq	ZPSPV

	cmp.w	#220,d7
	beq	FADE_BEGIN

SCROLL_BACK:
	jsr	WAIT255
	move.w	SCROLL+2,d0
	cmp.w	#$0000,d0
	beq	ADDUJ
	sub.w	#$0011,SCROLL+2
	dbf	d7,SCROLL_PR
EBPILS:
	rts
FADES:
	move.l	#COLORMAP,a0
	add.l	#2,a0
	move.l	#31,d7
TO_BLACK:
	moveq	#0,d1
	move.w	(a0),d0
	cmp.w	#0,d0
	beq	NEXT_C
CH1:
	and.w	#$00F,d0
	cmp.w	#0,d0
	beq	CH2
	sub.w	#$001,d0
	add.w	d0,d1
CH2:
	move.w	(a0),d0
	and.w	#$0F0,d0
	cmp.w	#0,d0
	beq	CH3
	sub.w	#$010,d0
	add.w	d0,d1
CH3:
	move.w	(a0),d0
	and.w	#$F00,d0
	cmp.w	#0,d0
	beq	NEXT_C
	sub.w	#$100,d0
	add.w	d0,d1
NEXT_C:
	move.w	d1,(a0)+
	add.l	#2,a0
	dbf	d7,TO_BLACK
	bra	SCROLL_BACK

FADE_BEGIN:
	bset	#3,CCBIT
	bra	SCROLL_BACK

ZMSP1:
	jsr	USTAW_VIRTUAL_SPRITES

	bset	#2,CCBIT

	move.w	#$0000,CREDCOLOR+2
	move.w	#$0000,CREDCOLOR+6
	move.w	#$0000,CREDCOLOR+10
	move.w	#$0000,CREDCOLOR+14
	move.w	#$0000,CREDCOLOR+18
	move.w	#$0000,CREDCOLOR+22
	move.w	#$0000,CREDCOLOR+26
	move.w	#$0000,CREDCOLOR+30
	move.w	#$0000,CREDCOLOR+34
	move.w	#$0000,CREDCOLOR+38
	move.w	#$0000,CREDCOLOR+42
	move.w	#$0000,CREDCOLOR+46
	move.w	#$0000,CREDCOLOR+50
	move.w	#$0000,CREDCOLOR+54
	move.w	#$0000,CREDCOLOR+58
	move.w	#$0000,CREDCOLOR+62

	move.l	creditsa,a0
	jsr	BLIT1
	jsr	USTAW_SPRITES
	bra	SCROLL_BACK

ZMSP2:
	jsr	USTAW_VIRTUAL_SPRITES

	bset	#2,CCBIT

	move.w	#$0000,CREDCOLOR+2
	move.w	#$0000,CREDCOLOR+6
	move.w	#$0000,CREDCOLOR+10
	move.w	#$0000,CREDCOLOR+14
	move.w	#$0000,CREDCOLOR+18
	move.w	#$0000,CREDCOLOR+22
	move.w	#$0000,CREDCOLOR+26
	move.w	#$0000,CREDCOLOR+30
	move.w	#$0000,CREDCOLOR+34
	move.w	#$0000,CREDCOLOR+38
	move.w	#$0000,CREDCOLOR+42
	move.w	#$0000,CREDCOLOR+46
	move.w	#$0000,CREDCOLOR+50
	move.w	#$0000,CREDCOLOR+54
	move.w	#$0000,CREDCOLOR+58
	move.w	#$0000,CREDCOLOR+62

	move.w	#180*$100+100,spritte1
	move.w	#180*$100+65*$100,spritte1+2
	move.w	#180*$100+100+8,spritte2
	move.w	#180*$100+65*$100,spritte2+2
	move.w	#180*$100+100+8+8,spritte3
	move.w	#180*$100+65*$100,spritte3+2
	move.w	#180*$100+100+8+8+8,spritte4
	move.w	#180*$100+65*$100,spritte4+2
	move.w	#180*$100+100+8+8+8+8,spritte5
	move.w	#180*$100+65*$100,spritte5+2
	move.w	#180*$100+100+8+8+8+8+8,spritte6
	move.w	#180*$100+65*$100,spritte6+2
	move.w	#180*$100+100+8+8+8+8+8+8,spritte7
	move.w	#180*$100+65*$100,spritte7+2
	move.w	#180*$100+100+8+8+8+8+8+8+8,spritte8
	move.w	#180*$100+65*$100,spritte8+2
	move.l	creditsa,a0
	add.l	#16,a0
	jsr	BLIT1
	jsr	USTAW_SPRITES
	bra	SCROLL_BACK

ZMSP3:
	jsr	USTAW_VIRTUAL_SPRITES

	bset	#2,CCBIT

	move.w	#$0000,CREDCOLOR+2
	move.w	#$0000,CREDCOLOR+6
	move.w	#$0000,CREDCOLOR+10
	move.w	#$0000,CREDCOLOR+14
	move.w	#$0000,CREDCOLOR+18
	move.w	#$0000,CREDCOLOR+22
	move.w	#$0000,CREDCOLOR+26
	move.w	#$0000,CREDCOLOR+30
	move.w	#$0000,CREDCOLOR+34
	move.w	#$0000,CREDCOLOR+38
	move.w	#$0000,CREDCOLOR+42
	move.w	#$0000,CREDCOLOR+46
	move.w	#$0000,CREDCOLOR+50
	move.w	#$0000,CREDCOLOR+54
	move.w	#$0000,CREDCOLOR+58
	move.w	#$0000,CREDCOLOR+62

	move.w	#80*$100+70,spritte1
	move.w	#80*$100+65*$100,spritte1+2
	move.w	#80*$100+70+8,spritte2
	move.w	#80*$100+65*$100,spritte2+2
	move.w	#80*$100+70+16,spritte3
	move.w	#80*$100+65*$100,spritte3+2
	move.w	#80*$100+70+24,spritte4
	move.w	#80*$100+65*$100,spritte4+2
	move.w	#80*$100+70+32,spritte5
	move.w	#80*$100+65*$100,spritte5+2
	move.w	#80*$100+70+40,spritte6
	move.w	#80*$100+65*$100,spritte6+2
	move.w	#80*$100+70+48,spritte7
	move.w	#80*$100+65*$100,spritte7+2
	move.w	#80*$100+70+56,spritte8
	move.w	#80*$100+65*$100,spritte8+2

	move.l	creditsa,a0
	add.l	#16+16,a0
	jsr	BLIT1
	jsr	USTAW_SPRITES
	bra	SCROLL_BACK
FADESCREDS:
	cmp.b	#0,WAITED
	bne	FADESCREDS_END
	move.b	#5,WAITED
	cmp.w	#$0ddd,CREDCOLOR+6
	beq	FADESCREDS1
	sub.w	#$0111,CREDCOLOR+6
	sub.w	#$0111,CREDCOLOR+22
	sub.w	#$0111,CREDCOLOR+38
	sub.w	#$0111,CREDCOLOR+54
FADESCREDS1:
	cmp.w	#$0999,CREDCOLOR+10
	beq	FADESCREDS2
	sub.w	#$0111,CREDCOLOR+10
	sub.w	#$0111,CREDCOLOR+26
	sub.w	#$0111,CREDCOLOR+42
	sub.w	#$0111,CREDCOLOR+58
FADESCREDS2:
	cmp.w	#$0555,CREDCOLOR+14
	beq	FADESCREDS3
	sub.w	#$0111,CREDCOLOR+14
	sub.w	#$0111,CREDCOLOR+30
	sub.w	#$0111,CREDCOLOR+46
	sub.w	#$0111,CREDCOLOR+62
	bra	FADESCREDS_END
FADESCREDS3:
	bclr	#1,CCBIT
FADESCREDS_END:
	sub.b	#1,WAITED
	bra	SCROLL_BACK

FADESCREDS12:
	cmp.b	#0,WAITED
	bne	FADESCREDS_END1
	move.b	#1,WAITED
	cmp.w	#$0FFF,CREDCOLOR+6
	beq	FADESCREDS11
	add.w	#$0111,CREDCOLOR+6
	add.w	#$0111,CREDCOLOR+22
	add.w	#$0111,CREDCOLOR+38
	add.w	#$0111,CREDCOLOR+54
	add.w	#$0111,CREDCOLOR+10
	add.w	#$0111,CREDCOLOR+26
	add.w	#$0111,CREDCOLOR+42
	add.w	#$0111,CREDCOLOR+58
	add.w	#$0111,CREDCOLOR+14
	add.w	#$0111,CREDCOLOR+30
	add.w	#$0111,CREDCOLOR+46
	add.w	#$0111,CREDCOLOR+62
	bra	FADESCREDS_END1
FADESCREDS11:
	bclr	#2,CCBIT
	bset	#1,CCBIT
	move.b	#1,WAITED
FADESCREDS_END1:
	sub.b	#1,WAITED
	bra	SCROLL_BACK

ZMSP4:
	jsr	USTAW_VIRTUAL_SPRITES

	bset	#2,CCBIT

	move.w	#$0000,CREDCOLOR+2
	move.w	#$0000,CREDCOLOR+6
	move.w	#$0000,CREDCOLOR+10
	move.w	#$0000,CREDCOLOR+14
	move.w	#$0000,CREDCOLOR+18
	move.w	#$0000,CREDCOLOR+22
	move.w	#$0000,CREDCOLOR+26
	move.w	#$0000,CREDCOLOR+30
	move.w	#$0000,CREDCOLOR+34
	move.w	#$0000,CREDCOLOR+38
	move.w	#$0000,CREDCOLOR+42
	move.w	#$0000,CREDCOLOR+46
	move.w	#$0000,CREDCOLOR+50
	move.w	#$0000,CREDCOLOR+54
	move.w	#$0000,CREDCOLOR+58
	move.w	#$0000,CREDCOLOR+62

	move.w	#180*$100+160,spritte1
	move.w	#180*$100+65*$100,spritte1+2
	move.w	#180*$100+160+8,spritte2
	move.w	#180*$100+65*$100,spritte2+2
	move.w	#180*$100+160+8+8,spritte3
	move.w	#180*$100+65*$100,spritte3+2
	move.w	#180*$100+160+8+8+8,spritte4
	move.w	#180*$100+65*$100,spritte4+2
	move.w	#180*$100+160+8+8+8+8,spritte5
	move.w	#180*$100+65*$100,spritte5+2
	move.w	#180*$100+160+8+8+8+8+8,spritte6
	move.w	#180*$100+65*$100,spritte6+2
	move.w	#180*$100+160+8+8+8+8+8+8,spritte7
	move.w	#180*$100+65*$100,spritte7+2
	move.w	#180*$100+160+8+8+8+8+8+8+8,spritte8
	move.w	#180*$100+65*$100,spritte8+2

	move.l	creditsa,a0
	add.l	#16+16+16,a0
	jsr	BLIT1
	jsr	USTAW_SPRITES
	bra	SCROLL_BACK

ZPSPV:
	jsr	USTAW_VIRTUAL_SPRITES
	bra	SCROLL_BACK
ADDUJ:
	move.w	#$00FF,SCROLL+2
	add.l	#2,PICTR1
	add.l	#2,PICTR2
	add.l	#2,PICTR3
	add.l	#2,PICTR4
	move.l PICTR1,d0
	move.w d0,BITPLAN1+2
	swap d0
	move.w d0,BITPLAN0+2
	move.l PICTR2,d0
	move.w d0,BITPLAN3+2
	swap d0
	move.w d0,BITPLAN2+2
	move.l PICTR3,d0
	move.w d0,BITPLAN5+2
	swap d0
	move.w d0,BITPLAN4+2
	move.l PICTR4,d0
	move.w d0,BITPLAN7+2
	swap d0
	move.w d0,BITPLAN6+2
	bra	SCROLL_PR

CHANGE_PALETTE:
	move.l	#COLORMAP,a0
	move.w	#15,d7
	move.l	#PALETTE,a1
CHPL:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL
	rts



MOUSE_WALL1:
	move.l	SHADE_TABLE,a6
	move.l	a6,PLANE
	jsr	CHANGE_PALETTE1

		move.l PICTR1K,d0
		move.w d0,BITPLAN1w+2
		swap d0
		move.w d0,BITPLAN0w+2
		move.l PICTR2K,d0
		move.w d0,BITPLAN3w+2
		swap d0
		move.w d0,BITPLAN2w+2
		move.l PICTR3K,d0
		move.w d0,BITPLAN5w+2
		swap d0
		move.w d0,BITPLAN4w+2
		move.l plane,d0
		move.w d0,BITPLAN7w+2
		swap d0
		move.w d0,BITPLAN6w+2
		move.l plane,d0
		move.w d0,BITPLAN9w+2
		swap d0
		move.w d0,BITPLAN8w+2

		lea	$dff000,a6
		move.l  #copperlistwall,$80(a6)
		clr.w   $88(a6)
		move.w	#200,GLEMBIA
		move.w	#4,ANGL
		move.w	#105,d7

	move.l	#SHADE_TABLE,a0
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN

MOUSE1:
	move.w	d7,ROTBUF
	jsr	ODDOD
	jsr	WAIT
	move.l	#WAL1I,COORDS_1
	move.l	#WAL1D,datalines
	move.w	ANGLEZ,BUFOR1
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	jsr	ROTATE
	jsr	WAIT_BLITTER
	jsr	DRAWLINES
	jsr	WAIT_BLITTER
	jsr	FILL
	jsr	CHBUFSb
	move.l	#WAL2I,COORDS_1
	move.l	#WAL2D,datalines
	move.w	BUFOR1,ANGLEZ
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	jsr	ROTATE
	jsr	WAIT_BLITTER
	jsr	DRAWLINES
	jsr	WAIT_BLITTER
	jsr	FILL
	jsr	CHBUFSb1
	move.w	ROTBUF,d7
	dbf	d7,mouse1
	jsr	MOUSE_HAND
	rts

MOUSE_HAND:
	cmp.b	#$07,MCBIT
	bne	MOUSE_HAND
	jsr	CHANGE_PALETTE5
	jsr	WAIT255
	jsr	WAIT255
	jsr	CHANGE_PALETTE2
		move.w	#160,GLEMBIA
		move.w	#4,ANGL
		move.w	#0,ANGX
		move.w	#0,ANGY
		move.w	#45,d7
MOUSE_HAND1:
		add.w	#2,glembia
		move.w	d7,ROTBUF
		jsr	WAIT
		jsr	WAIT_BLITTER
		jsr	CLEARSCREEN
		move.l	#H1,COORDS_1
		move.l	#H1D,datalines
		jsr	ROTATE
		jsr	WAIT_BLITTER
		jsr	DRAWLINES
		jsr	WAIT_BLITTER
		jsr	FILL
		jsr	CHBUFSb

	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	#H2,COORDS_1
	move.l	#H2D,datalines
	jsr	ROTATE
	jsr	WAIT_BLITTER
	jsr	DRAWLINES
	jsr	WAIT_BLITTER
	jsr	FILL
	jsr	CHBUFSb1
	move.w	ROTBUF,d7
	dbf	d7,MOUSE_HAND1
	move.w	#2,ANGL
	move.w	#8,ANGX
	move.w	#0,ANGY
	move.w	#0,CCBIT
	move.w	#320,d7
	move.w	#161,XPZ
	move.w	#128,YPZ

MOUSE_HAND2:
	move.w	d7,ROTBUF
	jsr	WAIT
	cmp.b	#$02,MCBIT
	beq	BLOB3
	btst	#1,CCBIT
	bne	BLOB1
	jsr	CHANGE_PALETTE4
	bra	BLOB2
BLOB1:
	jsr	CHANGE_PALETTE2
BLOB2:
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	#H1,COORDS_1
	move.l	#H1D,datalines
	jsr	ROTATE
	jsr	WAIT_BLITTER
	jsr	DRAWLINES
	jsr	WAIT_BLITTER
	jsr	FILL
	jsr	CHBUFSb
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	#H2,COORDS_1
	move.l	#H2D,datalines
	jsr	ROTATE
	jsr	WAIT_BLITTER
	jsr	DRAWLINES
	jsr	WAIT_BLITTER
	jsr	FILL
	jsr	CHBUFSb1
	move.w	ROTBUF,d7
	bra	MOUSE_HAND2
BLOB3:
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	CHANGE_PALETTE3
	jsr	WAIT
	move.b	#$02,d0
	jsr	WAITMC
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	CHANGE_PALETTE3
	jsr	WAIT
	move.b	#$02,d0
	jsr	WAITMC
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	CHANGE_PALETTE3
	jsr	WAIT
	move.b	#$02,d0
	jsr	WAITMC
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	CHANGE_PALETTE3
	jsr	WAIT
	move.b	#$02,d0
	jsr	WAITMC
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	CHANGE_PALETTE3
	jsr	WAIT
	move.b	#$02,d0
	jsr	WAITMC
TUNEL:
	move.l	#SHADE_TABLE,a0
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN
	move.l	(a0)+,PLANE
	jsr	WAIT_BLITTER
	jsr	CLEARSCREEN

		move.l PLANE,d0
		move.w d0,BITPLAN1w+2
		swap d0
		move.w d0,BITPLAN0w+2
		move.l PLANE,d0
		move.w d0,BITPLAN3w+2
		swap d0
		move.w d0,BITPLAN2w+2
		move.l PLANE,d0
		move.w d0,BITPLAN5w+2
		swap d0
		move.w d0,BITPLAN4w+2
		move.l PLANE,d0
		move.w d0,BITPLAN7w+2
		swap d0
		move.w d0,BITPLAN6w+2
		move.l PLANE,d0
		move.w d0,BITPLAN9w+2
		swap d0
		move.w d0,BITPLAN8w+2

	jsr	CHANGE_PALETTE6

	;po rot transform


	move.w	#220,GLEMBIA
	move.w	ANGLEZ,BUFOR2
	move.w	#0,ANGLEZ
	move.w	#0,ANGLEY
	move.w	#0,ANGLEX

	move.w	#0,ANGL
	move.w	#0,ANGY
	move.w	#0,ANGX

	move.w	#-6,ang1
	move.w	#-6,ang2
	move.w	#-6,ang3
	move.w	#-6,ang4
	move.w	#-6,ang5
	move.w	#-6,ang6
	move.w	#-6,ang7
	move.w	#-6,ang8

mouse1T:
	jsr	WAIT
	jsr	TUNEL_LOOP
	jsr	WAIT
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse1T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	WAIT
	jsr	CHANGE_PALETTE6
	jsr	WAIT
	jsr	WAIT
	move.w	#6,ang1
	move.w	#6,ang2
	move.w	#6,ang3
	move.w	#6,ang4
	move.w	#6,ang5
	move.w	#6,ang6
	move.w	#6,ang7
	move.w	#6,ang8

mouse2T:
	jsr	WAIT
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse2T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	WAIT
	jsr	CHANGE_PALETTE6
	jsr	WAIT
	jsr	WAIT

	move.w	#-6,ang1
	move.w	#-6,ang2
	move.w	#-6,ang3
	move.w	#-6,ang4
	move.w	#-6,ang5
	move.w	#-6,ang6
	move.w	#-6,ang7
	move.w	#-6,ang8

mouse4T:
	jsr	WAIT
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse4T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	WAIT
	jsr	CHANGE_PALETTE6
	jsr	WAIT
	jsr	WAIT

	move.w	#4,ang1
	move.w	#4,ang2
	move.w	#4,ang3
	move.w	#4,ang4
	move.w	#6,ang5
	move.w	#6,ang6
	move.w	#6,ang7
	move.w	#6,ang8

mouse5T:
	jsr	WAIT
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse5T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	WAIT
	jsr	CHANGE_PALETTE6
	jsr	WAIT
	jsr	WAIT

	move.w	#-4,ang1
	move.w	#-4,ang2
	move.w	#-4,ang3
	move.w	#-4,ang4
	move.w	#-4,ang5
	move.w	#-4,ang6
	move.w	#-4,ang7
	move.w	#-4,ang8

mouse6T:
	jsr	WAIT
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse6T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT
	jsr	WAIT
	jsr	CHANGE_PALETTE6
	jsr	WAIT
	jsr	WAIT

	move.w	#6,ang1
	move.w	#6,ang2
	move.w	#2,ang3
	move.w	#6,ang4
	move.w	#6,ang5
	move.w	#2,ang6
	move.w	#6,ang7
	move.w	#6,ang8

	move.w	#14,d7
mouse7T1:
	move.w	d7,ROTBUF
mouse7T:
	jsr	WAIT255
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse7T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT255
	jsr	WAIT255
	jsr	CHANGE_PALETTE6
	jsr	WAIT255
	jsr	WAIT255

	move.w	#-8,ang1
	move.w	#-8,ang2
	move.w	#-8,ang3
	move.w	#-8,ang4
	move.w	#-8,ang5
	move.w	#-8,ang6
	move.w	#-8,ang7
	move.w	#-8,ang8

mouse8T:
	jsr	WAIT255
	jsr	TUNEL_LOOP
	cmp.b	#$0A,MCBIT
	bne	mouse8T
	move.b	#00,MCBIT
	jsr	CHANGE_PALETTE5
	jsr	WAIT255
	jsr	WAIT255
	jsr	CHANGE_PALETTE6
	jsr	WAIT255
	jsr	WAIT255

	move.w	#8,ang1
	move.w	#8,ang2
	move.w	#8,ang3
	move.w	#8,ang4
	move.w	#8,ang5
	move.w	#8,ang6
	move.w	#8,ang7
	move.w	#8,ang8

	move.w	ROTBUF,d7
	dbf	d7,mouse7T1


	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP
	jsr	WAIT255
	jsr	TUNEL_LOOP

ENDT:

	jsr	CHANGE_PALETTE5
	jsr	WAIT255
	jsr	WAIT255
	jsr	WAIT255
	jsr	WAIT255
	jsr	CHANGE_PALETTE6
	jsr	WAIT255
	jsr	WAIT255

		move.l PLANE,d0
		move.w d0,BITPLAN1wl+2
		swap d0
		move.w d0,BITPLAN0wl+2

		lea	$dff000,a6
		move.l  #copper,$80(a6)
		clr.w   $88(a6)
END1:
	jsr	WAIT
	cmp.b	#$03,MCBIT
	bne	END1
	move.w	#$0000,COLORMAP12+2	
	move.w	#$0000,COLORMAP12+6	
END2:
	jsr	WAIT
	cmp.b	#$04,MCBIT
	bne	END2
	move.w	#$0000,BLIB2+2	
	move.w	#$0000,BLIB2+6	


END3:
	jsr	WAIT
	cmp.b	#$05,MCBIT
	bne	END3
	move.w	#$0000,BLIB1+2	
	move.w	#$0000,BLIB1+6	

END4:
	jsr	WAIT
	cmp.b	#$06,MCBIT
	bne	END4
	jsr	CHANGE_PALETTE5
	jsr	WAIT255
	jsr	WAIT255
	jsr	CHANGE_PALETTE6
	jsr	WAIT255
	jsr	WAIT255

	move.l	#PICTURE,a6
	move.l	a6,PLANE
	jsr	CHANGE_PALETTE7

		move.l #SCREEN1,d0
		move.w d0,BITPLAN17+2
		swap d0
		move.w d0,BITPLAN07+2

		move.l #endpart+40,d0
		move.w d0,BITPLAN1e+2
		swap d0
		move.w d0,BITPLAN0e+2
		move.l #endpart+40*31,d0
		move.w d0,BITPLAN3e+2
		swap d0
		move.w d0,BITPLAN2e+2
		move.l #endpart+40*31+40*30,d0
		move.w d0,BITPLAN5e+2
		swap d0
		move.w d0,BITPLAN4e+2
		move.l #endpart+40*31+40*30+40*30,d0
		move.w d0,BITPLAN7e+2
		swap d0
		move.w d0,BITPLAN6e+2

	lea	$dff000,a6
	move.l  #copperlist7,$80(a6)
	clr.w   $88(a6)


Mousem:
	Bsr	Start
	jsr	BLIT1a
	move.w	#19,d7
blee:
	move.w	d7,bjb
  	jsr	WAIT255
	jsr	BLITs
	move.w	bjb,d7
	dbf	d7,blee
	bra	Mousem

BLITs:
	jsr	WAIT_BLITTER
	move.l	#SCREEN1+40,$dff050
	move.l	#SCREEN1,$dff054
	move.l	#$FFFFFFFF,$dff044
	move.w	#$09f0,$dff040
	move.w	#$0000,$dff042
	move.w	#0000,$dff064
	move.w	#0000,$dff066
	move.w	#[255*64+20],$dff058

	rts




BLIT1a:
	jsr	WAIT_BLITTER
	move.l	#SCREEN,$dff050
	move.l	#SCREEN1+200*40,d1

	move.w	#300,d0
	sub.w	XL,d0
	divs	#2,d0
	And.w	#$fff0,d0
	Lsr.w	#3,d0
	Add.w	d0,d1
	Add.l	#0,d1	

	move.l	d1,$dff054
	move.l	#$FFFFFFF,$dff044
	move.w	#000,$dff046
	move.w	#300,d0
	sub.w	XL,d0
	divs	#2,d0
	And.w	#$000f,d0
	Lsl.w	#8,d0
	Lsl.w	#4,d0
	Or.w	#$09f0,d0
	move.w	d0,$dff040
	move.w	#0000,$dff042
	move.w	#0000,$dff064

	move.w	#0000,$dff066
	move.w	#[18*64+20],$dff058

	jsr	WAIT_BLITTER
	LEA	$DFF000,A6
	MOVE.L	#SCREEN,$54(A6)
	MOVE.l	#$0,$66(A6)
	MOVE.W	#%0000000100000000,$40(A6)
	MOVE.W	#0,$42(A6)
	MOVE.W	#19*64+20,$58(A6)
	rts

Start:
	Move.l	#187,d7
	Lea	Screen+40,a0


Loop:
	Moveq	#0,d0
	Move.b	(a1)+,d0
	Tst	d0
	Beq	Exit1f

	Cmp.b	#' ',d0
	Bne	NoSpace
	Add.w	#10,Text_X		;<-- space
	Bra	Loop
NoSpace:

	Cmp.b	#10,d0
	Bne	NoReturn
;	Add.l	#80*12,Text_Y
	move.w	Text_X,XL
	Move.w	#10,Text_X	
	Bra	exit2f
NoReturn:

	Sub.b	#32,d0
	Lsl.w	#2,d0
	Lea	PropFonts,a0
	Add.w	d0,a0

	Bsr	PiszLitera

	Moveq	#0,d0
	Move.b	-1(a1),d0
	Sub.b	#32,d0
	Lsl.w	#1,d0

	Lea	SzerTab,a0
	Move.w	(a0,d0.w),d1
	Add.w	d1,Text_X
	Add.w	#1,Text_X
	Bra	Loop

Exit1f:
	Lea	Text,a1

Exit2f:

	Rts

; a0 - adres litery
PiszLitera:
 	Btst	#14,$dff002
 	Bne	PiszLitera

	Move.l	a0,$50(a6)
	
	Move.l	#Screen,d1
	Move.w	Text_X,d0
	And.w	#$fff0,d0
	Lsr.w	#3,d0
	Add.w	d0,d1
	Add.l	Text_Y,d1

	Move.l	d1,$54(a6)
	Move.l	d1,$4c(a6)

	Move.w	#$ffff,$44(a6)
	Move.w	#$ffff,$46(a6)
	Move.w	#0244,$64(a6)
	Move.w	#0036,$62(a6)
	Move.w	#0036,$66(a6)

	Move.w	Text_X,d0
	And.w	#$000f,d0
	Lsl.w	#8,d0
	Lsl.w	#4,d0
	Or.w	#$0dfc,d0

	Move.w	d0,$40(a6)
	Move.w	#$0000,$42(a6)
	Move.w	#64*19+2,$58(a6)
 	Rts
XL:	
	dc.w	0

Text_X:
	dc.w	10

Text_Y:
	dc.l	0

SzerTab:
	; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]
	;---    ---  - --------------   - -----------------------------
	dc.w	10,6,12		; !"
	dc.w	1,2,3,4		;#$%&
	dc.w	5,6,6		;'()
	dc.w	1,2		;*+
	dc.w	6		;,
	dc.w	1		;-
;./0123456789:;
	dc.w	6,12,12,6,12,12,12,12,12,12,12,12,6,5
	dc.w	1,2,3,12,4	;<=>?@
;ABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]
	dc.w	12,12,12,12,12,10,12,12,4,12,12,10,12,12,12,12,12
	dc.w	12,12,10,12,12,12,12,12,12,5,1,5

	;******************** MENU *****

TEXT:
	INCBIN	'df0:lolo.txt'
	DC.B	0
		even
		

PropFonts:
	incbin	"df0:Fonty1.RAW"

Screen:
	Blk.b	$5000,$00
Screen1:
	Blk.b	$5000,$00

CHANGE_PALETTE7:
	move.l	#COLORMAP7,a0
	move.w	#31,d7
	move.l	#PALETTE7,a1
CHPL7:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL7
	rts

CopperList7:
		dc.w	$0120,$0000		; SpritePointers
		dc.w	$0122,$0000
		dc.w	$0124,$0000
		dc.w	$0126,$0000
		dc.w	$0128,$0000
		dc.w	$012a,$0000
		dc.w	$012c,$0000
		dc.w	$012e,$0000
		dc.w	$0130,$0000
		dc.w	$0132,$0000
		dc.w	$0134,$0000
		dc.w	$0136,$0000
		dc.w	$0138,$0000
		dc.w	$013a,$0000
		dc.w	$013c,$0000
		dc.w	$013e,$0000
COLORMAP7:
		dc.w	$0180,$0000		; ColorMap
		dc.w	$0182,$0CEF
		dc.w	$0184,$09AB
		dc.w	$0186,$0555
		dc.w	$0188,$0222
		dc.w	$018a,$0000
		dc.w	$018c,$0111
		dc.w	$018e,$0333
		dc.w	$0190,$0F00
		dc.w	$0192,$0A00
		dc.w	$0194,$0600
		dc.w	$0196,$0300
		dc.w	$0198,$0FC6
		dc.w	$019a,$0FA0
		dc.w	$019c,$0F60
		dc.w	$019e,$0B50
		dc.w	$01a0,$0000
		dc.w	$01a2,$0FFF
		dc.w	$01a4,$0FFF
		dc.w	$01a6,$0FFF
		dc.w	$01a8,$0000
		dc.w	$01aa,$0FFF
		dc.w	$01ac,$0FFF
		dc.w	$01ae,$0FFF
		dc.w	$01b0,$0000
		dc.w	$01b2,$0FFF
		dc.w	$01b4,$0FFF
		dc.w	$01b6,$0FFF
		dc.w	$01b8,$0000
		dc.w	$01ba,$0FFF
		dc.w	$01bc,$0FFF
		dc.w	$01be,$0FFF

		dc.w	$0102,$0000		; bplcon1
		dc.w	$0104,$0024		; bplcon2
		dc.w	$0108,$0000		; bpl1mod
		dc.w	$010a,$0000		; bpl2mod
		dc.w	$008e,$2c81		; diwstrt
		dc.w	$0090,$14C1		; diwstop
		dc.w	$0092,$0038		; ddfstrt
		dc.w	$0094,$00D0		; ddfstop

BITPLAN07		dc.w	$00e0,$0000		; Pointers to BitMap
BITPLAN17		dc.w	$00e2,$0000

BITPLAN27		dc.w	$00e4,$0000
BITPLAN37		dc.w	$00e6,$0000

BITPLAN47		dc.w	$00e8,$0000
BITPLAN57		dc.w	$00ea,$0000

BITPLAN67		dc.w	$00ec,$0000
BITPLAN77		dc.w	$00ee,$0000

BITPLAN87		dc.w	$00f0,$0000
BITPLAN97		dc.w	$00f2,$0000

BITPLAN107		dc.w	$00f4,$0000
BITPLAN117		dc.w	$00f6,$0000

		dc.w	$0100,$1200		; bplcon0
		dc.w	$4001,$ff00
		dc.w	$182,$000
		dc.w	$4101,$ff00
		dc.w	$182,$111
		dc.w	$4201,$ff00
		dc.w	$182,$222
		dc.w	$4301,$ff00
		dc.w	$182,$333
		dc.w	$4401,$ff00
		dc.w	$182,$444
		dc.w	$4501,$ff00
		dc.w	$182,$555
		dc.w	$4601,$ff00
		dc.w	$182,$666
		dc.w	$4701,$ff00
		dc.w	$182,$777
		dc.w	$4801,$ff00
		dc.w	$182,$888
		dc.w	$4901,$ff00
		dc.w	$182,$999

		dc.w	$f001,$ff00
		dc.w	$182,$888
		dc.w	$f101,$ff00
		dc.w	$182,$777
		dc.w	$f201,$ff00
		dc.w	$182,$666
		dc.w	$f301,$ff00
		dc.w	$182,$555
		dc.w	$f401,$ff00
		dc.w	$182,$444
		dc.w	$f501,$ff00
		dc.w	$182,$333
		dc.w	$f601,$ff00
		dc.w	$182,$222
		dc.w	$f701,$ff00
		dc.w	$182,$111
		dc.w	$f801,$ff00
		dc.w	$182,$000
BIL1:		dc.w	$ff01,$ff00
		dc.w	$0100,$4200		; bplcon0

		
BITPLAN0e		dc.w	$00e0,$0000		; Pointers to BitMap
BITPLAN1e		dc.w	$00e2,$0000

BITPLAN2e		dc.w	$00e4,$0000
BITPLAN3e		dc.w	$00e6,$0000

BITPLAN4e		dc.w	$00e8,$0000
BITPLAN5e		dc.w	$00ea,$0000

BITPLAN6e		dc.w	$00ec,$0000
BITPLAN7e		dc.w	$00ee,$0000

BITPLAN8e		dc.w	$00f0,$0000
BITPLAN9e		dc.w	$00f2,$0000

BITPLAN10e		dc.w	$00f4,$0000
BITPLAN11e		dc.w	$00f6,$0000

BIL2:		dc.w	$0201,$ff00

		dc.w	$0120,$0000		; SpritePointers
		dc.w	$0122,$0000
		dc.w	$0124,$0000
		dc.w	$0126,$0000
		dc.w	$0128,$0000
		dc.w	$012a,$0000
		dc.w	$012c,$0000
		dc.w	$012e,$0000
		dc.w	$0130,$0000
		dc.w	$0132,$0000
		dc.w	$0134,$0000
		dc.w	$0136,$0000
		dc.w	$0138,$0000
		dc.w	$013a,$0000
		dc.w	$013c,$0000
		dc.w	$013e,$0000
COLORMAPE:
		dc.w	$0180,$0000		; ColorMap
		dc.w	$0182,$0012
		dc.w	$0184,$0334
		dc.w	$0186,$0545
		dc.w	$0188,$0656
		dc.w	$018a,$0667
		dc.w	$018c,$0878
		dc.w	$018e,$0a88
		dc.w	$0190,$0997
		dc.w	$0192,$0ca9
		dc.w	$0194,$0dbc
		dc.w	$0196,$0dca
		dc.w	$0198,$0deb
		dc.w	$019a,$0fda
		dc.w	$019c,$0fea
		dc.w	$019e,$0ffc
		dc.w	$01a0,$0000
		dc.w	$01a2,$0000
		dc.w	$01a4,$0000
		dc.w	$01a6,$0000
		dc.w	$01a8,$0000
		dc.w	$01aa,$0000
		dc.w	$01ac,$0000
		dc.w	$01ae,$0000
		dc.w	$01b0,$0000
		dc.w	$01b2,$0000
		dc.w	$01b4,$0000
		dc.w	$01b6,$0000
		dc.w	$01b8,$0000
		dc.w	$01ba,$0000
		dc.w	$01bc,$0000
		dc.w	$01be,$0000

		DC.L	$FFFFFFFE
endpart:
	incbin	'df0:endpart.raw'
PALETTE7:
		dc.w	$000,$000,$222,$333,$444,$555,$666,$777
		dc.w	$888,$999,$AAA,$BBB,$CCC,$DDD,$EEE,$FFF

		dc.w	$f46,$999,$999,$999,$999,$999,$999,$999
		dc.w	$f46,$999,$999,$999,$999,$999,$999,$999



WAITMC:
	move.b	MCBIT,d1
	cmp.b	d0,d1
	bne	WAITMC
	rts
	;po rot transform
ODDOD:
	move.l	#WAL1I,a0
	move.w	#24,d7
ODDOD1:
	add.l	#2,a0
	cmp.w	#-180,(a0)
	blt	ODDOD11
	sub.w	#4,(a0)
ODDOD11:
	add.l	#4,a0
	dbf	d7,ODDOD1

	move.l	#WAL2I,a0
	move.w	#23,d7
ODDOD2:
	add.l	#2,a0
	cmp.w	#180,(a0)
	bgt	ODDOD21
	add.w	#4,(a0)
ODDOD21:
	add.l	#4,a0
	dbf	d7,ODDOD2
	rts
WAIT:
	CMP.B	#$FE,$DFF006
	BNE	WAIT
WAITREAL:
	CMP.B	#$FF,$DFF006
	BNE	WAITREAL
	rts
CLEARSCREEN:
	jsr	WAIT_BLITTER
	LEA	$DFF000,A6
	MOVE.L	PLANE,$54(A6)
	MOVE.l	#$0,$66(A6)
	MOVE.W	#%0000000100000000,$40(A6)
	MOVE.W	#0,$42(A6)
	MOVE.W	#256*64+20,$58(A6)
	rts	
ROTATE:
	move.l	COORDS_1,A5
	move.l	TABLE_DRAW,A2
	LEA	COSTABLE,A3
	LEA	SINTABLE,A4
	move.w	ANGL,d0
	ADD.W	d0,ANGLEZ
	ANDI.W	#$1Fe,ANGLEZ
	move.w	ANGY,d0
	ADD.W	d0,ANGLEY
	ANDI.W	#$1Fe,ANGLEY
	move.w	ANGX,d0
	ADD.W	d0,ANGLEX
	ANDI.W	#$1Fe,ANGLEX

	cmp.w	#$100,ANGLEX
	bne	AZ1
	bchg	#1,CCBIT
AZ1:
	cmp.w	#$20,ANGLEX
	bne	AZ2
	bchg	#1,CCBIT
AZ2:
	MOVE.W	(A5)+,D7
LOOP_CALC_COORDS5a:
	MOVEM.W	(A5)+,D0-D2



Rotacja_Y5a:			;os Y
	MOVE.W	ANGLEY,A0
	MOVE.W	D0,D4
	MOVE.W	D2,D5
	MULS	(A3,A0.W),D4
	MULS	(A4,A0.W),D5
	SUB.L	D5,D4
	ASR.L	#8,D4
	MOVE.W	D4,D6
	MOVE.W	D0,D4
	MOVE.W	D2,D5
	MULS	(A4,A0.W),D4
	MULS	(A3,A0.W),D5
	ADD.L	D4,D5
	ASR.L	#8,D5
	MOVE.W	D6,D0
	MOVE.W	D5,D2



Rotacja_X5a:			;os X
	MOVE.W	ANGLEX,A0
	MOVE.W	D1,D4
	MOVE.W	D2,D5
	MULS	(A3,A0.W),D4
	MULS	(A4,A0.W),D5
	SUB.L	D5,D4
	ASR.L	#8,D4
	MOVE.W	D4,D6
	MOVE.W	D1,D4
	MOVE.W	D2,D5
	MULS	(A4,A0.W),D4
	MULS	(A3,A0.W),D5
	ADD.L	D4,D5
	ASR.L	#8,D5
	MOVE.W	D6,D1
	MOVE.W	D5,D2

Rotacja_Z5a:			;os Z
	MOVE.W	ANGLEZ,A0
	MOVE.W	D0,D4
	MOVE.W	D1,D5
	MULS	(A3,A0.W),D4
	MULS	(A4,A0.W),D5
	SUB.L	D5,D4
	ASR.L	#8,D4
	MOVE.W	D4,D6
	MOVE.W	D0,D4
	MOVE.W	D1,D5
	MULS	(A4,A0.W),D4
	MULS	(A3,A0.W),D5
	ADD.L	D4,D5
	ASR.L	#8,D5
	MOVE.W	D6,D0
	MOVE.W	D5,D1

Perspektywa5a:					;perspektywa

Z_ADD5a:	ADD.W	GLEMBIA,D2
	NEG.W	D2
	EXT.L	D0
	EXT.L	D1
	ASL.L	#8,D0
	ASL.L	#8,D1
	DIVS	D2,D0
	DIVS	D2,D1
	ADD.W	XPZ,D0
	ADD.W	YPZ,D1
	MOVE.W	D0,(A2)+
	MOVE.W	D1,(A2)+
	DBF	D7,LOOP_CALC_COORDS5a
	rts
DRAWLINES:
		move.l	TABLE_DRAW,A4
		move.l	DATALINES,A5
		MOVE.L	PLANE,A0
		MOVE.W	(A5)+,D7
LOOP_FOR_DRAW:
		MOVEM.W	(A5)+,D4-D5
		LSL.W	#2,D4
		LSL.W	#2,D5
		MOVEM.W	(A4,D4.W),D0-D1
		MOVEM.W	(A4,D5.W),D2-D3
		MOVEM.L	D7,-(A7)
		Bsr	Clip
		MOVEM.L	(A7)+,D7
		DBF	D7,LOOP_FOR_DRAW
ENDLO:
		RTS
clip	tst.w	d0
	blt.s	clipa
	tst.w	d2
	blt.s	clipa
	tst.w	d1
	blt.s	clipa
	tst.w	d3
	blt.s	clipa
	cmp.w	#xmax,d0
	bgt.s	clipa
	cmp.w	#xmax,d2
	bgt.s	clipa
	cmp.w	#ymax,d1
	bgt.s	clipa
	cmp.w	#ymax,d3
	bgt.w	clipa
druw
	bra	draw
clipa	cmp.w	d3,d1
	blt.s	this
	exg	d0,d2
	exg	d1,d3
this	move.w	d0,zx1
	move.w	d2,zx2
	move.w	d1,zy1
	move.w	d3,zy2

	moveq	#1,d4
	move.w	d4,d5
	tst.w	d0
	bge.s	ml1
	moveq	#xmin,d4
	bra.s	ml2
ml1	cmp.w	#xmax,d0
	ble.s	ml2
	move.w	#xmax,d4
ml2	tst.w	d1
	bge.s	ml3
	moveq	#ymin,d5
	bra.s	ml4
ml3	cmp.w	#ymax,d1
	ble.s	ml4
	move.w	#ymax,d5
ml4	
	moveq	#1,d6
	moveq	#1,d7
	tst.w	d2
	bge.s	mx1
	moveq	#xmin,d6
	bra.s	mx2
mx1	cmp.w	#xmax,d2
	ble.s	mx2
	move.w	#xmax,d6
mx2	tst.w	d3
	bge.s	mx3
	moveq	#ymin,d7
	bra.s	mx4
mx3	cmp.w	#ymax,d3
	ble.s	mx4
	move.w	#ymax,d7
mx4	
	cmp.w	d4,d6
	bne.s	md1
	cmp.w	#1,d4	;+
	bne	lineout
md1	cmp.w	d5,d7
	bne.s	md2
	cmp.w	#1,d5
	bne	lineout
md2	cmp.w	#1,d4
	beq	clip1

	move.w	d1,d6		; cut left for 1 pixel
	sub.w	d3,d6
	move.w	d4,d7
	sub.w	d0,d7
	muls	d7,d6
	move.w	d2,d7
	sub.w	d0,d7
	beq	lineout
	divs	d7,d6
	sub.w	d6,d1
	move.w	d4,d0
	
	moveq	#1,d4
	moveq	#1,d5
	tst.w	d0
	bge.s	ms1
	moveq	#xmin,d4
	bra.s	ms2
ms1	cmp.w	#xmax,d0
	ble.s	ms2
	move.w	#xmax,d4
ms2	tst.w	d1
	bge.s	ms3
	moveq	#ymin,d5
	bra.s	clip1
ms3	cmp.w	#ymax,d1
	ble.s	clip1
	move.w	#ymax,d5
clip1	
	cmp.w	#1,d5	;+
	beq	clip2

	move.w	d2,d6		; cut up for 1 pixel
	sub.w	d0,d6
	move.w	d5,d7
	sub.w	d1,d7
	muls	d7,d6
	move.w	d3,d7
	sub.w	d1,d7
	beq	lineout
	divs	d7,d6
	add.w	d6,d0
	move.w	d5,d1
clip2	
	moveq	#1,d4
	moveq	#1,d5
	tst.w	d2
	bge.s	mz1
	moveq	#xmin,d4
	bra.s	mz2
mz1	cmp.w	#xmax,d2
	ble.s	mz2
	move.w	#xmax,d4
mz2	tst.w	d3
	bge.s	mz3
	moveq	#ymin,d5
	bra.s	mz4
mz3	cmp.w	#ymax,d3
	ble.s	mz4
	move.w	#ymax,d5
mz4	
	cmp.w	#1,d4
	beq	clip3
	
	move.w	d1,d6		; cut left for 2 pixel
	sub.w	d3,d6
	move.w	d4,d7
	sub.w	d0,d7
	muls	d7,d6
	move.w	d2,d7
	sub.w	d0,d7
	beq	lineout
	divs	d7,d6
	move.w	d1,d7
	sub.w	d6,d7
	move.w	d7,d3
	move.w	d4,d2
	
	moveq	#1,d4
	moveq	#1,d5
	tst.w	d2
	bge.s	mv1
	moveq	#xmin,d4
	bra.s	mv2
mv1	cmp.w	#xmax,d2
	ble.s	mv2
	move.w	#xmax,d4
mv2	tst.w	d3
	bge.s	mv3
	moveq	#ymin,d5
	bra.s	clip3
mv3	cmp.w	#ymax,d3
	ble.s	clip3
	move.w	#ymax,d5
clip3	
	cmp.w	#1,d5
	beq	clip4

	move.w	d2,d6		; cut right for 2 pixel
	sub.w	d0,d6
	move.w	d5,d7
	sub.w	d1,d7
	muls	d7,d6
	move.w	d3,d7
	sub.w	d1,d7
	beq	lineout
	divs	d7,d6
	move.w	d0,d7
	add.w	d6,d7
	move.w	d7,d2	
	move.w	d5,d3
clip4
	cmp.w	d0,d2
	bne.s	clip5
	cmp.w	d1,d3
	beq	lineout	; kreska poza ekranem
clip5
	movem.w	d0-d3,-(a7)
	bsr	draw
	movem.w	(a7)+,d0-d3

	cmp.w	#xmax,d0
	beq	exit1
	cmp.w	#xmax,d2
	bne	zero2

	move.w	d2,d0
	move.w	d3,d1	
	move.w	zy2,d3
	tst.w	d3
	bge.s	cli1
	moveq	#ymin,d3
cli1	cmp.w	#ymax,d3
	ble.s	cli2
	move.w	#ymax,d3
cli2
	bra	draw

exit1
	move.w	d0,d2
	move.w	zy1,d3
	tst.w	d3
	bge.s	cli3
	moveq	#ymin,d3
cli3	cmp.w	#ymax,d3
	ble.s	cli4
	move.w	#ymax,d3
cli4
	bra	draw

lineout
	cmp.w	#xmax,zx1
	bgt.s	outn
	cmp.w	#xmax,zx2
	bgt.s	outn
	rts

outn	move.w	zy1,d1
	move.w	zy2,d3
	tst.w	d1
	bpl.s	otn1
	moveq	#ymin,d1
otn1	cmp.w	#ymax,d1
	blt.s	otn2
	move.w	#ymax,d1
otn2	
	tst.w	d3
	bpl.s	otn3
	moveq	#ymin,d3
otn3	cmp.w	#ymax,d3
	blt.s	otn4
	move.w	#ymax,d3
otn4
	move.w	#xmax,d0
	move.w	#xmax,d2
	bra	Draw
zero2:	rts

zx1	dc.w	0
zx2	dc.w	0
zy1	dc.w	0
zy2	dc.w	0

Draw:
		Movem.l	D0-A6,-(SP)
		Cmp.w	D1,D3
		Beq.w	No_Line
		Bge.b	P_1
		Exg	D2,D0
		Exg	D1,D3
P_1:
		Addq.b	#1,D1
		Moveq	#$f,D4
		And.b	D2,D4
		Ror.l	#$4,D4
		Sub.w	D3,D1
		Neg.w	D1

		Move.w	D3,D5
		Asl.w	#5,D5	;Mulu #40,D3
		Asl.w	#3,D3
		Add.w	D5,d3

		Sub.w	D2,D0
		Blt.b	p_5
		Cmp.w	D0,D1
		Bge.b	P_4
		Ori.l	#$0b4a001b,D4
		Bra.b	P_9
P_4:
		Ori.l	#$0b4a0005,D4
		Exg	D0,D1
		Bra.b	P_9
P_5:
		Neg.w	D0
		Cmp.w	D0,D1
		Bge.b	P_8
		Ori.l	#$0b4a001f,D4
		Bra.b	P_9
P_8:
		Ori.l	#$0b4a000f,D4
		Exg	D0,D1
P_9:
		Asl.w	#1,D1
		Asr.w	#$3,D2
		Andi.l	#$0000ffff,D2
		Add.l	D2,D3
		Move.w	D1,D2
		Sub.w	D0,D2
		Sub.w	D0,D2
		Bge.b	P_10
		Bset	#6,D4
P_10:
		Asl.w	#6,d0
		Add.w	#$42,d0

	jsr	WAIT_BLITTER
		Move.w	d1,$62(A6)
		Move.w	d2,$64(A6)
		Move.l	#-1,$44(A6)
		Move.w	#40,$60(A6)
		Move.l	#$ffff8000,$72(A6)
		Add.l	PLANE,d3
OK:
		Move.W	D2,$52(A6)
		Move.l	D4,$40(A6)
		Move.l	D3,$48(A6)
		Move.l	D3,$54(A6)
		Move.w	D0,$58(A6)
No_Line:
		Movem.l	(SP)+,D0-A6
		Rts

FILL:
		jsr	WAIT_BLITTER
		LEA	$DFF000,A0
		Move.w	#$9f0,$40(A0)
		Move.w	#%01010,$42(A0)
		Move.l	#$ffffffff,$44(A0)
		Move.l	PLANE,D0
		Add.w	#256*40-2,D0
		Move.l	D0,$50(A0)
		Move.l	D0,$54(A0)
		Clr.w	$64(A0)
		Clr.w	$66(A0)
		Move.w	#256*64+20,$58(A0)
		jsr	WAIT_BLITTER
		rts

CHBUFS:
	MOVE.L	ACT_ADRES,A0
	CMP.L	#E_SHADE_TABLE,A0
	BNE	CLOO
	MOVE.L	#SHADE_TABLE,ACT_ADRES
CLOO:
	ADDQ.L	#4,ACT_ADRES
	MOVE.L	ACT_ADRES,A0
	MOVE.L	(A0)+,PLANE
	MOVE.L	(A0)+,D0
	MOVE.W	D0,BITPLAN1w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN0w+2
	MOVE.L	(A0)+,D0
	MOVE.W	D0,BITPLAN3w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN2w+2
	MOVE.L	(A0)+,D0
	MOVE.W	D0,BITPLAN5w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN4w+2
	MOVE.L	(A0)+,D0
	MOVE.W	D0,BITPLAN7w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN6w+2
;	MOVE.L	(A0)+,D0
;	MOVE.W	D0,BITPLAN9w+2
;	SWAP	D0
;	MOVE.W	D0,BITPLAN8w+2
	RTS

CHBUFSb:
	MOVE.L	ACT_ADRES,A0
	CMP.L	#E_SHADE_TABLE,A0
	BNE	CLOOb
	MOVE.L	#SHADE_TABLE,ACT_ADRES
CLOOb:
	ADDQ.L	#4,ACT_ADRES
	MOVE.L	ACT_ADRES,A0
	MOVE.L	(A0)+,D0
	MOVE.L	(A0)+,PLANE
	MOVE.W	D0,BITPLAN9w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN8w+2
	RTS
CHBUFSb1:
	MOVE.L	ACT_ADRES,A0
	CMP.L	#E_SHADE_TABLE,A0
	BNE	CLOOb1
	MOVE.L	#SHADE_TABLE,ACT_ADRES
CLOOb1:
	ADDQ.L	#4,ACT_ADRES
	MOVE.L	ACT_ADRES,A0
	MOVE.L	(A0)+,D0
	MOVE.L	(A0)+,PLANE
	MOVE.W	D0,BITPLAN7w+2
	SWAP	D0
	MOVE.W	D0,BITPLAN6w+2
	RTS
SHADE_TABLE:
	DC.L	0,0,0,0,0
E_SHADE_TABLE:
	DC.L	0,0,0,0,0
ACT_ADRES:
	DC.L	SHADE_TABLE
xmin=0
ymin=0
xmax=319
ymax=255


ANGLEX:		DC.W		0
ANGLEZ:		DC.W		0
ANGLEY:		DC.W		0

CHANGE_PALETTE6:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
	move.l	#PALETTE6,a1
CHPL6:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL6
	rts

CHANGE_PALETTE1:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
	move.l	#PALETTE1,a1
CHPL1:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL1
	rts

CHANGE_PALETTE2:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
	move.l	#PALETTE2,a1
CHPL2:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL2
	rts
CHANGE_PALETTE4:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
	move.l	#PALETTE4,a1
CHPL4:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL4
	rts

CHANGE_PALETTE3:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
	move.l	COLOR_WHITE,a1
CHPL3:
	add.l	#2,a0
	move.w	(a1)+,(a0)+
	dbf	d7,CHPL3
	rts

CHANGE_PALETTE5:
	move.l	#COLORMAP1,a0
	move.w	#31,d7
CHPL5:
	add.l	#2,a0
	move.w	#$FFF,(a0)+
	dbf	d7,CHPL5
	rts


GET_C_FADE_PROCEDURE:
GET_C_il_COLORS=30	; -1

	move.l	#GET_C_il_COLORS,d0
	moveq	#0,d1
	moveq	#0,d2
	moveq	#0,d4

GET_C_FADE_LOOP:
	moveq	#0,d4		; ABY NIE DZILALO W KOLKO
	move.w	(a0),d4		; d4 jaki kolor po zmianie
	move.w	(a0),d1		; KOLORKI DO d1 i d2
	move.w	(a1),d2
	cmp.w	d1,d2		; CZY ROWNE ???
	beq	GET_C_FADE_OK_END	; JESLI TAK TO ZREZYGNUJ Z PROCEDURY DLA TEGO KOLORU
GET_C_FADE_WIEKSZY:	
	move.w	(a0),d1		; KOLORKI DO d1 i d2
	move.w	(a1),d2
	and.w	#$00f,d1	; MASKI DLA POZOSTALYCH BITOW
	and.w	#$00f,d2
	cmp.w	d1,d2		; JESLI 0-ych 8 BITOW TAKIE SAME TO OMIN
	beq	GET_C_FADE_0_OK_P
	bmi	GET_C_FADE_ADD_0
	add.w	#$001,d1
	move.w	d1,d4
	bra	GET_C_FADE_0_OK
GET_C_FADE_ADD_0
	sub.w	#$001,d1
	move.w	d1,d4		; ZMIENIONY KOLOR do d4
	bra	GET_C_FADE_0_OK
GET_C_FADE_0_OK_P:
	move.w	(a1),d1
	and.w	#$00f,d1
	move.w	d1,d4	

GET_C_FADE_0_OK:
	move.w	(a0),d1		; KOLORKI DO d1 i d2
	move.w	(a1),d2
	and.w	#$0f0,d1	; MASKI DLA 2-ich 8 BITOW
	and.w	#$0f0,d2
	cmp.w	d1,d2		; JESLI 1-Ych 8 BITOW TAKIE SAME TO OMIN
	beq	GET_C_FADE_1_OK_P
	bmi	GET_C_FADE_ADD_1
	add.w	#$010,d1
	and.w	#$f0f,d4
	add.w	d1,d4
	bra	GET_C_FADE_1_OK
GET_C_FADE_ADD_1
	sub.w	#$010,d1
	and.w	#$f0f,d4
	add.w	d1,d4		; ZMIENIONY KOLOR do d4
	bra	GET_C_FADE_1_OK
GET_C_FADE_1_OK_P:
	move.w	(a1),d1
	and.w	#$0f0,d1
	and.w	#$f0f,d4
	add.w	d1,d4	
GET_C_FADE_1_OK:
	move.w	(a0),d1		; KOLORKI DO d1 i d2
	move.w	(a1),d2
	and.w	#$f00,d1	; MASKI DLA 2-ich 8 BITOW 
	and.w	#$f00,d2
	cmp.w	d1,d2		; JESLI 2-ICH 8 BITOW TAKIE SAME TO OMIN
	beq	GET_C_FADE_OK_END_P
	bmi	GET_C_FADE_ADD_2
	add.w	#$100,d1
	and.w	#$0ff,d4
	add.w	d1,d4
	bra	GET_C_FADE_OK_END
GET_C_FADE_ADD_2
	sub.w	#$100,d1
	and.w	#$0ff,d4
	add.w	d1,d4		; ZMIENIONY KOLOR do d4
	bra	GET_C_FADE_OK_END
GET_C_FADE_OK_END_P:
	move.w	(a1),d1
	and.w	#$f00,d1
	and.w	#$0ff,d4
	add.w	d1,d4	
GET_C_FADE_OK_END:
	move.w	d4,(a0)
	add.l	#2,a0		; PRZESUN KOLORY o .L
	add.l	#2,a1
	dbf	d0,GET_C_FADE_LOOP	; TYLE PETLI ILE KOLOROW
	rts


TUNEL_LOOP:
	jsr	CHBUFS
	jsr	CLEARSCREEN
		
	move.w	BUF1,ANGLEZ
	move.w	ANG1,ANGL
	move.w	GLE1,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ1
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#1,CCBIT
	move.w	STPOL,ANGLEZ
BZZ1:
	move.w	GLEMBIA,GLE1
	move.w	ANGLEZ,BUF1

	move.w	BUF2,ANGLEZ
	move.w	ANG2,ANGL
	move.w	GLE2,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ2
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#2,CCBIT
	move.w	STPOL,ANGLEZ
BZZ2:
	move.w	GLEMBIA,GLE2
	move.w	ANGLEZ,BUF2

	move.w	BUF3,ANGLEZ
	move.w	ANG3,ANGL
	move.w	GLE3,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ3
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#3,CCBIT
	move.w	STPOL,ANGLEZ
BZZ3:
	move.w	GLEMBIA,GLE3
	move.w	ANGLEZ,BUF3

	move.w	BUF4,ANGLEZ
	move.w	ANG4,ANGL
	move.w	GLE4,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ4
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#4,CCBIT
	move.w	STPOL,ANGLEZ
BZZ4:
	move.w	GLEMBIA,GLE4
	move.w	ANGLEZ,BUF4

	move.w	BUF5,ANGLEZ
	move.w	ANG5,ANGL
	move.w	GLE5,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ5
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#5,CCBIT
	move.w	STPOL,ANGLEZ
BZZ5:
	move.w	GLEMBIA,GLE5
	move.w	ANGLEZ,BUF5

	move.w	BUF6,ANGLEZ
	move.w	ANG6,ANGL
	move.w	GLE6,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ6
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#6,CCBIT
	move.w	STPOL,ANGLEZ

BZZ6:
	move.w	GLEMBIA,GLE6
	move.w	ANGLEZ,BUF6

	move.w	BUF7,ANGLEZ
	move.w	ANG7,ANGL
	move.w	GLE7,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ7
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#7,CCBIT
	move.w	STPOL,ANGLEZ
BZZ7:
	move.w	GLEMBIA,GLE7
	move.w	ANGLEZ,BUF7

	move.w	BUF8,ANGLEZ
	move.w	ANG8,ANGL
	move.w	GLE8,GLEMBIA
	move.l	#TUNEL1I,COORDS_1
	move.l	#TUNEL1D,datalines
	jsr	ROTATE
	jsr	DRAWLINES
	move.w	SPEED,D0
	sub.w	D0,GLEMBIA
	cmp.w	#80,GLEMBIA
	bgt	BZZ8
	move.w	#200+120+120+120+120+120+120+120,GLEMBIA
	move.b	#8,CCBIT
	move.w	STPOL,ANGLEZ
BZZ8:
	move.w	GLEMBIA,GLE8
	move.w	ANGLEZ,BUF8

	jsr	FILL
	blit
	rts


CopperList:
		dc.w	$0120,$0000		; SpritePointers
		dc.w	$0122,$0000
		dc.w	$0124,$0000
		dc.w	$0126,$0000
		dc.w	$0128,$0000
		dc.w	$012a,$0000
		dc.w	$012c,$0000
		dc.w	$012e,$0000
		dc.w	$0130,$0000
		dc.w	$0132,$0000
		dc.w	$0134,$0000
		dc.w	$0136,$0000
		dc.w	$0138,$0000
		dc.w	$013a,$0000
		dc.w	$013c,$0000
		dc.w	$013e,$0000
COLORMAP:
		dc.w	$0180,$0000
		dc.w	$0182,$0CEF
		dc.w	$0184,$09AB
		dc.w	$0186,$0555
		dc.w	$0188,$0222
		dc.w	$018a,$0000
		dc.w	$018c,$0111
		dc.w	$018e,$0333
		dc.w	$0190,$0F00
		dc.w	$0192,$0A00
		dc.w	$0194,$0600
		dc.w	$0196,$0300
		dc.w	$0198,$0FC6
		dc.w	$019a,$0FA0
		dc.w	$019c,$0F60
		dc.w	$019e,$0B50
CREDCOLOR:	dc.w	$01a0,$0000
		dc.w	$01a2,$0ddd
		dc.w	$01a4,$0999
		dc.w	$01a6,$0555
		dc.w	$01a8,$0000
		dc.w	$01aa,$0ddd
		dc.w	$01ac,$0999
		dc.w	$01ae,$0555
		dc.w	$01b0,$0000
		dc.w	$01b2,$0ddd
		dc.w	$01b4,$0999
		dc.w	$01b6,$0555
		dc.w	$01b8,$0000
		dc.w	$01ba,$0ddd
		dc.w	$01bc,$0999
		dc.w	$01be,$0555

SCROLL:		dc.w	$0102,$0000		; bplcon1
		dc.w	$0104,$0024		; bplcon2
		dc.w	$0108,$FFD7		; bpl1mod
		dc.w	$010a,$FFD7		; bpl2mod
		dc.w	$008e,$2c81		; diwstrt
		dc.w	$0090,$30C1		; diwstop
		dc.w	$0092,$0030		; ddfstrt
		dc.w	$0094,$00D0		; ddfstop
BitMapPtrs:
BITPLAN0		dc.w	$00e0,$0000		; Pointers to BitMap
BITPLAN1		dc.w	$00e2,$0000
BITPLAN2		dc.w	$00e4,$0000
BITPLAN3		dc.w	$00e6,$0000
BITPLAN4		dc.w	$00e8,$0000
BITPLAN5		dc.w	$00ea,$0000
BITPLAN6		dc.w	$00ec,$0000
BITPLAN7		dc.w	$00ee,$0000
BITPLAN8		dc.w	$00f0,$0000
BITPLAN9		dc.w	$00f2,$0000
BITPLAN10		dc.w	$00f4,$0000
BITPLAN11		dc.w	$00f6,$0000
		dc.w	$0100,$4a00		; bplcon0
ZOOMER:
		blk.b	ILE_REZERWOWAC,00
		even

PICTUREKOLO:
	incbin	"df0:bcr/c1.boc"
	even
PICTURE:
	incbin	"df0:logo1.raw"
	even
PALETTE:
	incbin	"df0:bcr/paletteLOGO.raw"
	even
CREDITS:
	incbin	"df0:bcr/cr1.boc"
	even
		; ннннн SPRITTE SECTION
VIRSPR:
	dc.w	0,0,0,0
SPRITTE1:
	dc.w	78*$100+70+80,78*$100+65*$100
S1:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE2:
	dc.w	78*$100+78+80,78*$100+65*$100
S2:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE3:
	dc.w	78*$100+86+80,78*$100+65*$100
S3:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE4:
	dc.w	78*$100+94+80,78*$100+65*$100
S4:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE5:
	dc.w	78*$100+102+80,78*$100+65*$100
S5:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE6:
	dc.w	78*$100+110+80,78*$100+65*$100
S6:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE7:
	dc.w	78*$100+118+80,78*$100+65*$100
S7:	blk.w	65*2,0	;$FFFF
	dc.l	0
SPRITTE8:
	dc.w	78*$100+126+80,78*$100+65*$100
S8:	blk.w	65*2,0	;$FFFF
	dc.l	0


CCBIT		dc.w	0	
START_POSITION:	dc.l	$2501ff00
END_POSITION:	dc.l	$fe01ff00

PICTR1:		dc.l	ILE_DODAC
PICTR2:		dc.l	OFFSET2*(80)+ILE_DODAC
PICTR3:		dc.l	OFFSET2*(80*2)+ILE_DODAC
PICTR4:		dc.l	OFFSET2*(80*3)+ILE_DODAC

PICTR1K:	dc.l	0
PICTR2K:	dc.l	10240
PICTR3K:	dc.l	20480

BUF1:	dc.l	0
WAITED:	dc.b	1
	even

MEM:	dc.l	0

GET_C_COLORS_LIST:	dc.l	0
GET_C_COLORS_LIST_BUF:	dc.l	0

COLOR_WHITE:	dc.l	0

CopperListwall:
		dc.w	$0120,$0000		; SpritePointers
		dc.w	$0122,$0000
		dc.w	$0124,$0000
		dc.w	$0126,$0000
		dc.w	$0128,$0000
		dc.w	$012a,$0000
		dc.w	$012c,$0000
		dc.w	$012e,$0000
		dc.w	$0130,$0000
		dc.w	$0132,$0000
		dc.w	$0134,$0000
		dc.w	$0136,$0000
		dc.w	$0138,$0000
		dc.w	$013a,$0000
		dc.w	$013c,$0000
		dc.w	$013e,$0000
COLORMAP1:
		dc.w	$0180,$0000		; ColorMap
		dc.w	$0182,$0CEF
		dc.w	$0184,$09AB
		dc.w	$0186,$0555
		dc.w	$0188,$0222
		dc.w	$018a,$0000
		dc.w	$018c,$0111
		dc.w	$018e,$0333
		dc.w	$0190,$0F00
		dc.w	$0192,$0A00
		dc.w	$0194,$0600
		dc.w	$0196,$0300
		dc.w	$0198,$0FC6
		dc.w	$019a,$0FA0
		dc.w	$019c,$0F60
		dc.w	$019e,$0B50
		dc.w	$01a0,$0000
		dc.w	$01a2,$0FFF
		dc.w	$01a4,$0FFF
		dc.w	$01a6,$0FFF
		dc.w	$01a8,$0000
		dc.w	$01aa,$0FFF
		dc.w	$01ac,$0FFF
		dc.w	$01ae,$0FFF
		dc.w	$01b0,$0000
		dc.w	$01b2,$0FFF
		dc.w	$01b4,$0FFF
		dc.w	$01b6,$0FFF
		dc.w	$01b8,$0000
		dc.w	$01ba,$0FFF
		dc.w	$01bc,$0FFF
		dc.w	$01be,$0FFF
		dc.w	$0102,$0000		; bplcon1
		dc.w	$0104,$0024		; bplcon2
		dc.w	$0108,$0000		; bpl1mod
		dc.w	$010a,$0000		; bpl2mod
		dc.w	$008e,$2c81		; diwstrt
		dc.w	$0090,$2cC1		; diwstop
		dc.w	$0092,$0038		; ddfstrt
		dc.w	$0094,$00D0		; ddfstop
BITPLAN0w		dc.w	$00e0,$0000		; Pointers to BitMap
BITPLAN1w		dc.w	$00e2,$0000

BITPLAN2w		dc.w	$00e4,$0000
BITPLAN3w		dc.w	$00e6,$0000

BITPLAN4w		dc.w	$00e8,$0000
BITPLAN5w		dc.w	$00ea,$0000

BITPLAN6w		dc.w	$00ec,$0000
BITPLAN7w		dc.w	$00ee,$0000

BITPLAN8w		dc.w	$00f0,$0000
BITPLAN9w		dc.w	$00f2,$0000

BITPLAN10w		dc.w	$00f4,$0000
BITPLAN11w		dc.w	$00f6,$0000

BPL0:		dc.w	$0100,$5200		; bplcon0
		DC.L	$FFFFFFFE

Copper:		dc.w	$0120,$0000		; SpritePointers
		dc.w	$0122,$0000
		dc.w	$0124,$0000
		dc.w	$0126,$0000
		dc.w	$0128,$0000
		dc.w	$012a,$0000
		dc.w	$012c,$0000
		dc.w	$012e,$0000
		dc.w	$0130,$0000
		dc.w	$0132,$0000
		dc.w	$0134,$0000
		dc.w	$0136,$0000
		dc.w	$0138,$0000
		dc.w	$013a,$0000
		dc.w	$013c,$0000
		dc.w	$013e,$0000
COLORMAP12:
		dc.w	$0180,$0666		; ColorMap
		dc.w	$0182,$0666
		dc.w	$0184,$0000
		dc.w	$0186,$0000
		dc.w	$0188,$0222
		dc.w	$018a,$0000
		dc.w	$018c,$0111
		dc.w	$018e,$0333
		dc.w	$0190,$0F00
		dc.w	$0192,$0A00
		dc.w	$0194,$0600
		dc.w	$0196,$0300
		dc.w	$0198,$0FC6
		dc.w	$019a,$0FA0
		dc.w	$019c,$0F60
		dc.w	$019e,$0B50
		dc.w	$01a0,$0000
		dc.w	$01a2,$0FFF
		dc.w	$01a4,$0FFF
		dc.w	$01a6,$0FFF
		dc.w	$01a8,$0000
		dc.w	$01aa,$0FFF
		dc.w	$01ac,$0FFF
		dc.w	$01ae,$0FFF
		dc.w	$01b0,$0000
		dc.w	$01b2,$0FFF
		dc.w	$01b4,$0FFF
		dc.w	$01b6,$0FFF
		dc.w	$01b8,$0000
		dc.w	$01ba,$0FFF
		dc.w	$01bc,$0FFF
		dc.w	$01be,$0FFF
		dc.w	$0102,$0000		; bplcon1
		dc.w	$0104,$0024		; bplcon2
		dc.w	$0108,$0000		; bpl1mod
		dc.w	$010a,$0000		; bpl2mod
		dc.w	$008e,$2c81		; diwstrt
		dc.w	$0090,$2cC1		; diwstop
		dc.w	$0092,$0038		; ddfstrt
		dc.w	$0094,$00D0		; ddfstop
BITPLAN0wl		dc.w	$00e0,$0000		; Pointers to BitMap
BITPLAN1wl		dc.w	$00e2,$0000

BITPLAN2wl		dc.w	$00e4,$0000
BITPLAN3wl		dc.w	$00e6,$0000

BITPLAN4wl		dc.w	$00e8,$0000
BITPLAN5wl		dc.w	$00ea,$0000

BITPLAN6wl		dc.w	$00ec,$0000
BITPLAN7wl		dc.w	$00ee,$0000

BITPLAN8wl		dc.w	$00f0,$0000
BITPLAN9wl		dc.w	$00f2,$0000

BITPLAN10wl		dc.w	$00f4,$0000
BITPLAN11wl		dc.w	$00f6,$0000

		dc.w	$0100,$1200		; bplcon0
		dc.w	$6001,$FF00
BLIB1		dc.w	$180,$666
		dc.w	$182,$666
	
		dc.w	$f001,$FF00
BLIB2		dc.w	$180,$666
		dc.w	$182,$666

		DC.L	$FFFFFFFE

PALETTE1:
		dc.w	$000,$000,$000,$000,$000,$000,$000,$000
		dc.w	$09c,$000,$055,$077,$099,$0bb,$0dd,$0ff

		dc.w	$09c,$000,$055,$077,$099,$0bb,$0dd,$0ff
		dc.w	$069,$000,$022,$044,$066,$088,$0AA,$0CC

PALETTE2:
		dc.w	$069,$000,$022,$044,$066,$088,$0AA,$0CC
		dc.w	$022,$000,$022,$044,$066,$088,$0AA,$0CC
		dc.w	$022,$022,$022,$022,$022,$022,$022,$022
		dc.w	$000,$000,$022,$044,$066,$088,$0AA,$0CC

PALETTE4:
		dc.w	$069,$000,$022,$044,$066,$088,$0AA,$0CC
		dc.w	$022,$022,$022,$022,$022,$022,$022,$022
		dc.w	$022,$000,$022,$044,$066,$088,$0AA,$0CC
		dc.w	$000,$000,$022,$044,$066,$088,$0AA,$0CC

PALETTE6:
		dc.w	$000,$111,$222,$333,$444,$555,$666,$777
		dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
		dc.w	$000,$111,$222,$333,$444,$555,$666,$777
		dc.w	$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff



******************************************
*** LINE OBJECT IN FORMAT VECTOR EDIT. ***
******************************************
H1:
	dc.w	67
	dc.w	160-56,133-127,0
	dc.w	160-58,146-127,0
	dc.w	160-69,145-127,0
	dc.w	160-71,151-127,0
	dc.w	160-60,154-127,0
	dc.w	160-58,174-127,0
	dc.w	160-102,153-127,0
	dc.w	160-99,143-127,0
	dc.w	160-81,149-127,0
	dc.w	160-80,143-127,0
	dc.w	160-98,140-127,0
	dc.w	160-97,130-127,0	;H
	dc.w	160-74,186-127,0
	dc.w	160-85,198-127,0
	dc.w	160-128,181-127,0
	dc.w	160-116,172-127,0
	dc.w	160-98,182-127,0
	dc.w	160-95,179-127,0
	dc.w	160-108,162-127,0
	dc.w	160-103,154-127,0	;A
	dc.w	160-85,189-127,0
	dc.w	160-93,186-127,0
	dc.w	160-90,182-127,0	;/\
	dc.w	160-92,206-127,0
	dc.w	160-100,212-127,0
	dc.w	160-113,206-127,0
	dc.w	160-110,218-127,0
	dc.w	160-123,224-127,0
	dc.w	160-130,183-127,0	;V
	dc.w	160-126,225-127,0
	dc.w	160-144,230-127,0
	dc.w	160-146,222-127,0
	dc.w	160-137,220-127,0
	dc.w	160-138,217-127,0
	dc.w	160-144,219-127,0
	dc.w	160-147,211-127,0
	dc.w	160-141,208-127,0
	dc.w	160-142,205-127,0
	dc.w	160-157,211-127,0
	dc.w	160-160,190-127,0
	dc.w	160-137,186-127,0	;E
	dc.w	160-194,225-127,0
	dc.w	160-214,215-127,0
	dc.w	160-203,174-127,0
	dc.w	160-192,181-127,0
	dc.w	160-197,200-127,0
	dc.w	160-194,201-127,0
	dc.w	160-185,185-127,0
	dc.w	160-173,189-127,0
	dc.w	160-203,214-127,0
	dc.w	160-201,205-127,0
	dc.w	160-196,207-127,0
	dc.w	160-243,189-127,0
	dc.w	160-259,157-127,0
	dc.w	160-220,146-127,0
	dc.w	160-217,154-127,0
	dc.w	160-237,164-127,0
	dc.w	160-235,167-127,0
	dc.w	160-216,157-127,0
	dc.w	160-211,164-127,0
	dc.w	160-262,147-127,0
	dc.w	160-264,133-127,0
	dc.w	160-252,132-127,0
	dc.w	160-250,145-127,0
	dc.w	160-246,145-127,0
	dc.w	160-248,132-127,0
	dc.w	160-223,130-127,0
	dc.w	160-222,141-127,0
H1D:
	dc.w	67
	dc.w	0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,0
	dc.w	12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,12
	dc.w	20,21,21,22,22,20
	dc.w	23,24,24,25,25,26,26,27,27,28,28,23
	dc.w	29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38
	dc.w	38,39,39,40,40,29
	dc.w	41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,41
	dc.w	49,50,50,51,51,49
	dc.w	52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,52
	dc.w	60,61,61,62,62,63,63,60,64,65,65,66,66,67,67,64
H2:
	dc.w	54
	dc.w	160-264,121-127,0
	dc.w	160-256,89-127,0
	dc.w	160-244,92-127,0
	dc.w	160-249,113-127,0
	dc.w	160-241,114-127,0
	dc.w	160-234,93-127,0
	dc.w	160-217,100-127,0
	dc.w	160-223,124-127,0	;C
	dc.w	160-251,77-127,0
	dc.w	160-228,49-127,0
	dc.w	160-221,57-127,0
	dc.w	160-231,69-127,0
	dc.w	160-229,71-127,0
	dc.w	160-222,63-127,0
	dc.w	160-215,70-127,0
	dc.w	160-222,77-127,0
	dc.w	160-220,79-127,0
	dc.w	160-207,63-127,0
	dc.w	160-197,75-127,0
	dc.w	160-216,97-127,0	;E
	dc.w	160-182,25-127,0
	dc.w	160-152,23-127,0
	dc.w	160-142,37-127,0
	dc.w	160-142,51-127,0
	dc.w	160-153,64-127,0
	dc.w	160-175,66-127,0	;D
	dc.w	160-169,33-127,0
	dc.w	160-159,32-127,0
	dc.w	160-154,38-127,0
	dc.w	160-154,45-127,0
	dc.w	160-160,50-127,0
	dc.w	160-166,50-127,0	; srodek D
	dc.w	160-120,31-127,0
	dc.w	160-103,40-127,0
	dc.w	160-114,84-127,0
	dc.w	160-126,73-127,0
	dc.w	160-121,59-127,0
	dc.w	160-126,56-127,0
	dc.w	160-133,70-127,0
	dc.w	160-146,66-127,0	;A
	dc.w	160-113,39-127,0
	dc.w	160-116,54-127,0
	dc.w	160-123,50-127,0	;srodek A
	dc.w	160-94,56-127,0
	dc.w	160-83,56-127,0
	dc.w	160-87,78-127,0
	dc.w	160-68,78-127,0
	dc.w	160-68,92-127,0
	dc.w	160-92,87-127,0
	dc.w	160-105,96-127,0
	dc.w	160-111,87-127,0	;Y
	dc.w	160-98,77-127,0

	dc.w	160-91,104-127,0
	dc.w	160-71,111-127,0
	dc.w	160-78,121-127,0	;trojkat
H2D:
	dc.w	54
	dc.w	0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,0
	dc.w	8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17
	dc.w	18,18,19,19,8
	dc.w	20,21,21,22,22,23,23,24,24,25,25,20
	dc.w	26,27,27,28,28,29,29,30,30,31,31,26
	dc.w	32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,32
	dc.w	40,41,41,42,42,40
	dc.w	43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,43
	dc.w	52,53,53,54,54,52
WAL1I:
	dc.w 26
	dc.w 180-60,160,0
	dc.w 180-60,100,0
	dc.w 220-60,100,0
	dc.w 220-60,80,0
	dc.w 240-60,80,0
	dc.w 240-60,80,0
	dc.w 240-60,60,0
	dc.w 180-60,60,0
	dc.w 180-60,40,0
	dc.w 200-60,40,0
	dc.w 200-60,20,0
	dc.w 240-60,20,0
	dc.w 240-60,0,0
	dc.w 180-60,0,0
	dc.w 180-60,-20,0
	dc.w 220-60,-20,0
	dc.w 220-60,-40,0
	dc.w 260-60,-40,0
	dc.w 260-60,-60,0
	dc.w 200-60,-60,0
	dc.w 200-60,-80,0
	dc.w 240-60,-80,0
	dc.w 240-60,-100,0
	dc.w 180-60,-100,0
	dc.w 180-60,-160,0
	dc.w 260-60,-160,0
	dc.w 260-60,160,0

WAL1D:
	dc.w 26
	dc.w 0,1,1,2,2,3,3,4,4,5
	dc.w 5,6,6,7,7,8,8,9,9,10
	dc.w 10,11,11,12,12,13,13,14,14,15
	dc.w 15,16,16,17,17,18,18,19,19,20
	dc.w 20,21,21,22,22,23,23,24,24,25
	dc.w 25,26,26,0

WAL2I:
	dc.w 25
	dc.w -240+60,160,0
	dc.w -240+60,100,0
	dc.w -200+60,100,0
	dc.w -200+60,80,0
	dc.w -180+60,80,0
	dc.w -180+60,60,0
	dc.w -240+60,60,0
	dc.w -240+60,40,0
	dc.w -220+60,40,0
	dc.w -220+60,20,0
	dc.w -180+60,20,0
	dc.w -180+60,0,0
	dc.w -240+60,0,0
	dc.w -240+60,-20,0
	dc.w -200+60,-20,0
	dc.w -200+60,-40,0
	dc.w -160+60,-40,0
	dc.w -160+60,-60,0
	dc.w -220+60,-60,0
	dc.w -220+60,-80,0
	dc.w -180+60,-80,0
	dc.w -180+60,-100,0
	dc.w -240+60,-100,0
	dc.w -240+60,-160,0
	dc.w -260+60,-160,0
	dc.w -260+60,160,0
WAL2D:
	dc.w 25
	dc.w 0,1,1,2,2,3,3,4,4,5
	dc.w 5,6,6,7,7,8,8,9,9,10
	dc.w 10,11,11,12,12,13,13,14,14,15
	dc.w 15,16,16,17,17,18,18,19,19,20
	dc.w 20,21,21,22,22,23,23,24,24,25
	dc.w 25,0

TUNEL1I:
	dc.w 31
	dc.w -60,80,-20
	dc.w -100,80,-20
	dc.w -100,80,20
	dc.w -60,80,20
	dc.w -60,-80,-20
	dc.w -100,-80,-20
	dc.w -100,-80,20
	dc.w -60,-80,20
	dc.w 100,-80,-20
	dc.w 60,-80,-20
	dc.w 60,-80,20
	dc.w 100,-80,20
	dc.w 100,80,-20
	dc.w 60,80,-20
	dc.w 60,80,20
	dc.w 100,80,20
	dc.w 60,120,20
	dc.w 60,80,20
	dc.w 60,80,-20
	dc.w 60,120,-20
	dc.w -60,120,20
	dc.w -60,80,20
	dc.w -60,80,-20
	dc.w -60,120,-20
	dc.w -60,-80,20
	dc.w -60,-120,20
	dc.w -60,-120,-20
	dc.w -60,-80,-20
	dc.w 60,-80,20
	dc.w 60,-120,20
	dc.w 60,-120,-20
	dc.w 60,-80,-20

TUNEL1D:
	dc.w 31
	dc.w 0,1,1,2,2,3,3,0,4,5
	dc.w 5,6,6,7,7,4,8,9,9,10
	dc.w 10,11,11,8,12,13,13,14,14,15
	dc.w 15,12,16,17,17,18,18,19,19,16
	dc.w 20,21,21,22,22,23,23,20,24,25
	dc.w 25,26,26,27,27,24,28,29,29,30
	dc.w 30,31,31,28

TABLE_DRAW:	dc.l	0

************************
*** SIN & COS TABLES ***
************************
sintable:
	dc.w	1,-5,-12,-18,-24,-30,-37,-43
	dc.w	-49,-55,-61,-67,-73,-79,-85,-91
	dc.w	-97,-103,-108,-114,-120,-125,-131,-136
	dc.w	-141,-146,-151,-156,-161,-166,-171,-176
	dc.w	-180,-184,-189,-193,-197,-201,-205,-208
	dc.w	-212,-215,-219,-222,-225,-228,-230,-233
	dc.w	-236,-238,-240,-242,-244,-246,-247,-249
	dc.w	-250,-251,-252,-253,-254,-254,-255,-255
	dc.w	-255,-255,-255,-254,-254,-253,-252,-251
	dc.w	-250,-249,-247,-246,-244,-242,-240,-238
	dc.w	-236,-233,-230,-228,-225,-222,-219,-215
	dc.w	-212,-208,-205,-201,-197,-193,-189,-184
	dc.w	-180,-176,-171,-166,-161,-156,-151,-146
	dc.w	-141,-136,-131,-125,-120,-114,-108,-103
	dc.w	-97,-91,-85,-79,-73,-67,-61,-55
	dc.w	-49,-43,-37,-30,-24,-18,-12,-5
	dc.w	1,6,13,19,25,31,38,44
	dc.w	50,56,62,68,74,80,86,92
	dc.w	98,104,109,115,121,126,132,137
	dc.w	142,147,152,158,162,167,172,177
	dc.w	181,185,190,194,198,202,206,209
	dc.w	213,216,220,223,226,229,231,234
	dc.w	237,239,241,243,245,247,248,250
	dc.w	251,252,253,254,255,255,256,256
	dc.w	256,256,256,255,255,254,253,252
	dc.w	251,250,248,247,245,243,241,239
	dc.w	237,234,231,229,226,223,220,216
	dc.w	213,209,206,202,198,194,190,185
	dc.w	181,177,172,167,162,157,152,147
	dc.w	142,137,132,126,121,115,109,104
	dc.w	98,92,86,80,74,68,62,56
	dc.w	50,44,38,31,25,19,13,6

costable:
	dc.w	256,256,256,255,255,254,253,252
	dc.w	251,250,248,247,245,243,241,239
	dc.w	237,234,231,229,226,223,220,216
	dc.w	213,209,206,202,198,194,190,185
	dc.w	181,177,172,167,162,157,152,147
	dc.w	142,137,132,126,121,115,109,104
	dc.w	98,92,86,80,74,68,62,56
	dc.w	50,44,38,31,25,19,13,6
	dc.w	1,-5,-12,-18,-24,-30,-37,-43
	dc.w	-49,-55,-61,-67,-73,-79,-85,-91
	dc.w	-97,-103,-108,-114,-120,-125,-131,-136
	dc.w	-141,-146,-151,-156,-161,-166,-171,-176
	dc.w	-180,-184,-189,-193,-197,-201,-205,-208
	dc.w	-212,-215,-219,-222,-225,-228,-230,-233
	dc.w	-236,-238,-240,-242,-244,-246,-247,-249
	dc.w	-250,-251,-252,-253,-254,-254,-255,-255
	dc.w	-255,-255,-255,-254,-254,-253,-252,-251
	dc.w	-250,-249,-247,-246,-244,-242,-240,-238
	dc.w	-236,-233,-230,-228,-225,-222,-219,-215
	dc.w	-212,-208,-205,-201,-197,-193,-189,-184
	dc.w	-180,-176,-171,-166,-161,-156,-151,-146
	dc.w	-141,-136,-131,-125,-120,-114,-108,-103
	dc.w	-97,-91,-85,-79,-73,-67,-61,-55
	dc.w	-49,-43,-37,-30,-24,-18,-12,-5
	dc.w	1,6,13,19,25,31,38,44
	dc.w	50,56,62,68,74,80,86,92
	dc.w	98,104,109,115,121,126,132,137
	dc.w	142,147,152,158,162,167,172,177
	dc.w	181,185,190,194,198,202,206,209
	dc.w	213,216,220,223,226,229,231,234
	dc.w	237,239,241,243,245,247,248,250
	dc.w	251,252,253,254,255,255,256,256


PLANE:		DC.L	0


SPEED	dc.w	30
GLEMBIA	dc.w	0
ODLICZ	dc.w	0
BUFOR1	dc.w	0
BUFOR2	dc.w	0
OBR	dc.w	0

ANGL	dc.w	0
ANGX	dc.w	0
ANGY	dc.w	0

XPZ	dc.w	156
YPZ	dc.w	124

ANG1	dc.w	0
GLE1	dc.w	200

BUF2	dc.w	0
ANG2	dc.w	0
GLE2	dc.w	200+120

BUF3	dc.w	0
ANG3	dc.w	0
GLE3	dc.w	200+120+120

BUF4	dc.w	0
ANG4	dc.w	0
GLE4	dc.w	200+120+120+120

BUF5	dc.w	0
ANG5	dc.w	0
GLE5	dc.w	200+120+120+120+120

BUF6	dc.w	0
ANG6	dc.w	0
GLE6	dc.w	200+120+120+120+120+120

BUF7	dc.w	0
ANG7	dc.w	0
GLE7	dc.w	200+120+120+120+120+120+120

BUF8	dc.w	0
ANG8	dc.w	0
GLE8	dc.w	200+120+120+120+120+120+120+120

STPOL	dc.w	0

COORDS_1:	dc.l	0
datalines:	dc.l	0

ROTBUF	dc.w	0
ADRES_PAMIECI	dc.l	0
creditsa	dc.l	0
ANGB	dc.w	0
bjb	dc.l	0
