;intro coded by HIPPO in 1990
;Hello to all makeready members !
;This source code is only for makeready members !!! 

;'Ltext:' --> jumps to text area
;change the text then hit rightamiga+shiftup+A in seka 1.60
;Save as binary: 'WI' 'filename' 'RUN' 'END'
;'L***' for comments

org $30000
load $30000
;code
run:
movem.L d0-d7/a0-a6,-(sp)
bsr.L save_all
lea sinus,a1
lea sin,a0
move #1023,d7
run1:
move (a0)+,d0
muls #44,d0
divs #$400,d0
muls #44,d0
ext.l d0
move.L d0,(a1)+
dbra d7,run1

rn7:lea $50000,a0
move #20607,d7
run01:
clr.l (a0)+
dbra d7,run01
;bsr.L rectifzoom
bsr.L makecopper
lea $dff000,a6
move #$3fff,$9a(a6)
move #$c000,$9a(a6)
move #$3fff,$96(a6)
move #$83e0,$96(a6)
move.L #$3d7921c9,$8e(a6)
move.l #$3000d8,$92(a6)
move.L #copperlist,$80(a6)
clr $88(a6)
bsr.L mt_init
lea $6ff800,a6
lea copspr+2,a0
move.L #set1,d0
bsr.s is
move.l #set2,d0
bsr.s is
move.l #set3,d0
bsr.s is
move.l #set4,d0
bsr.s is
move.l #set5,d0
bsr.s is
move.l #set6,d0
bsr.s is
move.l #setf,d0
bsr.s is
move.l #setf,d0
bsr.s is
clr.b set6-7
add.l a6,a6
move.L #%100010101111101111101111,$4f800+38
move.L #%100010101000101000101001,$4f800+44+38
move.L #%111110101111101111101001,$4f800+88+38
move.l #%100010101000001000001001,$4f800+132+38
move.l #%100010101000001000001111,$4f800+176+38

bra.s wait
is:
move d0,4(a0)
swap d0
move d0,(a0)
addq.l #8,a0
rts

wait:
cmpi.b #1,6(a6)
bne.s wait
tst.B 5(a6)
bne.s wait
move.L bpw,d0
move.L bpa,bpw
move.l d0,bpa
subi.l #size2,d0
move d0,copbpl1+6
swap d0
move d0,copbpl1+2
swap d0
addi.L #88,d0
move d0,copbpl1+14
swap d0
move d0,copbpl1+10

move #-1,bready
bsr.L clear

move.L bpw1,d0	;3D
move.L bpa1,bpw1
move.l d0,bpa1
move d0,copbpl2+6
swap d0
move d0,copbpl2+2

move.b delai,d0
add.b d0,wait1
tst.b wait1
bne.s irq1
bsr.L print
irq1:
bsr.L stars
;bsr.L calcule
bsr.L mt_music
lea $dff000,a6
;bsr.L color
move #$8400,$96(a6)
brdy:tst bready
bne.s brdy
move #$400,$96(a6)

bsr.L sinuscroll
;bsr.L draw
move #$8400,$96(a6)
wbl12:btst #6,2(a6)
bne.s wbl12
move #$400,$96(a6)

btst #6,$bfe001
bne.L wait
bsr.L mt_end
bsr.L restore_all
movem.L (sp)+,d0-d7/a0-a6
rts
wait1:dc.b 0
delai:dc.b $40
delai5:dc.b 0
even
delai2:dc.l $c9f00000
speedtable:dc.W $10f9,$20e9,$40c9,$8089
bready:dc.w -1

clea:move.L a6,-(a7)
move sr,-(a7)
lea $dff000,a6
move #$40,$9c(a6)
move #$8400,$96(a6)
clea1:btst #$6,2(a6)
bne.s clea1
move #$400,$96(a6)
move #20+0,$66(a6)
move.l #bpd+256,$54(a6)
move.L #$1000000,$40(a6)
move.L #intend,$6c
move #13974,$58(a6)
move (a7)+,sr
move.L (a7)+,a6
rte

intend:move sr,-(a7)
move #$40,$dff09c
move #$3fff,$dff09a
move #$c000,$dff09a
clr bready
move (a7)+,sr
rte

fill:movem.L d0/a6,-(a7)
move sr,-(a7)
lea $dff000,a6
move #$40,$9c(a6)
move.l bpw1,d0
addi.l #13952+42,d0
move.l #$140014,$64(a6)
move.l #bpd+13952+42,$50(a6)
move.L d0,$54(a6)
move.L #$9f00012,$40(a6)
move.l #cycle,$6c
move #13974,$58(a6)
move (a7)+,sr
movem.L (a7)+,d0/a6
rte

;rectifzoom:
;lea angels2,a2
;recl1:move (a2),d0
;ext.l d0
;lsl.l #8,d0
;divs #176,d0
;move d0,(a2)+
;cmpi #$7777,(a2)
;bne.s recl1
;;lea angels2,a2
;recl2:
;move #1200,4(a2)
;addq.l #6,a2
;cmpi #$7777,(a2)
;bne.s recl2
;rts

