
org  $40000
load $40000

; HEY YO!! NOW LOAD >> SINE-DATA << INTO ADR. $41000

*********************************************************************
*              ALL CODING WAS DONE BY LITEACE OF DEXION             *
*********************************************************************

; SINE DATA FROM ADR.   $41000-$41200
; SPRITE DATA FROM ADR. $41200,$41a00

RUN:
	move.l 4,a6
	jsr -132(a6)
	lea.l $50000	,a0		; erase the memory from
era_1:					; $50000-$55000
	move.b #$00	,(a0)+
	cmp.l #$55000	,a0
	bne era_1
	move.w #$0020	,$dff096	
	move.l $6c	,interadr
	move.l #Interrupt,$6c		; set new irq
MOUSE:	
	btst #6		,$bfe001	; check on mouse-button
	bne mouse
	move.w #$8020	,$dff096
	move.l interadr,$6c
	move.l 4	,a6
	jsr -138(a6)
	clr.l d0
	rts

interrupt:
movem.l a0-a6/d0-d7,-(sp)	
move.l #copper	,$dff084
clr.w $dff08a
move.w #$83a0	,$dff096	

ra1:
	cmp.b #$f0	,$dff006
	bne ra1
	move.w #$000f	,$dff180	; raster timer
	jsr spritetale
	move.w #$0000	,$dff180

movem.l (sp)+,a0-a6/d0-d7	;also $d019
jmp $fc0cd8			; jmp $ea31
interadr:dc.l 0

*********************************************
* FROM HERE YOU HAVE TO FILL IN YOUR DIGITS *
*********************************************

spd_x1:		dc.b $fd
spd_x2:		dc.b $04
spd_x3:		dc.b $06
spd_y1:		dc.b $fd
spd_y2:		dc.b $04
spd_y3:		dc.b $0a

add_x1:		dc.b $0e
add_x2:		dc.b $03
add_x3:		dc.b $ee
add_y1:		dc.b $fc
add_y2:		dc.b $06
add_y3:		dc.b $e9

SPRITETALE:
	move.b spd_x1	,d0
	add.b d0	,sinex1+3	 
	move.b spd_x2	,d0
	add.b d0	,sinex3+3
	move.b spd_x3	,d0
	add.b d0	,sinex5+3
	move.b spd_y1	,d0
	add.b d0	,siney1+3
	move.b spd_y2	,d0
	add.b d0	,siney3+3
	move.b spd_y3	,d0
	add.b d0	,siney5+3
	move.l sinex1	,sinex2
	move.l sinex3	,sinex4
	move.l sinex5	,sinex6
	move.l siney1	,siney2
	move.l siney3	,siney4
	move.l siney5	,siney6

	lea.l $41200	,a0		; spritelocation y
	lea.l $41201	,a1		; spritelocation x
	move.b #$08	,spr_nr		; number of sprites
	move.b add_x1	,d3
	move.b add_x2	,d4
	move.b add_x3	,d0

	move.b add_y1	,d5
	move.b add_y2	,d6
	move.b add_y3	,d7
spr_loop:
	add.b d3	,sinex2+3
	add.b d4	,sinex4+3
	add.b d0	,sinex6+3
	add.b d5	,siney2+3
	add.b d6	,siney4+3
	add.b d7	,siney6+3

	move.l siney2	,a2
	move.b (a2)	,d1
	move.l siney4	,a2
	move.b (a2)	,d2
	add.b d2	,d1
	move.l siney6	,a2
	move.b (a2)	,d2
	add.b d2	,d1

	add.b #$22	,d1
	move.b d1	,(a0)
	add.l #$02	,a0		
	add.b #$15	,d1		; sprite height
	move.b d1	,(a0)
	sub.l #$02	,a0

	move.l sinex2	,a2
	move.b (a2)	,d1
	move.l sinex4	,a2
	move.b (a2)	,d2
	add.b d2	,d1
	move.l sinex6	,a2
	move.b (a2)	,d2
	add.b d2	,d1
	move.l d1	,d2
	lsr.b #$01	,d1
	add.b #$4a	,d1
	move.b d1	,(a1)
	and.b #1	,d2
	add.l #$02	,a1
	move.b d2	,(a1)
	sub.l #$02	,a1

	add.l #$00f0	,a0		
	add.l #$00f0	,a1	; MEMORY SPACE FOR EACH SPRITE	
	subq.b #$01	,spr_nr
	bne spr_loop
	rts

spr_nr:	dc.b $00
	even

*****************
* WORK POINTERS *
*****************

SINEx1:		dc.l $41000	
SINEx2:		dc.l $41000
SINEx3:		dc.l $41000
SINEx4:		dc.l $41000
SINEx5:		dc.l $41000 
SINEx6:		dc.l $41000
SINEy1:		dc.l $41100
SINEy2:		dc.l $41100
SINEy3:		dc.l $41100	
SINEy4:		dc.l $41100
SINEy5:		dc.l $41100	
SINEy6:		dc.l $41100

;********************
;*   COPPER LISTE   *  
;********************

COPPER:
	dc.w $0013,$ff10
	dc.w $0180,$0000,$0182,$0000
	dc.w $0100,$1200,$0102,$0000
	dc.w $0108,$0000,$010a,$0000
	dc.w $00e0,$0005,$00e2,$0000

	dc.w $01a2,$060c,$01a4,$050a,$01a6,$0408	; spr col 1-2
	dc.w $01aa,$060c,$01ac,$050a,$01ae,$0408	; spr col 3-4
	dc.w $01b2,$060c,$01b4,$050a,$01b6,$0408	; spr col 5-6
	dc.w $01ba,$060c,$01bc,$050a,$01be,$0408	; spr col 7-8

        dc.w $0120,$0004,$0122,$1200			; pointers 1-8
        dc.w $0124,$0004,$0126,$12f0
	dc.w $0128,$0004,$012a,$13e0
        dc.w $012c,$0004,$012e,$14d0
        dc.w $0130,$0004,$0132,$15c0
        dc.w $0134,$0004,$0136,$16b0
        dc.w $0138,$0004,$013a,$17a0
	dc.w $013c,$0004,$013e,$1890
       	dc.w $ffff,$fffe		 ; end of copper-shit

