ùúùú  
ï  4  wÿ=;  ÿ=;ÿ=;  aÿ=;;Jest to próba zrobienia explodujâcego cli

;lb_0e
IloscP	equ	40	;iloôê puzli [80]
Szerokosc	equ	40
Screen	equ	$60000
*******************************************************************************
*			      ZMIENNE SYSTEMOWE				      *
*******************************************************************************

Custom		equ	$dff000
Openlibrary	equ	-552
CloseLibrary	equ	-414
;OwnBlitter	equ	-456 ;gfx
;DisOwnBlitter	equ	-462 ;gfx

*******************************************************************************
*			 	    MACRO				      *
*******************************************************************************

CLEAR:	MACRO
	moveq	#0,\1
	ENDM

EXEC:	MACRO
	move.l	4.w,a6
	ENDM

OPEN:	MACRO
	moveq	#0,d0
	lea	\1,a1
	EXEC
	jsr	OpenLibrary(a6)
	beq.w	Error
	ENDM

WAITBLITTER:	MACRO
	btst	#14,2(a5)
	bne.s	*-6
	ENDM
;sinus.short

*******************************************************************************
*			 	   START				      *
*******************************************************************************


	Section	ExplodingCli,Code

	move.l	#Run,$80.w
	trap	#0
	rts

Run:
	movem.l	d0-d7/a0-a6,-(sp)
	lea	Custom,a5

	bsr	FindScreen
	bsr	ChangeForBlitter
	bsr	ZrobPuzleTable
	lea	SinX(pc),a0
	bsr	ChangeSinus
	lea	SinY(pc),a0
	bsr	ChangeSinus
	bsr	DoYTable	;sinus*40

	OPEN	GfxName(pc)
	move.l	d0,GfxBase
	move.l	d0,a1
	CLEAR	d0
	jsr	CloseLibrary(a6)

;	move.l	GfxBase(pc),a6
;	jsr	OwnBlitter(a6)

	lea	BitplanAdr,a0	;copper
	moveq	#1-1,d0
	move.l	#Screen,d1
;	move.l	Ekran(pc),d1
	moveq	#Szerokosc,d4
	bsr	CoppLoop


	lea	Copper,a0
	move.l	a0,$80(a5)


	move.w	#$0022,$62(a5) ;BltBMod przeniesiony
	move.l	#Screen,$4c(a5) ;BLTBPT przeniesiony
	move.w	#(32*64)+(48/16),d4	;BLTSIZE
	move.w	#-1,$46(a5)		;BLTALWM

*******************************************************
;Start
*******************************************************

ScrollAgain:

More:
	btst	#6,$bfe001 ;LMB
	beq.w	End			;LMB = End

	move.w	#$002,$180(a5)

Vertical:
	move.l	4(a5),d0
	and.l	#$0001ff00,d0
	cmp.l	#$00012000,d0
	bne.s	Vertical

	move.w	#$000,$180(a5)

	btst	#2,$16(a5)
	beq.s	Vertical


	WAITBLITTER

;BlitterClear
	move.l	#Screen,$54(a5)		;BLTDPT
	move.l	#$1000000,$40(a5)	;BLTCON0 i 1
	clear	d0
	move.l	d0,$64(a5)		;BLTAMOD i d
	move.w	#[256*64]+[40/2],$58(a5)	;BLTSIZE


;wyrzucone poza pentle !
	WAITBLITTER
*	*
;BltBMod przeniesiony przed start !
;w d4 jest bltsize przed start
	move.l	#$00000022,$64(a5)		;BLTAMOD i d
	move	#-1,$44(a5)		;BLTAFWM
	move.l	a4,$50(a5)		;BLTAPT

;d5,$dff04c ;BLTBPT,d5,$dff054;BLTDPT na pocztku


	lea	Siny(pc),a2
	lea	Sinx(pc),a3
	move.l	#Screen,d5

	lea	PuzzleTable(pc),a1
	lea	Puzzle,a4
	moveq	#Ilosc_Puzli-1,d7

PuzzleLoop:

	movem.w	(a1),d0/d5	;przsuniëcie siny
;	move.w	(a1),d5
	cmp.w	#$8000,(a2,d0.w)
	bne.s	lb_06
	moveq	#0,d0		;czyôê przesuniëcie
