home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
101-125
/
apd108
/
autoexec.amos
/
autoexec.amosSourceCode
next >
Wrap
AMOS Source Code
|
1994-01-01
|
12KB
|
431 lines
'
'
' Music Player V1.0
'
' By
'
' Leslie Benzies
'
' 1990
'
' If you find any bugs etc or just want a chat
'
' Phone 0343 541210
'
'
Dim ZX1(13),ZX2(13),ZY1(13),ZY2(13)
Global MIX,MLOAD,ZX1(),ZX2(),ZY1(),ZY2(),TEMP,VOL
MAIN
Procedure MAIN
On Error Proc ERR
'Set up panel display at bottom of screen
Unpack 9 To 7
TEMP=8
VOL=25
TEMPUP
VOLUP
'
'
'Mouse can only move on panel
Limit Mouse 128,229 To 438,296
'
'
'We need to reserve some ZONEs for the buttons on the panel
Reserve Zone 14
Reset Zone
For ZNO=2 To 13
Read ZX1(ZNO),ZX2(ZNO),ZY1(ZNO),ZY2(ZNO)
Set Zone ZNO,ZX1(ZNO),ZX2(ZNO) To ZY1(ZNO),ZY2(ZNO)
Next ZNO
'
LASTZONE=2
Ink 1
DRWZONE[LASTZONE]
Set Zone 1,0,0 To 10,10
MIX=0
CHTO=2
Do
Wait Vbl
Tempo TEMP*2
Mvolume VOL*2.3
Amreg(0)=63-(VOL*2.3)
Screen 7
If MIX>0 Then Inc MIX
If MIX=1500
Add CHTO,1,3 To 7
CHANGE=1
X=ZX1(CHTO)+148
Y=ZX2(CHTO)+235
X Mouse=X
Y Mouse=Y
MIX=1
End If
'
' Change display ?
If Mouse Key=1 or CHANGE=1
BUTZONE=Hzone(7,X Mouse,Y Mouse)
If BUTZONE>9
On BUTZONE-9 Proc TEMPUP,TEMPDOWN,VOLUP,VOLDOWN
Else
If CHANGE=0
MIX=0
End If
CHANGE=0
' BUTZONE=Hzone(7,X Mouse,Y Mouse)
If(BUTZONE>0 and BUTZONE<>LASTZONE) or BUTZONE>7
Ink 15
DRWZONE[LASTZONE]
Ink 1
DRWZONE[BUTZONE]
LASTZONE=BUTZONE
CHANGE[BUTZONE]
End If
End If
End If
Loop
' Zone Data
Data 14,11,74,24
Data 14,30,74,42
Data 14,49,74,61
Data 84,11,144,24
Data 84,30,144,43
Data 84,49,144,62
Data 235,11,295,23
Data 235,30,295,43
Data 172,22,184,31
Data 187,22,199,31
Data 172,51,184,60
Data 187,51,199,60
End Proc
Procedure WIPE
' clear old stuff
Amal Off
For HC=48 To 210 Step 5
SCN=Scin(200,HC)
If SCN>=0
Shift Off
Screen Close SCN
End If
Next HC
Rainbow Del 0
Sprite Off
Bob Off
End Proc
Procedure CHANGE[SET]
WIPE
On SET-1 Proc SETMIX,SETSTAREQ,SETSPACE,SETDANCE,SETBIGEQ,SETBALLEQ,LMUSIC,OUTAHERE
End Proc
Procedure OUTAHERE
Music Off
Erase 3
WIPE
Screen 7
Fade 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Wait 30
Screen Close 7
Direct
End Proc
Procedure SETMIX
MIX=1499
End Proc
Procedure DRWZONE[ZNUM]
Shared ZX1(),ZX2(),ZY1(),ZY2()
Screen 7
Box ZX1(ZNUM),ZX2(ZNUM) To ZY1(ZNUM),ZY2(ZNUM)
End Proc
Procedure TEMPUP
If TEMP<26
Inc TEMP
Ink 1
Bar 172,19 To 172+TEMP,20
Ink 2
Bar 172+TEMP,19 To 199,20
End If
End Proc
Procedure TEMPDOWN
If TEMP>0
Dec TEMP
Ink 1
Bar 172,19 To 173+TEMP,20
Ink 2
Bar 172+TEMP,19 To 199,20
End If
End Proc
Procedure VOLUP
If VOL<26
Inc VOL
Ink 1
Bar 172,48 To 173+VOL,49
Ink 2
Bar 172+VOL,48 To 199,49
End If
End Proc
Procedure VOLDOWN
If VOL>0
Dec VOL
Ink 1
Bar 172,48 To 173+VOL,49
Ink 2
Bar 172+VOL,48 To 199,49
End If
End Proc
Procedure DISPMESSAGE[T$,MB]
Screen Open 6,640,8,2,Hires
Screen Display 6,128,400,,
Curs Off : Flash Off : Cls 0
Palette $0,$ECA
Centre T$
For I=320 To 120 Step -8
Screen Display 6,128,I,,
Wait Vbl
Next I
If MB=1
Repeat
Until Mouse Key<>0
End If
End Proc
Procedure LMUSIC
Sprite Off
Wait Vbl
FIN$=Fsel$("*.ABK","","Load An AMOS Music Bank")
If FIN$<>""
Open In 1,FIN$
For I=1 To 5
Line Input #1,A$
TYP$=TYP$+A$
Next I
Screen 7
LF=Lof(1)
Close 1
If Instr(TYP$,"Music")>0
Erase 3
Wait Vbl
If LF>=Chip Free
DISPMESSAGE["Sorry, not enough memory to load that bank. Press Mouse Button.",1]
Else
DISPMESSAGE["Please Wait, Loading Music....",0]
Change Mouse 3
Load FIN$
Change Mouse 1
MLOD=1
Music 1
End If
Else
If Instr(TYP$,"AmBk")=0
DISPMESSAGE["Not an AMOS bank. Press Mouse button.",1]
Else
DISPMESSAGE["This is an AMOS bank, but not music. Press Mouse Button.",1]
End If
End If
If MLOD=1
MIX=1499
End If
Screen Close 6
End If
End Proc
Procedure SETSTAREQ
X=1
Set Rainbow 0,9,46,"","",""
Rainbow 0,0,98,44
For F=0 To 44 Step X
Read A
For I=1 To X
Rain(0,F+I)=A
Next I
Next F
Data $1,$2,$3,$4,$5,$6,$7,$8,$9,$A,$B,$C,$D,$E,$F
Data $10F,$20F,$30F,$40F,$50F,$60F,$70F,$80F,$90F,$A0F,$B0F,$C0F,$D0F,$E0F,$F0F
Data $F1F,$F2E,$F3D,$F4C,$F5B,$F6A,$F79,$F88,$F97,$FA6,$FB5,$FC4,$FD3,$FE2,$FF1
Unpack 10 To 0
Screen Display 0,,,,178
Screen Open 2,740,44,2,0
Curs Off : Flash Off : Cls 0 : Palette $0,$AAA,0,0,0,0,0,0,0,$AAA
Screen Open 1,740,44,2,0 : Double Buffer
Curs Off : Flash Off : Cls 0
Screen Display 1,128,98,320,
Screen Offset 1,1,
Screen Display 2,128,98,320,
Wait Vbl
Dual Playfield 2,1
Wait Vbl
Screen 2
For I=1 To 100
Plot Rnd(319),Rnd(44)
Next I
Screen Copy 2,0,0,319,44 To 2,320,0
Screen 1
For I=0 To 3
Channel I To Bob I
Bob I,40+(I*70),44,23
A$="Loop: If V("+Str$(I)+")<14 Jump Nosound else Let R1= RA ; Let R2=R1/3 ; Let R3=R2*2 ; Let Y=R3+3 "
A$=A$+"Nosound: If Y > 43 Jump Downno else Let Y=Y+1"
A$=A$+"Downno: Pause ; Jump Loop ; "
Amal I,A$
Next I
Channel 4 To Screen Offset 2
SC$="Let X=1 ; Loop: Let X=X+4 ; If X < 320 Jump Nochx else Let X=1"
SC$=SC$+" Nochx: Pause ; Jump Loop ; "
Amal 4,SC$
Screen 0
For I=1 To 7 : Colour I,I*$222 : Colour I+7,$0 : Next I
Shift Up 1,1,14,1
Amal On
End Proc
Procedure SETDANCE
Screen Open 0,320,180,2,0 : Double Buffer : Curs Off : Flash Off : Cls 0
Screen To Back
Palette $0,$AAA
Screen Display 0,,48,,180
For I=0 To 3
Channel I To Bob I
Bob I,20+I*80,10,17
A$=" Loop: Let R"+Chr$(I+65)+"=0 ; If V("+Str$(I)+") < 14 Jump Nosound"
A$=A$+" Let R"+Chr$(I+65)+"=1 ; Anim 1,(17,4)(18,4)(19,4)(20,4)(21,4)(22,4); "
A$=A$+"Nosound: Pause ; Jump Loop"
Amal I,A$
Next I
For B=0 To 1
For I=0 To 3
Channel I+4+(B*4) To Bob I+4+(B*4)
If B mod 2=0 Then OFF=20 Else OFF=0
Bob I+4+(B*4),20+I*80+OFF,64+B*54,17
A$=" Loop: If R"+Chr$(I+65)+"=0 Jump Nosound"
A$=A$+" Anim 1,(17,4)(18,4)(19,4)(20,4)(21,4)(22,4); "
A$=A$+"Nosound: Pause ; Jump Loop"
Amal I+4+(B*4),A$
Next I
Next B
Amal On
End Proc
Procedure SETBIGEQ
X=3
Set Rainbow 0,0,186,"","",""
Rainbow 0,0,38,184
For F=0 To 183 Step X
Read A
For I=0 To X-1
Rain(0,F+I)=A
Next I
Next F
Data $1FF,$1FF,$2FF,$3FF,$4FF,$5FF,$6FF,$7FF,$8FF,$9FF,$AFF,$BFF,$CFF,$DFF,$EFF,$FFF
Data $FFE,$FFD,$FFC,$FFB,$FFA,$FF9,$FF8,$FF7,$FF6,$FF5,$FF4,$FF3,$FF2,$FF1,$FF0,$FF0,$FF0,$FF0
Data $FF0,$FF1,$FF2,$FF3,$FF4,$FF5,$FF6,$FF7,$FF8,$FF9,$FFA,$FFB,$FFC,$FFD,$FFE,$FFF
Data $EFF,$DFF,$CFF,$BFF,$AFF,$9FF,$8FF,$7FF,$6FF,$5FF,$4FF,$3FF,$2FF,$1FF,$1FF
Screen Open 0,320,400,4,0 : Curs Off : Flash Off : Cls 0
Palette $0,$8,3,$F,0,0,0,0,0,$8,$3,$F
Screen Display 0,,44,,176
Screen Open 1,320,400,4,0 : Curs Off : Flash Off : Cls 0
Screen Display 1,,44,,176
Wait Vbl
Dual Playfield 0,1
Wait Vbl
For I=0 To 1
Screen I
For Y=0 To 170 Step 15
Ink 1
X1=30+(I*160)
Y1=Y+170
X2=30+(I*160)+100
Y2=Y+180
Bar X1,Y1 To X2,Y2
Ink 2
Bar X1,Y1 To X2,Y1+1
Bar X1,Y1 To X1+1,Y2
Ink 3
Bar X2-1,Y1 To X2,Y2
Bar X1,Y2-1 To X2,Y2
Next Y
Next I
For I=0 To 1
Channel I To Screen Offset I
A$=" Let Y=170 ; Let R0=0 "
A$=A$+"Loop: If R4=V("+Str$(I*2)+") > 0 Jump Setsound ; If V("+Str$((I*2)+1)+") > 0 Jump Setsound"
A$=A$+" Let R0=R0+1 ; If R0 < 3 Jump Notobig else Let R0=0"
A$=A$+"Notobig: If Y < 15 then Jump Greater else If R0 <> 0 Jump Greater ; Let Y=Y-15"
A$=A$+"Greater: Pause ; Jump Loop"
A$=A$+"Setsound: Let R4=RA/6 ; Let R5=R4*15 ; Let Y=170-R5 ; Jump Greater"
Amal I,A$
Next I
Channel 2 To Rainbow 0
A$="Let X=0 ; Loop: For R0=0 To 46 ; Let X=R0*4 ; Pause ; Next R0 ; Jump Loop"
Amal 2,A$
Amal On
End Proc
Procedure SETBALLEQ
X=4
Set Rainbow 0,0,180,"","",""
Rainbow 0,0,49,180
For F=0 To 174 Step X
Read A
For I=1 To X
Rain(0,F+I)=A
Next I
Next F
Data $1,$2,$3,$4,$5,$6,$7,$8,$9,$A,$B,$C,$D,$E,$F
Data $10F,$20F,$30F,$40F,$50F,$60F,$70F,$80F,$90F,$A0F,$B0F,$C0F,$D0F,$E0F,$F0F
Data $F1F,$F2E,$F3D,$F4C,$F5B,$F6A,$F79,$F88,$F97,$FA6,$FB5,$FC4,$FD3,$FE2,$FF1,$FF1,$FF1
Screen Open 0,352,176,8,0
Double Buffer
Curs Off : Flash Off : Cls 0
Palette 0,0,$3,$6,$9,$F
For I=0 To 3
Channel I To Bob I
Bob I,Rnd(300),Rnd(120),15
X1=Rnd(2)+2 : X1$=Str$(X1)
Y1=Rnd(2)+2 : Y1$=Str$(Y1)
A$=" Let R0=4 ; Let R1="+X1$+"; Let R2="+Y1$
A$=A$+"Boop: If V("+Str$(I)+")=0 Jump Nosound else Let R0=4"
A$=A$+"Nosound: If R0>32 Jump Samespd else Let R0=R0+1"
A$=A$+"Samespd: Let A=R0/2"
A$=A$+" Let X=X+R1 ; Let Y=Y+R2 ; "
A$=A$+" If X > 0 Jump Lok else Let R1= "+X1$
A$=A$+"Lok: If X < 320 Jump Rok else Let R1=-"+X1$
A$=A$+"Rok: If Y > -20 Jump Uok else Let R2= "+Y1$
A$=A$+"Uok: If Y < 160 Jump Dok else Let R2=-"+Y1$
A$=A$+"Dok: Pause ; Jump Boop "
Amal I,A$
Next I
Amal On
End Proc
Procedure SETSPACE
Screen Open 0,352*2,180,2,0
Screen Display 0,128+16,38,320,
Curs Off : Flash Off : Cls 0
Palette 0,$888,,,,,,,,$333,,,,,,,0,$ECA,$333,$444,$555,$666,$777,$888,$900,$F40,$F90,$5,$F,$8F,$80,$F00
Flash 31,"(f00,3)(d00,3)(b00,3)(900,3)(700,3)(500,3)(300,3)(100,3)(300,3)(500,3)(700,3)(900,3)(b00,3)(d00,3)"
Screen Open 1,352*2,180,2,0
Screen Display 1,128+16,38,320,
Curs Off : Flash Off : Cls 0
Wait Vbl
Dual Playfield 0,1
Wait Vbl
For SC=0 To 1
Screen SC
For I=1 To 100
Plot Rnd(352),Rnd(180)
Next I
Screen Copy SC,0,0,351,180 To SC,352,0
Next SC
For I=0 To 3
Channel I To Sprite I+8
Sprite I+8,0,48+I*40,1
A$="Let A=1 ; Let X="+Str$(Rnd(400))+" ; Let R0=40 ; Loop: If V("+Str$(I)+")=0 Jump Unsound else Let R0=63-RA"
A$=A$+"Unsound: If R0<7 Jump Samespd else Let R0=R0-1"
A$=A$+"Samespd: Let R1=R0/6 ; Let X=X+R1 ; If X < 450 Jump Notoff else Let X=70"
A$=A$+"Notoff: If X > 50 Jump Bound Let X=450 ; "
A$=A$+"Bound: Pause ; Jump Loop "
Amal I,A$
Next I
Channel 4 To Screen Offset 0
Channel 5 To Screen Offset 1
SC$="Loop: For R0 = 0 To 88 ; Let X=R0*4+1 ; Next R0 ; Jump Loop"
Amal 4,SC$
SC$="Loop: For R0 = 0 To 176 ; Let X=R0*2+1 ; Next R0 ; Jump Loop"
Amal 5,SC$
Amal On
End Proc
Procedure ERR
DISPMESSAGE["Error "+Str$(Errn)+" has occured. Press Mouse Key.",1]
Screen Close 6
Resume Next
End Proc