cols:dc.w -1
;color:move y+2,d0
and #$780,d0
;cmp y+2,d0
bne.s color1
lea col3d+2,a0
tst cols
bmi.s color2
add #$101,(a0)
cmpi #$1010,(a0)
bne.s color1
move #-1,cols
move #$f0f,(a0)
rts
color2:sub #$101,(a0)
cmpi #$707,(a0)
bne.s color1
clr cols
move #$808,(a0)
color1:rts


ymax:dc.w $d9
ymin:dc.W 5
ymax2:dc.w $d9
ymin2:dc.w 5

drawline:
cmp d1,d3
bhi.s line1
exg d0,d2
exg d1,d3
line1:
sub d1,d3
sub d0,d2
bpl.s line2
neg d2
moveq #11,d4
cmp d3,d2
bcs.s line3
moveq #23,d4
exg d2,d3
bra.s line3
line2:moveq #3,d4
cmp d3,d2
bcs.s line3
moveq #19,d4
exg d2,d3
line3:
add d2,d2
move d2,d5
sub d3,d5
cmp d2,d3
bcs.s line4
bset #6,d4
line4:lsl #6,d1
add.L d1,a1
move d0,d1
lsr #4,d1
add d1,d1
add d1,a1
and #$f,d0
add d0,d0
move table_points(pc,d0.w),d1
lsl.b #3,d0
move.b #$b,con1+2
or.b d0,con1+2
move #$8400,$96(a6)
wbl10:btst #6,2(a6)
bne.s wbl10
move #$400,$96(a6)
eor d1,(a1)
move.l a1,$48(a6)
move.l a1,$54(a6)
move d5,$52(a6)
sub d3,d5
move d5,$64(a6)
move d2,$62(a6)
move d4,$42(a6)
con1:move #$b5a,$40(a6)
addq.w #1,d3
lsl #6,d3
addq.w #2,d3
move d3,$58(a6)
rts
table_points:dc.w $8000,$4000,$2000,$1000,$800,$400,$200,$100,$80
dc.w $40,$20,$10,8,4,2,1

bpa1:dc.L bp3
bpw1:dc.L bp4

stars:
lea set5+1,a0
move #15-1,d7
spriteloop:
add.B #5,(a0)
add.l #8,a0
dbra d7,spriteloop
lea set6+1,a0
move #15,d7
spriteloopa:
add.B #6,(a0)
add.l #8,a0
dbra d7,spriteloopa
lea set3+1,a0
move #21,d7
spriteloop2:
add.b #3,(a0)
add.l #8,a0
dbra d7,spriteloop2
lea set4+1,a0
move #21,d7
sprite2loopa:
add.B #4,(a0)
add.L #8,a0
dbra d7,sprite2loopa
lea set1+1,a0
move #31,d7
spriteloop3:
add.b #1,(a0)
add.l #8,a0
dbra d7,spriteloop3
lea set2+1,a0
move #31,d7
spriteloop3a:
add.b #2,(a0)
add.l #8,a0
dbra d7,spriteloop3a
rts

;***
;scrolltext: 4 speeds (a,b,c,d) - 'z' is the stopper
;0=finished !

text:
dc.b "d                                      "
DC.B "b M A K E   R E A D Y  z";center for 22 characters wide
DC.B "d                                      "
DC.B "bPRESENTS A NEW COOL DEMO... "
DC.B "cGREETINGS TO POWIE SPOCK CHESSMASTER AND ALL PALS.........."
DC.B "cLIKE OEP  BETRAYER   JAM MASTER   QUINN AND ALL GUYS ON THE "
DC.B "c SCENE.....  ALL GROUPS THAT ARE ACTIVE LIKE PARADOX "
DC.B "c  SKID ROW   MASTERS   TSL   CLASSIC   SCOOPEX   EP "
DC.B "b  HAVE  A   MERRY   CHRISTMAS.......      "
DC.B "c  THIS INTRO WAS CODED IN THE LAST DAYS OF 1990 BY "

DC.B "d                                      "
DC.B "b ---- H I P P O ----  z"
DC.B "d                                               "
DC.B "a  SEASONS  GREETINGS FROM THE MAKEREADY/MASTERS "
DC.B "a  TEAM...............   " 
DC.B "b IF YOU GET TOO PISSED CALL A TAXI "
DC.B "bTO DRIVE YOU HOME.DONT DRINK AND DRIVE  ",0 

even
textptr:dc.l text

clear:
clr $66(a6)
move.l #-1,$44(a6)
move.l bpw,$54(a6)
move.L #$1000000,$40(a6)
move.l #fill,$6c
move #$40,$9c(a6)
move #$c040,$9a(a6)
move #7190,$58(a6)
rts