lb_06
	add.w	(a2,d0.w),d5	;+y
	addq.w	#2,d0
	move.w	d0,(a1)+	;przesuniëcie
	move.w	d5,(a1)+	;gdy ujemny to nie widoczny

	movem.w	(a1),d0-d1
	cmp.w	#$8000,(a3,d0.w);przsuniëcie sinx
	bne.s	lb_07
	moveq	#0,d0		;czyôê przesuniëcie
lb_07
	add.w	(a3,d0.w),d1	;+x
	addq.w	#2,d0
	move.w	d0,(a1)+
	move.w	d1,(a1)+	;gdy ujemny to nie widoczny

	tst.w	d5
	bmi.s	lb_0a
	tst.w	d1
	bmi.s	lb_0a
	cmp.w	#320-32,d1	;x
	bpl.s	lb_0a


	move.w	d1,d3
	lsr.w	#4,d3
	add.w	d3,d3
	add.w	d3,d5	;destignation
	and.w	#$000f,d1 ;przesuniëcie w prawo
	add.w	d1,d1

	WAITBLITTER

	move.w	MinternTable(pc,d1.w),$40(a5) ;bltcon0

;	move.w	#$dfc,$40(a5)	;BLTCON0 D=A+B

	move.l	a4,$50(a5)	;BLTAPT
	move.w	d5,$4e(a5)	;BLTBPT
	move.w	d5,$56(a5)	;BLTDPT
	move.w	d4,$58(a5)	;bltsize

lb_0a
	lea	[32*6](a4),a4		;Branie+xxx
	dbf	d7,PuzzleLoop


	bra.w	More

MinternTable:
 dc $0dfc,$1dfc,$2dfc,$3dfc,$4dfc,$5dfc,$6dfc,$7dfc,$8dfc,$9dfc,$adfc,$bdfc
 dc $cdfc,$ddfc,$edfc,$fdfc


**************************************************
End:
**************************************************
	move.l	4.w,a6
	lea	GfxName(pc),a1
	jsr	-408(a6)		;Open
	move.l	d0,a1			;Baza w a1
	move.l	38(a1),$80(A5)		;wystaruj Stary Copp.
	jsr	-414(a6)	;Close

	movem.l	(sp)+,d0-a6
Error:	rte

DoyTable:
;robi lepsze sinusy
	lea	SinY(pc),a0
	moveq	#0,d0
	moveq	#40,d1
Ylop:
	move.w	(a0),d0
	cmp.w	#$8000,d0
	bne.s	lb_05
	rts
lb_05
	muls	d1,d0
	move.w	d0,(a0)+
	bra.s	Ylop

