;Intro coded by Corto in 1990
;Hello to all Angels members !
;This source code is only for Angels members !!! 

;'Ltext:' pour aller au texte
;pour tester: 'A'   'jrun'
;sauvegarde: 'WI' 'filename' 'RUN' 'END'
;'L***' pour voir les commentaires

org $40000
load $40000
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 init_music
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 #%111101111011100111101111,$4f800+38
move.L #%100001001010100011001001,$4f800+44+38
move.L #%100001001011100011001001,$4f800+88+38
move.l #%100001001010010011001001,$4f800+132+38
move.l #%111101111010010011001111,$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 play
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 end_music
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

calcule:
addi #32,y+2
andi #$7fe,y+2
cmpi #$400,y+2
beq.s calc1
tst y+2
bne.s calcs
clr prio+2
bra.s calcs
calc1:move #$40,prio+2
calcs:lea sin,a0
lea cos,a1
lea angels2,a2
lea coord,a3
calculoop:
movem.w (a2)+,d0/d1/d2
move d0,d5
move d1,d6
x:move #$200,d3
muls (a0,d3),d0	
muls (a1,d3),d1
sub.l d1,d0
muls (a1,d3),d5
move d6,d1
muls (a0,d3),d1
add.l d5,d1
asr.l #8,d0
asr.l #2,d0
asr.l #8,d1
asr.l #2,d1
y:move #$600,d3
move d1,d5
move d2,d6
muls (a0,d3),d1
muls (a1,d3),d2
sub.l d2,d1
muls (a1,d3),d5
move d6,d2
muls (a0,d3),d2
add.l d5,d2
asr.l #2,d1
asr.l #8,d2
asr.l #2,d2
z:move #$200,d3
move d2,d5
move d0,d6
muls (a0,d3),d2
muls (a1,d3),d0
sub.l d0,d2
muls (a1,d3),d5
move d6,d0
muls (a0,d3),d0
add.l d5,d0
asr.l #2,d0
asr.l #8,d2
asr.l #6,d2

addi #300,d2
divs d2,d0
divs d2,d1
addi #[44*64],d0
addi #[111*16],d1
move d0,(a3)+
move d1,(a3)+
cmpi #$7777,(a2)
bne.L calculoop
rts

draw:
lea coord,a3
lea angels2l,a4
movem.L vide,d0-d7
move #$8400,$96(a6)
wbbl:btst #$e,2(a6)
bne.s wbbl
move #$400,$96(a6)
move.l #$ffff8000,$72(a6)
move #-1,$44(a6)
move.w #64,$60(a6)
move.w #64,$66(a6)
drawloop1:
Lea bpd,a1
clr.l d0
clr.l d2
move.b (a4)+,d0
move.b (a4)+,d2
lsl.w #2,d0
lsl.w #2,d2
move 2(a3,d0.w),d1
move (a3,d0.w),d0
move 2(a3,d2.w),d3
move (a3,d2.w),d2
asr #4,d0
asr #4,d1
asr #4,d2
asr #4,d3
cmp d1,d3
beq.s draw5
bsr.s drawline
draw5:
cmpi.B #$77,(a4)
bne.s drawloop1
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
angels2:
dc.W -1500,-300,0,-1200,300,0,-1000,300,0,-800,100,0
dc.W -800,300,0,-600,300,0,-600,-300,0,-1000,100,0
dc.W -1000,-300,0,-1300,-150,0,-1200,-150,0,-1200,50,0

dc.w -500,-300,0,-500,300,0,500,300,0,200,200,0,200,100,0
dc.W 300,100,0,300,0,0,200,0,0,200,-150,0,500,-150,0
dc.W 500,-300,0,0,-300,0,0,200,0,-350,200,0
dc.w -350,-200,0,-200,-200,0,-300,0,0,-100,0,0,-100,-300,0