sinuscroll:move #$8400,$96(a6)
wab:btst #6,2(a6)
bne.s wab
move.L #$dfc0000,$40(a6)
move #42,$62(a6)
move #44,$64(a6)
move #42,$66(a6)
move #-1,$46(a6)
move.l bpw,d5
addi.L #2112,d5
move #$f000,d6
clr.L d3
move.L sinusc,a5
subi.l #32,a5
cmpi.L #sinus-32,a5
bne.s sinc1
lea sinusf-32,a5
sinc1:move.L a5,sinusc
move #87,d7
move.l #scroll,d4
sinscri:move.L (a5),d2
addi.L #16,a5
cmpi.L #sinusf,a5
bne.s sinloop2
lea sinus,a5
sinloop2:
add.l d5,d2
move #$8400,$96(a6)
wbl:btst #6,2(a6)
bne.s wbl
move #$400,$96(a6)
move.L d4,$50(a6)
move.l d2,$4c(a6)
move.L d2,$54(a6)
move d6,$44(a6)
move #1025,$58(a6)
lsr #4,d6
tst d6
bne.s sinloop1
move #$f000,d6
addq.L #2,d4
addq.L #2,d5
sinloop1:
dbra d7,sinscri
move #$8400,$96(a6)
sinscrend:
btst #6,2(a6)
bne.s sinscrend
move #$400,$96(a6)
rts

sinusc:dc.l sinus+2048

print:
tst.b delai5
bne.s printoff
clr.l d0
move.l textptr,a0
move.b (a0)+,d0
tst.b d0
beq.s fini
move.l a0,textptr
cmpi.b #$60,d0
bcc.s spechg
sub.b #$20,d0
lsl.b #1,d0
add.l #fonte,d0
move.l d0,a0
lea scroll+44,a1
move #15,d7
print1:
move (a0)+,(a1)+
addi.L #118,a0
addi.l #44,a1
dbra d7,print1
printoff:rts
fini:
move.l #text,textptr
bra.s print
spechg:
cmpi.b #"z",d0
beq.s spechg1
sub #$61,d0
lsl #1,d0
lea speedtable,a0
move (a0,d0.w),d0
move.b d0,delai2
lsr #8,d0
move.b d0,delai
clr.b wait1
bra.L print

spechg1:move.b #-1,delai5
bra.L print
clr.b d0
sub.B delai,d0
move.b d0,wait1
rts