CoppLoop:
;a0 adres gdzie wrzucaê (copper)
;d0 iloôê bitplanow -1 (5-1=4)
;d1 adr ekranu do relokacji
;d2-d3 niewaûne
;d4 szerokoôê ekranu w bajtach (przesuniecie pom kolejn bitplanami

 move	#$e0,d3
Coppl
 move.l	d1,d2
 swap d2
 move d3,(a0)+	;e0,e4 itd
 addq#2,d3
 move d2,(a0)+	;adres
 move.l d1,d2
 add.l d4,d1		;Adr nast Bitpl.
 move d3,(a0)+	;e2,e6
 addq#2,d3
 move d2,(a0)+	;adres
 dbf d0,CoppL
 rts

Changeforblitter:
;zamienia obraz w hi resie na .l,0 next line .l,0 itd
 move.l Ekran(pc),a0
 lea Puzzle,a1
 moveq#Ilosc_Puzli-1,d1
 moveq#10,d2
lb_09
 moveq#32-1,d0
lb_01
 move.l(a0),(a1)
 addq.l#6,a1
 lea 80(a0),a0
 dbf d0,lb_01
 lea[-80*32+4](a0),a0
 subq#1,d2
 bne.s lb_0d
 moveq#10,d2
 lea[80*31+40](a0),a0
lb_0d
 dbf d1,lb_09
 rts
ChangeSinus:	;przerabia sinus na przesuniëcia 10,12 na 0,+2
 move.w(a0),first
lb_03
 move.w(a0),d0
 move.w 2(a0),d1
 bpl.s lb_02
 sub.w first(pc),d0
 move.w d0,(a0)
 rts
lb_02
 sub.w d1,d0
 move.w d0,(a0)+
 bra.s lb_03
ZrobPuzleTable:	;robi tabele pozycji puzzli
;	dc.w	2,100*40,2,50, 4,100*40,4,82, 6,100*40,6,114
 moveq#IloscP-1,d7
 moveq#0,d0 ;siny
 move#0*40,d1 ;starty
 moveq#0,d2 ;sinx
 moveq#20,d3 ;startx
 lea PuzzleTable(pc),a0
 moveq#10,d4 ;10-0
lb_0b
 move d0,(a0)+ ;siny
 move d1,(a0)+ ;y
 move d2,(a0)+ ;sinx
 move d3,(a0)+ ;x
 addq#2,d0 ;siny+2
 addq#2,d2 ;sinx+2
 add#32,d3 ;x+32
 subq#1,d4
 bne.s lb_0c
 moveq#10,d4
 add#32*40,d1 ;y+32
 moveq#20,d3 ;startx
; moveq#0,d0
; moveq#0,d2
lb_0c
 dbf d7,lb_0b
 rts

FindScreen:

	Open	IntuitionName(pc)
	move.l	d0,IntuiBase
	move.l	d0,a1
	move.l	52(a1),a2	;ActiveWindow
	move.l	50(a2),a2	;rastport
	move.l	4(a2),a2	;bitmap
	move.l	8(a2),Ekran	;adres 1
	move.l	12(a2),Ekran2	;adres 2 bitplanu
;	move.l	12(a2),d2	;2 bpl adr !!

	CLEAR	d0
	jsr	CloseLibrary(a6)

	moveq	#0,d0
	rts
*******************************************************************************
*				      DANE				      *
*******************************************************************************
Ekran
	dc.l	0
Ekran2
	dc.l	0
first
	dc.w	0
GfxBase
	dc.l	0
gfxname
	dc.b	'graphics.library',0,0
IntuiBase
	dc.l	0
IntuitionName
	dc.b	'intuition.library',0

;pzesuniecie siny*2  posy*40  sinx*2 posx i od nowa
PuzzleTable:
;	dc.w	2,100*40,2,50, 4,100*40,4,82, 6,100*40,6,114
	blk.l	IloscP*2

EP	dc.l	0,0,0,0

Ilosc_Puzli = [Ep-Puzzletable]/8


SinY:
	include	'df0:Wave.explodeY.inc'
 dc $8000,$8000,$8000,$8000
 dc $8000,$8000,$8000,$8000
SinX
	include	'df0:Wave.explodeX100-180.inc'
 dc $8000,$8000,$8000,$8000
 dc $8000,$8000,$8000,$8000


	Section	Copper,Data_C

**************************************************
Copper:
**************************************************
	dc.w $0100,$2200	;Bptlcontrol reg.
	dc.w $0102,$0000,$0104,$0000	;Sprite/Gfx priorit
	dc.w $0108,$0000,$010a,$0000
	dc.w $0092,$0038,$0094,$00d0
	dc.w $008e,$30c1	;diwstrt
	dc.w $0090,$30fe	;diwstop
	dc.w $180,$000,$182,$fff,$184,$ccc,$186,$999
	dc.w $188,$666,$18a,$ff0,$18c,$cc0,$18e,$990

;Clear Sprites
	dc.l $01200000,$01220000,$01240000,$01260000
	dc.l $01280000,$012a0000,$012c0000,$012e0000
	dc.l $01300000,$01320000,$01340000,$01360000
	dc.l $01380000,$013a0000,$013c0000,$013e0000

;	dc.w $3101,-2,$180,$f,$3201,-2,$180,0,$182,$ccc

;	dc.w	$af01,-2

BitplanAdr:
	dc.w	$e0,6,$e2,0,$e4,7,$e6,0

;	dc.w $0180,$0000,$0182,$ccc,$184,$ddd,$186,$ccc

;	dc.w $ffdf,-2
;	dc.w $2401,-2,$180,$f,$2501,-2,$180,0,$182,0

	dc.l	-2,-2

	Section	PuzleFormat,Bss_C
Puzzle:
;.l puzla, 0 nastëpne .l puzla,0
	ds.l	Ilosc_Puzli*[32*6]