dc.w 600,-300,0,600,300,0,800,300,0,800,-200,0
dc.w 1200,-200,0,900,300,0,1400,300,0,1100,200,0,1400,-300,0
dc.w $7777

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

dc.B 31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,31
dc.w $7777

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

;***
;pour le scrolltext: 4 vitesses (a,b,c,d) - 'z' pour le stopper
;0=fini !

text:
dc.b "b    --- ANGELS ---    z";centré pour 22 caracteres affichables
DC.B "PRESENT A NEW COOL CRACK... "
DC.B "cGREETINGS TO ALL OUR FRIENDS AND CONTACTS !       "
DC.B "bINTRO CODED BY CORTO !          ",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

***************************************************************
**  Amiga FUTURE COMPOSER V1.0 / 1.2 / 1.3   Replay routine  **
***************************************************************

END_MUSIC:
;clr.w onoff
clr.l $dff0a6
clr.l $dff0b6
clr.l $dff0c6
clr.l $dff0d6
move.w #$000f,$dff096
rts

INIT_MUSIC:
;move.w #1,onoff
lea MODULE(pc),a0
lea 100(a0),a1
lea	SEQpoint(pc),a5
move.l a1,(a5)
move.l a0,a1
add.l 8(a0),a1
lea	PATpoint(pc),a5
move.l a1,(a5)
move.l a0,a1
add.l 16(a0),a1
lea	FRQpoint(pc),a5
move.l a1,(a5)
move.l a0,a1
add.l 24(a0),a1
lea	VOLpoint(pc),a5
move.l a1,(a5)
move.l 4(a0),d0
divu #13,d0

lea 40(a0),a1
lea SOUNDINFO+4(pc),a2
moveq #10-1,d1
initloop:
move.w (a1)+,(a2)+
move.l (a1)+,(a2)+
addq.w #4,a2
dbf d1,initloop
moveq #0,d2
move.l a0,d1
add.l 32(a0),d1
lea	waveforms(pc),a5
sub.l a5,d1
lea SOUNDINFO(pc),a0
move.l d1,(a0)+
moveq #9-1,d3
initloop1:
move.w (a0),d2
add.l d2,d1
add.l d2,d1
addq.w #6,a0
move.l d1,(a0)+
dbf d3,initloop1

move.l SEQpoint(pc),a0
moveq #0,d2
move.b 12(a0),d2		;Get replay speed
bne.s speedok
move.b #3,d2			;Set default speed
speedok:
lea	respcnt(pc),a5
move.w d2,(a5)		;Init repspeed counter
lea	repspd(pc),a5
move.w d2,(a5)
INIT2:
lea	audtemp(pc),a5
clr.w (a5)
move.w #$000f,$dff096		;Disable audio DMA
move.w #$0780,$dff09a		;Disable audio IRQ
moveq #0,d7
mulu #13,d0
moveq #4-1,d6			;Number of soundchannels-1
lea V1data(pc),a0		;Point to 1st voice data area
lea silent(pc),a1
lea o4a0c8(pc),a2
initloop2:
move.l a1,10(a0)
move.l a1,18(a0)
clr.l 14(a0)
clr.b 45(a0)
clr.b 47(a0)
clr.w 8(a0)
clr.l 48(a0)
move.b #$01,23(a0)
move.b #$01,24(a0)
clr.b 25(a0)
clr.l 26(a0)
clr.w 30(a0)
moveq #$00,d3
move.w (a2)+,d1
move.w (a2)+,d3
divu #$0003,d3
move.b d3,32(a0)
mulu #$0003,d3
andi.l #$00ff,d3
andi.l #$00ff,d1
addi.l #$dff0a0,d1
move.l d1,a6
move.l #$0000,(a6)
move.w #$0100,4(a6)
move.w #$0000,6(a6)
move.w #$0000,8(a6)
move.l d1,60(a0)
clr.w 64(a0)
move.l SEQpoint(pc),(a0)
move.l SEQpoint(pc),52(a0)
add.l d0,52(a0)
add.l d3,52(a0)
add.l d7,(a0)
add.l d3,(a0)
move.w #$000d,6(a0)
move.l (a0),a3
move.b (a3),d1
andi.l #$00ff,d1
lsl.w #6,d1
move.l PATpoint(pc),a4
adda.w d1,a4
move.l a4,34(a0)
clr.l 38(a0)
move.b #$01,33(a0)
move.b #$02,42(a0)
move.b 1(a3),44(a0)
move.b 2(a3),22(a0)
clr.b 43(a0)
clr.b 45(a0)
clr.w 56(a0)
adda.w #$004a,a0	;Point to next voice's data area
dbf d6,initloop2
rts