cycle:move sr,-(a7)
tst.b delai5
bne.s cycle1
move #$40,$dff09c
move.l #scroll-2,$dff054
move.l #scroll,$dff050
move.l delai2,$dff040
move.l #$ffffffff,$dff044
clr.l $dff064
move.L #clea,$6c
move.w #1048,$dff058
move (a7)+,sr
rte
cycle1:subq.b #1,delai5
move (a7)+,sr
bra.L clea
fonte:
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $000003E0,$0E380000,$03800004,$000001C0,$00F80F80,$008003C0
dc.l $00000000,$00000008,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000FF0,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
dc.l $000003E0,$1F7C0000,$03801C0E,$0FF003E0,$01F007C0,$008003C0
dc.l $00000000,$0000001C,$0FF00180,$0FF03FF8,$781E7FFE,$0FF07FF0
dc.l $0FF007F0,$00000000,$00000000,$00003FFC,$00000FF0,$7FF00FF0
dc.l $7FF00FFE,$0FFE0FF0,$781E3FFC,$001E781E,$78007C3E,$7FF00FF0
dc.l $7FF00FF0,$7FF00FFE,$7FF8781E,$781E781E,$781E7878,$7FFE0000
dc.l $000003E0,$1F7C0000,$1FF03E1F,$3FFC03E0,$03E003E0,$01C003C0
dc.l $00000000,$0000003E,$3FFC0780,$3FFC3FFE,$781E7FFE,$3FFC7FFC
dc.l $3FFC3FFC,$01C001C0,$00000000,$00003FFC,$00003FFC,$7FFC3FFC
dc.l $7FFC3FFE,$3FFE3FFC,$781E3FFC,$001E783E,$78007E7E,$7FFC3FFC
dc.l $7FFC3FFC,$7FFC3FFE,$7FF8781E,$781E781E,$781E7878,$7FFE0000
dc.l $000003E0,$1F7C0080,$3FF83E3E,$3C3C03E0,$03E003E0,$01C003C0
dc.l $00000000,$0000007F,$3C3C1F80,$3C3C001E,$781E7800,$3C3C7FFC
dc.l $3C3C3C3C,$03E003E0,$00007FFF,$00007FFE,$00003C3C,$783C3C3C
dc.l $783C3C00,$3C003C3C,$781E03C0,$001E787C,$78007FFE,$783C3C3C
dc.l $783C3C3C,$783C3C00,$0780781E,$781E781E,$7C3E7878,$001E0000
dc.l $000003E0,$0F3C0140,$3FF83E7C,$781E01E0,$07C001F0,$03E003C0
dc.l $00000000,$000000FE,$781E0780,$781E000F,$781E7800,$781E7FFE
dc.l $781E781E,$03E003E0,$00007FFF,$0000783E,$0000781E,$781E781E
dc.l $781E7800,$7800781E,$781E03C0,$001E78F8,$78007BDE,$781E781E
dc.l $781E781E,$781E7800,$0780781E,$781E781E,$3C3C7878,$001E0000
dc.l $000003E0,$06180220,$3B801CF8,$781E00C0,$07C001F0,$7FFF03C0
dc.l $00007FFF,$000001FC,$781E0780,$001E000F,$781E7800,$7800003E
dc.l $781E781E,$03E003E0,$00007FFF,$0000003C,$0000781E,$781E781E
dc.l $781E7800,$7800781E,$781E03C0,$001E79F0,$7800799E,$781E781E
dc.l $781E781E,$781E7800,$0780781E,$781E781E,$3E7C7878,$001E0000
dc.l $000003E0,$0C3007F0,$3FF001F0,$7C3E0180,$07C001F0,$3FFE7FFF
dc.l $00007FFF,$000003F8,$781E0780,$003C001F,$781E7800,$7C00001E
dc.l $7C3E3C3E,$01C001C0,$00007FFF,$0000007C,$0000781E,$783E781E
dc.l $781E7800,$78007800,$781E03C0,$001E7BE0,$7800781E,$781E781E
dc.l $783C781E,$783C3C00,$0780781E,$781E781E,$1FF87CF8,$003C0000
dc.l $000003E0,$00000A28,$3FF803E0,$3FFC0000,$07C001F0,$1FFC7FFF
dc.l $00007FFF,$000007F0,$7C1E0780,$0FFC03FE,$7FFE7FF0,$7FF0001E
dc.l $3FFC3FFE,$00000000,$00000000,$000001F8,$00007FFE,$7FFC7C00
dc.l $7C1E7FE0,$7FE07C7E,$7FFE07C0,$003E7FF0,$7C007C1E,$7C1E7C1E
dc.l $7FFC7C1E,$7FFC3FF0,$0F807C1E,$7C3E799E,$0FF03FF0,$0FFC0000
dc.l $000003E0,$00001144,$1FF807C0,$3FFC0000,$07C001F0,$0FF87FFF
dc.l $01C07FFF,$00000FE0,$7E1E0780,$3FF003FE,$7FFE7FFC,$7FFC003E
dc.l $3FFC0FFE,$01C001C0,$00007FFF,$000003E0,$00007FFE,$7FFC7E00
dc.l $7E1E7FE0,$7FE07E7E,$7FFE0FC0,$007E7FF0,$7E007E1E,$7E1E7E1E
dc.l $7FF07E1E,$7FF80FFC,$1F807E1E,$3E7C7BDE,$1FF83FF0,$3FF00000
dc.l $00000000,$00003FFE,$03B80F9C,$781E0000,$07C001F0,$0FF87FFF
dc.l $03E00000,$00001FC0,$7E1E0780,$3E00003F,$007E007C,$783C007E
dc.l $781E001E,$03E003E0,$00007FFF,$000003C0,$00007E1E,$7E1E7E1E
dc.l $7E1E7E00,$7E007E1E,$7E1E0FC0,$787E7EF8,$7E007E1E,$7E1E7E1E
dc.l $7E007E1E,$7E3C003C,$1F807E1E,$3FFC7FFE,$3FFC1FE0,$3E000000
dc.l $000001C0,$00000000,$3FF81F3E,$781E0000,$07C001F0,$1FFC03C0
dc.l $03E00000,$01C03F80,$7E3E0780,$7C00003F,$007E003E,$783E007E
dc.l $781E783E,$03E003E0,$00007FFF,$00000000,$00007E1E,$7E1E7E3E
dc.l $7E3E7E00,$7E007E3E,$7E1E0FC0,$7E7E7EF8,$7E007E1E,$7E1E7E3E
dc.l $7E007E3E,$7E1E003E,$1F807E3E,$1FF87FFE,$3FFC0780,$7C000000
dc.l $000003E0,$00000000,$3FF83E3E,$7FFE0000,$03E003E0,$1E3C03C0
dc.l $03E00000,$03E07F00,$7FFE7FF8,$7FFE3FFF,$007E7FFE,$7FFE007E
dc.l $7FFE7FFE,$03E003E0,$00007FFF,$00000180,$00007E1E,$7FFE7FFE
dc.l $7FFE7FFE,$7E007FFE,$7E1E3FFC,$7FFE7E7C,$7FFE7E1E,$7E1E7FFE
dc.l $7E007FFE,$7E1E7FFE,$1F807FFE,$0FF07FFE,$7E7E0780,$7FFE0000
dc.l $000003E0,$00000000,$1FF07C3E,$3FFF0000,$03E003E0,$380E03C0
dc.l $01E00000,$03E03E00,$3FFC7FF8,$7FFE3FFE,$007E7FFC,$3FFC007E
dc.l $3FFC3FFC,$01C001E0,$00000000,$000003C0,$00007E1E,$7FFC3FFC
dc.l $7FFC3FFE,$7E003FFC,$7E1E3FFC,$3FFC7E7C,$3FFE7E1E,$7E1E3FFC
dc.l $7E003FF8,$7E1E7FFC,$1F803FFC,$07E07FFE,$7E7E0780,$7FFE0000
dc.l $000003E0,$00000000,$0380381C,$3FFE0000,$01F007C0,$200203C0
dc.l $00C00000,$03E01C00,$3FFC7FF8,$7FFE3FFE,$007E7FFC,$3FFC007E
dc.l $3FFC3FFC,$000000C0,$00000000,$000003C0,$00007E1E,$7FFC3FFC
dc.l $7FFC3FFE,$7E003FFC,$7E1E3FFC,$3FFC7E3E,$3FFE7E1E,$7E1E3FFC
dc.l $7E003FFE,$7E1E7FFC,$1F803FFC,$03C07E7E,$7C3E0780,$7FFE0000
dc.l $000001C0,$00000000,$03801000,$0FF40000,$00F80F80,$000003C0
dc.l $01800000,$01C00800,$0FF07FF8,$7FFE3FF8,$007E7FF0,$0FF0007E
dc.l $0FF00FF0,$00000180,$00000000,$00000180,$00007E1E,$7FF00FF0
dc.l $7FF00FFE,$7E000FF0,$7E1E3FFC,$0FF07E3E,$0FFE7E1E,$7E1E0FF0
dc.l $7E000FE6,$7E1E7FF0,$1F800FF0,$01807C3E,$7C3E0780,$7FFE0000