PLAY:
lea pervol(pc),a6
;tst.w onoff
;bne.s music_on
;rts
music_on:
lea	respcnt(pc),a5
subq.w #1,(a5)			;Decrease replayspeed counter
bne.s nonewnote
move.w repspd(pc),(a5)		;Restore replayspeed counter
lea V1data(pc),a0		;Point to voice1 data area
bsr.L new_note
lea V2data(pc),a0		;Point to voice2 data area
bsr.L new_note
lea V3data(pc),a0		;Point to voice3 data area
bsr.L new_note
lea V4data(pc),a0		;Point to voice4 data area
bsr.L new_note

nonewnote:
lea	audtemp(pc),a5
clr.w (a5)
lea V1data(pc),a0
bsr.L effects
move.w d0,(a6)+
move.w d1,(a6)+
lea V2data(pc),a0
bsr.L effects
move.w d0,(a6)+
move.w d1,(a6)+
lea V3data(pc),a0
bsr.L effects
move.w d0,(a6)+
move.w d1,(a6)+
lea V4data(pc),a0
bsr.L effects
move.w d0,(a6)+
move.w d1,(a6)+
lea pervol(pc),a6
move.w audtemp(pc),d0
ori.w #$8000,d0			;Set/clr bit = 1
move.w d0,-(a7)
moveq #0,d1
move.l start1(pc),d2		;Get samplepointers
move.w offset1(pc),d1		;Get offset
add.l d1,d2			;Add offset
move.l start2(pc),d3
move.w offset2(pc),d1
add.l d1,d3
move.l start3(pc),d4
move.w offset3(pc),d1
add.l d1,d4
move.l start4(pc),d5
move.w offset4(pc),d1
add.l d1,d5
move.w ssize1(pc),d0		;Get sound lengths
move.w ssize2(pc),d1
move.w ssize3(pc),d6
move.w ssize4(pc),d7
move.w (a7)+,$dff096		;Enable audio DMA
chan1:
lea V1data(pc),a0
tst.w 72(a0)
beq.l chan2
subq.w #1,72(a0)
cmpi.w #1,72(a0)
bne.s chan2
clr.w 72(a0)
move.l d2,$dff0a0		;Set soundstart
move.w d0,$dff0a4		;Set soundlength
chan2:
lea V2data(pc),a0
tst.w 72(a0)
beq.s chan3
subq.w #1,72(a0)
cmpi.w #1,72(a0)
bne.s chan3
clr.w 72(a0)
move.l d3,$dff0b0
move.w d1,$dff0b4
chan3:
lea V3data(pc),a0
tst.w 72(a0)
beq.s chan4
subq.w #1,72(a0)
cmpi.w #1,72(a0)
bne.s chan4
clr.w 72(a0)
move.l d4,$dff0c0
move.w d6,$dff0c4
chan4:
lea V4data(pc),a0
tst.w 72(a0)
beq.s setpervol
subq.w #1,72(a0)
cmpi.w #1,72(a0)
bne.s setpervol
clr.w 72(a0)
move.l d5,$dff0d0
move.w d7,$dff0d4
setpervol:
lea $dff0a6,a5
move.w (a6)+,(a5)	;Set period
move.w (a6)+,2(a5)	;Set volume
move.w (a6)+,16(a5)
move.w (a6)+,18(a5)
move.w (a6)+,32(a5)
move.w (a6)+,34(a5)
move.w (a6)+,48(a5)
move.w (a6)+,50(a5)
rts

NEW_NOTE:
moveq #0,d5
move.l 34(a0),a1
adda.w 40(a0),a1
cmp.w #64,40(a0)
bne.s samepat
move.l (a0),a2
adda.w 6(a0),a2		;Point to next sequence row
cmpa.l 52(a0),a2	;Is it the end?
bne.s notend
move.w d5,6(a0)		;yes!
move.l (a0),a2		;Point to first sequence
notend:
moveq #0,d1
lea	spdtemp(pc),a5
addq.b #1,(a5)
cmpi.b #4,(a5)
bne.s nonewspd
move.b d5,(a5)
move.b -1(a1),d1	;Get new replay speed
beq.s nonewspd
lea	respcnt(pc),a5
move.w d1,(a5)		;store in counter
lea	repspd(pc),a5
move.w d1,(a5)
nonewspd:
move.b (a2),d1		;Pattern to play
move.b 1(a2),44(a0)	;Transpose value
move.b 2(a2),22(a0)	;Soundtranspose value

move.w d5,40(a0)
lsl.w #6,d1
add.l PATpoint(pc),d1	;Get pattern pointer
move.l d1,34(a0)
addi.w #$000d,6(a0)
move.l d1,a1
samepat:
move.b 1(a1),d1		;Get info byte
move.b (a1)+,d0		;Get note
bne.s ww1
andi.w #%11000000,d1
beq.s noport
bra.s ww11
ww1:
move.w d5,56(a0)
ww11:
move.b d5,47(a0)
move.b (a1),31(a0)

		;31(a0) = PORTAMENTO/INSTR. info
			;Bit 7 = portamento on
			;Bit 6 = portamento off
			;Bit 5-0 = instrument number
		;47(a0) = portamento value
			;Bit 7-5 = always zero
			;Bit 4 = up/down
			;Bit 3-0 = value
t_porton:
btst #7,d1
beq.s noport
move.b 2(a1),47(a0)	
noport:
andi.w #$007f,d0
beq.s nextnote
move.b d0,8(a0)
move.b (a1),9(a0)
move.b 32(a0),d2
moveq #0,d3
bset d2,d3
lea	audtemp(pc),a5
or.w d3,(a5)
move.w d3,$dff096
move.b (a1),d1
andi.w #$003f,d1	;Max 64 instruments
add.b 22(a0),d1
move.l VOLpoint(pc),a2
lsl.w #6,d1
adda.w d1,a2
move.w d5,16(a0)
move.b (a2),23(a0)
move.b (a2)+,24(a0)
move.b (a2)+,d1
andi.w #$00ff,d1
move.b (a2)+,27(a0)
move.b #$40,46(a0)
move.b (a2)+,d0
move.b d0,28(a0)
move.b d0,29(a0)
move.b (a2)+,30(a0)
move.l a2,10(a0)
move.l FRQpoint(pc),a2
lsl.w #6,d1
adda.w d1,a2
move.l a2,18(a0)
move.w d5,50(a0)
move.b d5,26(a0)
move.b d5,25(a0)
nextnote:
addq.w #2,40(a0)
rts