save_all:
move.L 4,a6
jsr -132(a6)
move.b #%10000111,$bfd100
move.l $6c,save_vecteur_irq
move.w $dff01c,save_intena
or.w #$c000,save_intena
move.w $dff002,save_dmacon
or.w #$8100,save_dmacon
rts
restore_all:
move.l save_vecteur_irq,$6c
move.w #$7fff,$dff09a
move.w save_intena,$dff09a
move.w #$7fff,$dff096
move.w save_dmacon,$dff096
move.l 4,a6
lea name_glib,a1
moveq #0,d0
jsr -552(a6)
move.l d0,a0
move.l 38(a0),$dff080
clr.w $dff088
move.L 4,a6
jsr -138(a6)
rts
save_intena:dc.w 0
save_dmacon:dc.w 0
save_vecteur_irq:dc.l 0
name_glib:dc.b "graphics.library",0
even

makecopper:
lea cop1,a0
move.L #$740ffffe,d0
move #111,d6
mcl0:
move.l d0,(a0)+
move.L #$1820000,(a0)+
move.l #$1860000,(a0)+
add.L #$1000000,d0
dbra d6,mcl0

lea cop1+6,a0
lea deg,a1
move #6,d6
mcl5:
move (a1)+,d0
move (a1)+,d1
move (a1),d2
move #15,d7
mcl6:
move d0,(a0)
move d0,4(a0)
add.L #12,a0
add d1,d0
dbra d7,mcl6
dbra d6,mcl5
rts

mcs1:dc.w 0

;deg:dc.W $f00,$0,$f00,$10,$ff0,-$100,$f0,1,$ff,-$10,$f,$100,$f0f,-1
deg:dc.W 0,1,$f,$10,$ff,$100,$fff,0,$fff,-$100,$ff,-$10,$f,-1

copperlist:
dc.L $9683e0
copspr:dc.l $1200000,$1220000,$1240000,$1260000,$1280000,$12a0000
dc.L $12c0000,$12e0000,$1300000,$1320000,$1340000,$1360000
dc.L $1380000,$13a0000,$13c0000,$13e0000
dc.l $1020000,$1080000,$10a0014
prio:dc.L $1040040
dc.l $1800000,$1820fff,$1840888,$1860fff
col3d:dc.L $1920f0f
dc.w	$01a0,$0000 ,$01a2,$099a ,$01a4,$0778 ,$01a6,$0334
dc.w	$01a8,$0000 ,$01aa,$0667 ,$01ac,$0445 ,$01ae,$0223
dc.w	$01b0,$0000 ,$01b2,$0fff ,$01b4,$0aaa ,$01b6,$0666
dc.l $370ffffe,$1800002
dc.l $380ffffe,$1800004
dc.L $390ffffe,$1800007
dc.l $3a0ffffe,$1800004
dc.l $3b0ffffe,$1800002
dc.L $3c0ffffe,$1800000
copbpl1:dc.l $e00000,$e20000,$e80000,$ea0000
copbpl2:dc.l $e40000,$e60000
dc.l $3d0ffffe,$1003600
cop1:blk.b 112*12
dc.l $ffdffffe,$1001200
dc.L $190ffffe,$960020,$9683c0,$1000200,$e00004,$e2f800
dc.L $1a20000,$1a40000,$1a60000,$1aa0000,$1ac0000,$1ae0000
dc.l $1b20000,$1b40000,$1b60000
dc.l $1b0ffffe,$1001200,$1820fff
dc.l $1c0ffffe,$1800002,$1820eee
dc.l $1d0ffffe,$1800004,$1820ddd
dc.L $1e0ffffe,$1800007,$1820ccc
dc.l $1f0ffffe,$1800004,$1820bbb
dc.l $200ffffe,$1800002,$1000200
dc.L $210ffffe,$1800000
dc.L -2