EFFECTS:
moveq #0,d7
testsustain:
tst.b 26(a0)		;Is sustain counter = 0
beq.s sustzero
subq.b #1,26(a0)	;if no, decrease counter
bra.L VOLUfx
sustzero:		;Next part of effect sequence
move.l 18(a0),a1	;can be executed now.
adda.w 50(a0),a1
testeffects:
cmpi.b #$e1,(a1)	;E1 = end of FREQseq sequence
beq.L VOLUfx
cmpi.b #$e0,(a1)	;E0 = loop to other part of sequence
bne.s testnewsound
move.b 1(a1),d0		;loop to start of sequence + 1(a1)
andi.w #$003f,d0
move.w d0,50(a0)
move.l 18(a0),a1
adda.w d0,a1
testnewsound:
cmpi.b #$e2,(a1)	;E2 = set waveform
bne.s o49c64
moveq #0,d0
moveq #0,d1
move.b 32(a0),d1
bset d1,d0
lea	audtemp(pc),a5
or.w d0,(a5)
move.w d0,$dff096
move.b 1(a1),d0
andi.w #$00ff,d0
lea SOUNDINFO(pc),a4
add.w d0,d0
move.w d0,d1
add.w d1,d1
add.w d1,d1
add.w d1,d0
adda.w d0,a4
move.l 60(a0),a3
move.l (a4),d1
lea	waveforms(pc),a5
add.l a5,d1
move.l d1,(a3)
move.l d1,68(a0)
move.w 4(a4),4(a3)
move.l 6(a4),64(a0)
swap d1
move.w #$0003,72(a0)
tst.w d1
bne.s o49c52
move.w #$0002,72(a0)
o49c52:
clr.w 16(a0)
move.b #$01,23(a0)
addq.w #2,50(a0)
bra.L o49d02
o49c64:
cmpi.b #$e4,(a1)
bne.s testpatjmp
move.b 1(a1),d0
andi.w #$00ff,d0
lea SOUNDINFO(pc),a4
add.w d0,d0
move.w d0,d1
add.w d1,d1
add.w d1,d1
add.w d1,d0
adda.w d0,a4
move.l 60(a0),a3
move.l (a4),d1
lea	waveforms(pc),a5
add.l a5,d1
move.l d1,(a3)
move.l d1,68(a0)
move.w 4(a4),4(a3)
move.l 6(a4),64(a0)

swap d1
move.w #$0003,72(a0)
tst.w d1
bne.s o49cae
move.w #$0002,72(a0)
o49cae:
addq.w #2,50(a0)
bra.s o49d02
testpatjmp:
cmpi.b #$e7,(a1)
bne.s testnewsustain
move.b 1(a1),d0
andi.w #$00ff,d0
lsl.w #6,d0
move.l FRQpoint(pc),a1
adda.w d0,a1
move.l a1,18(a0)
move.w d7,50(a0)
bra.L testeffects
testnewsustain:
cmpi.b #$e8,(a1)	;E8 = set sustain time
bne.s o49cea
move.b 1(a1),26(a0)
addq.w #2,50(a0)
bra.L testsustain
o49cea:
cmpi.b #$e3,(a1)
bne.s o49d02
addq.w #3,50(a0)
move.b 1(a1),27(a0)
move.b 2(a1),28(a0)
o49d02:
move.l 18(a0),a1
adda.w 50(a0),a1
move.b (a1),43(a0)
addq.w #1,50(a0)
VOLUfx:
tst.b 25(a0)
beq.s o49d1e
subq.b #1,25(a0)
bra.s o49d70
o49d1e:
subq.b #1,23(a0)
bne.s o49d70
move.b 24(a0),23(a0)
o49d2a:
move.l 10(a0),a1
adda.w 16(a0),a1
move.b (a1),d0
cmpi.b #$e8,d0
bne.s o49d4a
addq.w #2,16(a0)
move.b 1(a1),25(a0)
bra.s VOLUfx
o49d4a:
cmpi.b #$e1,d0
beq.s o49d70
cmpi.b #$e0,d0
bne.s o49d68
move.b 1(a1),d0
andi.l #$003f,d0
subq.b #5,d0
move.w d0,16(a0)
bra.s o49d2a
o49d68:
move.b (a1),45(a0)
addq.w #1,16(a0)
o49d70:
move.b 43(a0),d0
bmi.s o49d7e
add.b 8(a0),d0
add.b 44(a0),d0
o49d7e:
andi.w #$007f,d0
lea PERIODS(pc),a1
add.w d0,d0
move.w d0,d1
adda.w d0,a1
move.w (a1),d0
move.b 46(a0),d7
tst.b 30(a0)
beq.s o49d9e
subq.b #1,30(a0)

bra.s o49df4
o49d9e:
move.b d1,d5
move.b 28(a0),d4
add.b d4,d4
move.b 29(a0),d1
tst.b d7
bpl.s o49db4
btst #0,d7
bne.s o49dda
o49db4:
btst #5,d7
bne.s o49dc8
sub.b 27(a0),d1
bcc.s o49dd6
bset #5,d7
moveq #0,d1
bra.s o49dd6
o49dc8:
add.b 27(a0),d1
cmp.b d4,d1
bcs.s o49dd6
bclr #5,d7
move.b d4,d1
o49dd6:
move.b d1,29(a0)
o49dda:
lsr.b #1,d4
sub.b d4,d1
bcc.s o49de4
subi.w #$0100,d1
o49de4:
addi.b #$a0,d5
bcs.s o49df2
o49dea:
add.w d1,d1
addi.b #$18,d5
bcc.s o49dea
o49df2:
add.w d1,d0
o49df4:
eori.b #$01,d7
move.b d7,46(a0)

; DO THE PORTAMENTO THING
moveq #0,d1
move.b 47(a0),d1	;get portavalue
beq.s a56d0		;0=no portamento
cmpi.b #$1f,d1
bls.s portaup
portadown: 
andi.w #$1f,d1
neg.w d1
portaup:
sub.w d1,56(a0)
a56d0:
add.w 56(a0),d0
o49e3e:
cmpi.w #$0070,d0
bhi.s nn1
move.w #$0071,d0
nn1:
cmpi.w #$06b0,d0
bls.s nn2
move.w #$06b0,d0
nn2:
moveq #0,d1
move.b 45(a0),d1
rts

pervol: blk.b 16,0	;Periods & Volumes temp. store
respcnt: dc.w 0		;Replay speed counter 
repspd:  dc.w 0		;Replay speed counter temp
firseq:	 dc.w 0		;First sequence
lasseq:	 dc.w 0		;Last sequence
audtemp: dc.w 0
spdtemp: dc.w 0

V1data:  blk.b 64,0	;Voice 1 data area
offset1: blk.b 02,0	;Is added to start of sound
ssize1:  blk.b 02,0	;Length of sound
start1:  blk.b 06,0	;Start of sound

V2data:  blk.b 64,0	;Voice 2 data area
offset2: blk.b 02,0
ssize2:  blk.b 02,0
start2:  blk.b 06,0

V3data:  blk.b 64,0	;Voice 3 data area
offset3: blk.b 02,0
ssize3:  blk.b 02,0
start3:  blk.b 06,0

V4data:  blk.b 64,0	;Voice 4 data area
offset4: blk.b 02,0
ssize4:  blk.b 02,0
start4:  blk.b 06,0

o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
SEQpoint: dc.l 0
PATpoint: dc.l 0
FRQpoint: dc.l 0
VOLpoint: dc.l 0

SILENT: dc.w $0100,$0000,$0000,$00e1

PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
	dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
	dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
	dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
	dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
	dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
	dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
	dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
	dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
	dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
	dc.w $10d0,$0fe0,$0f00,$0e28

SOUNDINFO:
;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 

;Reserved for samples
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
	dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
;Reserved for synth sounds
	dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
	dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
	dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
	dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
	dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
	dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
	dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
	dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
	dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
	dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
	dc.w $0000,$0510 ,$0018 ,$0000 ,$0018

WAVEFORMS:
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070

MODULE:		;*** juste changer le nom 
incbin "mod.tristar"


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