bpa:dc.l bp1
bpw:dc.L bp2


;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
;ญ   NoisetrackerV1.0 replayroutine   ญ
;ญ Mahoney & Kaktus - HALLONSOFT 1989 ญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

;mt_data=$58000

mt_init:lea	mt_data,a0
	move.l	a0,a1
	add.l	#$3b8,a1
	moveq	#$7f,d0
	moveq	#0,d1
mt_loop:move.l	d1,d2
	subq.w	#1,d0
mt_lop2:move.b	(a1)+,d1
	cmp.b	d2,d1
	bgt.s	mt_loop
	dbf	d0,mt_lop2
	addq.b	#1,d2

	lea	mt_samplestarts(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	add.l	#$43c,d2
	add.l	a0,d2
	move.l	d2,a2
	moveq	#$1e,d0
mt_lop3:clr.l	(a2)
	move.l	a2,(a1)+
	moveq	#0,d1
	move.w	42(a0),d1
	asl.l	#1,d1
	add.l	d1,a2
	add.l	#$1e,a0
	dbf	d0,mt_lop3

	or.b	#$2,$bfe001
	move.b	#$6,mt_speed
	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	clr.b	mt_songpos
	clr.b	mt_counter
	clr.w	mt_pattpos
	rts

mt_end:	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	move.w	#$f,$dff096
	rts

mt_music:
	movem.l	d0-d4/a0-a3/a5-a6,-(a7)
	lea	mt_data,a0
	addq.b	#$1,mt_counter
	move.b	mt_counter,D0
	cmp.b	mt_speed,D0
	blt.s	mt_nonew
	clr.b	mt_counter
	bra	mt_getnew

mt_nonew:
	lea	mt_voice1(pc),a6
	lea	$dff0a0,a5
	bsr	mt_checkcom
	lea	mt_voice2(pc),a6
	lea	$dff0b0,a5
	bsr	mt_checkcom
	lea	mt_voice3(pc),a6
	lea	$dff0c0,a5
	bsr	mt_checkcom
	lea	mt_voice4(pc),a6
	lea	$dff0d0,a5
	bsr	mt_checkcom
	bra	mt_endr

mt_arpeggio:
	moveq	#0,d0
	move.b	mt_counter,d0
	divs	#$3,d0
	swap	d0
	cmp.w	#$0,d0
	beq.s	mt_arp2
	cmp.w	#$2,d0
	beq.s	mt_arp1

	moveq	#0,d0
	move.b	$3(a6),d0
	lsr.b	#4,d0
	bra.s	mt_arp3
mt_arp1:moveq	#0,d0
	move.b	$3(a6),d0
	and.b	#$f,d0
	bra.s	mt_arp3
mt_arp2:move.w	$10(a6),d2
	bra.s	mt_arp4
mt_arp3:asl.w	#1,d0
	moveq	#0,d1
	move.w	$10(a6),d1
	lea	mt_periods(pc),a0
	moveq	#$24,d7
mt_arploop:
	move.w	(a0,d0.w),d2
	cmp.w	(a0),d1
	bge.s	mt_arp4
	addq.l	#2,a0
	dbf	d7,mt_arploop
	rts
mt_arp4:move.w	d2,$6(a5)
	rts

mt_getnew:
	lea	mt_data,a0
	move.l	a0,a3
	move.l	a0,a2
	add.l	#$c,a3
	add.l	#$3b8,a2
	add.l	#$43c,a0

	moveq	#0,d0
	move.l	d0,d1
	move.b	mt_songpos,d0
	move.b	(a2,d0.w),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.w	mt_pattpos,d1
	clr.w	mt_dmacon

	lea	$dff0a0,a5
	lea	mt_voice1(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0b0,a5
	lea	mt_voice2(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0c0,a5
	lea	mt_voice3(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0d0,a5
	lea	mt_voice4(pc),a6
	bsr.s	mt_playvoice
	bra	mt_setdma

mt_playvoice:
	move.l	(a0,d1.l),(a6)
	addq.l	#4,d1
	moveq	#0,d2
	move.b	$2(a6),d2
	and.b	#$f0,d2
	lsr.b	#4,d2
	move.b	(a6),d0
	and.b	#$f0,d0
	or.b	d0,d2
	tst.b	d2
	beq.s	mt_setregs
	moveq	#0,d3
	lea	mt_samplestarts(pc),a1
	move.l	d2,d4
	subq.l	#$1,d2
	asl.l	#2,d2
	mulu	#$1e,d4
	move.l	(a1,d2.l),$4(a6)
	move.w	(a3,d4.l),$8(a6)
	move.w	$2(a3,d4.l),$12(a6)
	move.w	$4(a3,d4.l),d3
	tst.w	d3
	beq.s	mt_noloop
	move.l	$4(a6),d2
	asl.w	#1,d3
	add.l	d3,d2
	move.l	d2,$a(a6)
	move.w	$4(a3,d4.l),d0
	add.w	$6(a3,d4.l),d0
	move.w	d0,8(a6)
	move.w	$6(a3,d4.l),$e(a6)
	move.w	$12(a6),$8(a5)
	bra.s	mt_setregs
mt_noloop:
	move.l	$4(a6),d2
	add.l	d3,d2
	move.l	d2,$a(a6)
	move.w	$6(a3,d4.l),$e(a6)
	move.w	$12(a6),$8(a5)
mt_setregs:
	move.w	(a6),d0
	and.w	#$fff,d0
	beq	mt_checkcom2
	move.b	$2(a6),d0
	and.b	#$F,d0
	cmp.b	#$3,d0
	bne.s	mt_setperiod
	bsr	mt_setmyport
	bra	mt_checkcom2
mt_setperiod:
	move.w	(a6),$10(a6)
	and.w	#$fff,$10(a6)
	move.w	$14(a6),d0
	move.w	d0,$dff096
	clr.b	$1b(a6)

	move.l	$4(a6),(a5)
	move.w	$8(a6),$4(a5)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	move.w	$14(a6),d0
	or.w	d0,mt_dmacon
	bra	mt_checkcom2

mt_setdma:
	move.w	#$12c,d0
mt_wait:dbf	d0,mt_wait
	move.w	mt_dmacon,d0
	or.w	#$8000,d0
	move.w	d0,$dff096
	move.w	#$12c,d0
mt_wai2:dbf	d0,mt_wai2
	lea	$dff000,a5
	lea	mt_voice4(pc),a6
	move.l	$a(a6),$d0(a5)
	move.w	$e(a6),$d4(a5)
	lea	mt_voice3(pc),a6
	move.l	$a(a6),$c0(a5)
	move.w	$e(a6),$c4(a5)
	lea	mt_voice2(pc),a6
	move.l	$a(a6),$b0(a5)
	move.w	$e(a6),$b4(a5)
	lea	mt_voice1(pc),a6
	move.l	$a(a6),$a0(a5)
	move.w	$e(a6),$a4(a5)

	add.w	#$10,mt_pattpos
	cmp.w	#$400,mt_pattpos
	bne.s	mt_endr
mt_nex:	clr.w	mt_pattpos
	clr.b	mt_break
	addq.b	#1,mt_songpos
	and.b	#$7f,mt_songpos
	move.b	mt_songpos,d1
	cmp.b	mt_data+$3b6,d1
	bne.s	mt_endr
	clr.b	mt_songpos
mt_endr:tst.b	mt_break
	bne.s	mt_nex
	movem.l	(a7)+,d0-d4/a0-a3/a5-a6
	rts

mt_setmyport:
	move.w	(a6),d2
	and.w	#$fff,d2
	move.w	d2,$18(a6)
	move.w	$10(a6),d0
	clr.b	$16(a6)
	cmp.w	d0,d2
	beq.s	mt_clrport
	bge.s	mt_rt
	move.b	#$1,$16(a6)
	rts
mt_clrport:
	clr.w	$18(a6)
mt_rt:	rts

mt_myport:
	move.b	$3(a6),d0
	beq.s	mt_myslide
	move.b	d0,$17(a6)
	clr.b	$3(a6)
mt_myslide:
	tst.w	$18(a6)
	beq.s	mt_rt
	moveq	#0,d0
	move.b	$17(a6),d0
	tst.b	$16(a6)
	bne.s	mt_mysub
	add.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	bgt.s	mt_myok
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
mt_myok:move.w	$10(a6),$6(a5)
	rts
mt_mysub:
	sub.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	blt.s	mt_myok
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
	move.w	$10(a6),$6(a5)
	rts

mt_vib:	move.b	$3(a6),d0
	beq.s	mt_vi
	move.b	d0,$1a(a6)

mt_vi:	move.b	$1b(a6),d0
	lea	mt_sin(pc),a4
	lsr.w	#$2,d0
	and.w	#$1f,d0
	moveq	#0,d2
	move.b	(a4,d0.w),d2
	move.b	$1a(a6),d0
	and.w	#$f,d0
	mulu	d0,d2
	lsr.w	#$6,d2
	move.w	$10(a6),d0
	tst.b	$1b(a6)
	bmi.s	mt_vibmin
	add.w	d2,d0
	bra.s	mt_vib2
mt_vibmin:
	sub.w	d2,d0
mt_vib2:move.w	d0,$6(a5)
	move.b	$1a(a6),d0
	lsr.w	#$2,d0
	and.w	#$3c,d0
	add.b	d0,$1b(a6)
	rts

mt_nop:	move.w	$10(a6),$6(a5)
	rts

mt_checkcom:
	move.w	$2(a6),d0
	and.w	#$fff,d0
	beq.s	mt_nop
	move.b	$2(a6),d0
	and.b	#$f,d0
	tst.b	d0
	beq	mt_arpeggio
	cmp.b	#$1,d0
	beq.s	mt_portup
	cmp.b	#$2,d0
	beq	mt_portdown
	cmp.b	#$3,d0
	beq	mt_myport
	cmp.b	#$4,d0
	beq	mt_vib
	move.w	$10(a6),$6(a5)
	cmp.b	#$a,d0
	beq.s	mt_volslide
	rts

mt_volslide:
	moveq	#0,d0
	move.b	$3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	mt_voldown
	add.w	d0,$12(a6)
	cmp.w	#$40,$12(a6)
	bmi.s	mt_vol2
	move.w	#$40,$12(a6)
mt_vol2:move.w	$12(a6),$8(a5)
	rts

mt_voldown:
	moveq	#0,d0
	move.b	$3(a6),d0
	and.b	#$f,d0
	sub.w	d0,$12(a6)
	bpl.s	mt_vol3
	clr.w	$12(a6)
mt_vol3:move.w	$12(a6),$8(a5)
	rts

mt_portup:
	moveq	#0,d0
	move.b	$3(a6),d0
	sub.w	d0,$10(a6)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	cmp.w	#$71,d0
	bpl.s	mt_por2
	and.w	#$f000,$10(a6)
	or.w	#$71,$10(a6)
mt_por2:move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	rts

mt_portdown:
	clr.w	d0
	move.b	$3(a6),d0
	add.w	d0,$10(a6)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	cmp.w	#$358,d0
	bmi.s	mt_por3
	and.w	#$f000,$10(a6)
	or.w	#$358,$10(a6)
mt_por3:move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	rts

mt_checkcom2:
	move.b	$2(a6),d0
	and.b	#$f,d0
	cmp.b	#$e,d0
	beq.s	mt_setfilt
	cmp.b	#$d,d0
	beq.s	mt_pattbreak
	cmp.b	#$b,d0
	beq.s	mt_posjmp
	cmp.b	#$c,d0
	beq.s	mt_setvol
	cmp.b	#$f,d0
	beq.s	mt_setspeed
	rts

mt_setfilt:
	move.b	$3(a6),d0
	and.b	#$1,d0
	asl.b	#$1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts
mt_pattbreak:
	not.b	mt_break
	rts
mt_posjmp:
	move.b	$3(a6),d0
	subq.b	#$1,d0
	move.b	d0,mt_songpos
	not.b	mt_break
	rts
mt_setvol:
	cmp.b	#$40,$3(a6)
	ble.s	mt_vol4
	move.b	#$40,$3(a6)
mt_vol4:move.b	$3(a6),$8(a5)
	rts
mt_setspeed:
	move.b	$3(a6),d0
	and.w	#$1f,d0
	beq.s	mt_rts2
	clr.b	mt_counter
	move.b	d0,mt_speed
mt_rts2:rts

mt_sin:
dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18

mt_periods:
dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
dc.w $007f,$0078,$0071,$0000,$0000

mt_speed:	dc.b	$6
mt_songpos:	dc.b	$0
mt_pattpos:	dc.w	$0
mt_counter:	dc.b	$0

mt_break:	dc.b	$0
mt_dmacon:	dc.w	$0
mt_samplestarts:blk.l	$1f,0
mt_voice1:	blk.w	10,0
		dc.w	$1
		blk.w	3,0
mt_voice2:	blk.w	10,0
		dc.w	$2
		blk.w	3,0
mt_voice3:	blk.w	10,0
		dc.w	$4
		blk.w	3,0
mt_voice4:	blk.w	10,0
		dc.w	$8
		blk.w	3,0


mt_data:		;*** just change the music mod's name. (noisetracker)
incbin "mod.ingame" ; change between quotes


sinus:blk.b 4096,0
sinusf:
setf:blk.b 4,0
set:
incbin "set1"
set1=set
set2=set1+256
set3=set2+256
set4=set3+$b0
set5=set4+$b0
set6=set5+$80
blk.b $80
sin:
incbin "sincos"
cos=sin+$200
vide:blk.b 32,0

end:
coord:

bp3=$57000
bp4=bp3+17920
bpd=bp4+17920

size1=112*44
size2=2420
scroll=$50000
bp1=scroll+746+size2
bp2=bp1+4928+88+size2+size2
