home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 55
/
Amiga_Dream_55.iso
/
RISCOS
/
MAGAZINE
/
LABOS
/
KING.ZIP
/
King
/
!FUNQTM
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1998-01-11
|
32KB
|
1,394 lines
FUNQTM by -KING- (a french TECHNO & HARD-ROCK lover guy).
Bubles code by STONER
All code in this basic file by KING. Exept some screen deformations.
Bugs: _VU=0 is forgotten in the equalizer.
_Position malfunction in the last sequences.
_WHITH in the intro.
_Volume fade (default).
_Sequence sur le compteur fausse (essayer avec un scud court)
"<KINGBasicLib$Dir>.General"
"<KINGBasicLib$Dir>.Disk"
"<FUNQTM$Dir>.Share"
PathApp$="<FUNQTM$Dir>"
Assemble_Shell
OS_SpriteOp%=&2E
General
Error
DefColours
Rnd(2000))
mode("X1024 Y768 C256")
Cycle%=0
Block% 100
PTable%(36)
a%=0
PTable%(a%)
Ugly ACORN, ugly...
'&!Block%=7:Block%!4=150:Block%!8=-1
"OS_ReadVduVariables",Block%,Block%
(Block%!4<2*!Block%)
"OS_ChangeDynamicArea",2,N*!Block%-Block%!4
Amiga stereo
"QTM_Stereo",1,-127
"QTM_Stereo",4,-127
"QTM_Stereo",2,127
"QTM_Stereo",3,127
"QTM_RestoreChannel",1
"QTM_RestoreChannel",2
"QTM_RestoreChannel",3
"QTM_RestoreChannel",4
"QTM_VUBarControl",2,-1
Bank%=0
"<FUNQTM$Dir>.Balls"
InitBalls
ScreenArea% 1024*768*2
ScreenArea%!0=1024*768*2
ScreenArea%!4=0
ScreenArea%!8=16
ScreenArea%!12=16
OS_SpriteOp%,9+512,ScreenArea%
RGam% 255
GGam% 255
BGam% 255
Arrow% 5000
Cross% 5000
Radar% 5000
RadioActive% 5000
Star% 5000
World% 5000
Bub%=10
lx(Bub%),ly(Bub%),lz(Bub%),depth(1024)
Matrix% 4*6
U/ColourOffset%=152:
Oh my god!!!!! 40+24+82
W+Patterns$="<FUNQTM$Dir>.Draw.Patterns."
Load(Arrow%,Patterns$+"Arrow")
Load(Cross%,Patterns$+"Cross")
Load(Radar%,Patterns$+"Radar")
Load(RadioActive%,Patterns$+"RadioActive")
Load(Star%,Patterns$+"Star")
Load(World%,Patterns$+"World")
FadeSpeed%=10
setpal(-90,-90,-90)
Write(1)
128,0,0,0
"QTM_DMABuffer"
V%<=0
h. *QTMLoad "<FUNQTM$Dir>.Mods.IN_YA_FACE" x
*QTMStart
k5*Render "<FUNQTM$Dir>.Draw.Intro" 1.5 0 0 1.5 0 0
Screen(1)
angle=-90
angle+=FadeSpeed%
setpal(angle,angle,angle)
angle>=0
setpal(0,0,0)
EXIT%(4)
BACK%(4)
PAUSE%(4)
BALLS%(4)
SAMPLES%(4)
WAVES%(4)
AUTHOR%(4)
XNEXT%(4)
EXIT%(0)=1700
EXIT%(1)=1900
EXIT%(2)=1400
EXIT%(3)=1500
BALLS%(0)=200
BALLS%(1)=400
BALLS%(2)=700
BALLS%(3)=850
SAMPLES%(0)=500
SAMPLES%(1)=800
SAMPLES%(2)=700
SAMPLES%(3)=800
AUTHOR%(0)=900
AUTHOR%(1)=1100
AUTHOR%(2)=700
AUTHOR%(3)=800
WAVES%(0)=1200
WAVES%(1)=1400
WAVES%(2)=700
WAVES%(3)=800
PAUSE%(0)=1700
PAUSE%(1)=1800
PAUSE%(2)=700
PAUSE%(3)=800
PauseFlag%=
Debug%=TRUE
Flag%=
VUSpeed%=5
X%=XScreen%*2
Y%=YScreen%*2
MargeX%=1/10*X%
MargeY%=1/20*Y%
Space%=1/10*Y%
EqualW%=(X%-2*MargeX%)/2
%EqualH%=(Y%-2*MargeY%-3*Space%)/4
Max%=743 :
Counter%=0
Digit%=EqualW%/36
VUR%=EqualH%/2
Eyes%=0
Last1%=0
Last2%=0
LastSeq1%=0
LastSeq2%=0
Timer%=0
EqCR%=255
EqCG%=150
EqCB%=100
EqCR%=180
EqCG%=180
EqCB%=255
EqCR%=100
EqCG%=255
EqCB%=150
EqCR%=100
EqCG%=150
EqCB%=255
)EqCol%=
FindColour(EqCR%,EqCG%,EqCB%)
CurrentSpl%(5)
CurrentSpl%()=1
BR%=255
BG%=150
BB%=100
Light purple
BR%=255
BG%=150
BB%=255
Blue-Green
BR%=100
BG%=255
BB%=150
Deep Blue
BR%=0
BG%=0
BB%=150
Yellow
BR%=255
BG%=255
BB%=150
"ColourTrans_ConvertHSVToRGB",
(360)<<16,
(32768)+32768,65536
BR%,BG%,BB%
BR%=BR%/65536*255
BG%=BG%/65536*255
BB%=BB%/65536*255
RLim%=50
PRINT BR%,BG%,BB%
"QTM_Info"
Track%,Author%,Origin%,Channels%,Length%
"QTM_ReadSongLength"
NbSeq%,NbPat%
Counter=0
Coci%=1
Piano%(36,4,4)
Block% 100
(2)=1
BA%=10
BA%=5
PROCsetpal(-90,-90,-90)
Background drawing loop. **************************************
Write(2)
n%=0
Z%=n%
Flag%=
K%=100
Iy%=Y%/K%
IC=256/K%
r%=0 : g%=0 : b%=0
y%=0
Y%-Iy%
r%=r
r%,g%,b%
0,y%,r%,y%+Iy%
r=r%
r+=IC
128,BR%,BG%,BB%
BStar,
BCircle,
Patterns
8*Render "<FUNQTM$Dir>.Draw.LOGO" 0.5 0 0 0.5 1550 50
1800,1100
0,255,0
0,0,160+50+10
SetCol(Black%)
(A)*160,
(A)*160,50
255,255,0
(A)*160,
(A)*160,40
SetCol(Black%)
0,0,175
255,0,0
0,0,160
0,0,100
/2+2*
/NbSeq%
(A)*160,
(A)*160
Drawing PANEL.
3= *Render "<FUNQTM$Dir>.Draw.Panel" 0.35 0 0 0.35 1550 700
Drawing END button.
5: *Render "<FUNQTM$Dir>.Draw.END" 0.3 0 0 0.3 1600 1400
Button to 3D world.
("Render <FUNQTM$Dir>.Draw.Balls 0.2 0 0 0.2 "+
(BALLS%(0))+" "+
(BALLS%(2)))
Button to samples.
("Render <FUNQTM$Dir>.Draw.Samples 0.2 0 0 0.2 "+
(SAMPLES%(0))+" "+
(SAMPLES%(2)))
Button to KING's page.
("Render <FUNQTM$Dir>.Draw.Author 0.2 0 0 0.2 "+
(AUTHOR%(0))+" "+
(AUTHOR%(2)))
Button to the Waves part.
("Render <FUNQTM$Dir>.Draw.Waves 0.2 0 0 0.2 "+
(WAVES%(0))+" "+
(WAVES%(2)))
R%=255:G%=0:B%=0
VoicePanel(MargeX%,MargeY%+0*(EqualH%+Space%))
R%=0:G%=255:B%=0
VoicePanel(MargeX%,MargeY%+1*(EqualH%+Space%)-50)
R%=0:G%=0:B%=255
VoicePanel(MargeX%,MargeY%+2*(EqualH%+Space%)+50)
R%=255:G%=0:B%=255
VoicePanel(MargeX%,MargeY%+3*(EqualH%+Space%))
PROCDrawButtons
0 : *ScreenSave "<FUNQTM$Dir>.Scr1"
1 : *ScreenSave "<FUNQTM$Dir>.Scr2"
Angle=0
angle-=FadeSpeed%
setpal(-angle,angle,angle)
angle<=-90
Write(1)
OS_SpriteOp%,10+512,ScreenArea%,"<FUNQTM$Dir>.Scr1"
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,0,0
Write(2)
OS_SpriteOp%,10+512,ScreenArea%,"<FUNQTM$Dir>.Scr2"
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,0,0
Screen(1)
Bank%=0
angle=-90
angle+=FadeSpeed%
setpal(-angle,angle,angle)
angle>=0
"OS_RemoveCursors"
"QTM_Info"
,,origin%,,,,address%
origin%>=16
0,"Oi! I can't recognise this song!"
m'patterns%=address%+20+30*31+2+128+4
n!sequence%=address%+20+30*31+2
"QTM_VUBarControl",2,3
*QTMStart
rAngle = 0
gAngle = 0
bAngle = 0
Begining of the GIGA LOOOOOOOOOOP. ***************************************
CycleCol%=
CycleColor
"QTM_ReadSpeed"
Speed%
A%,B%,C%
C%=4
(A%-1800)<160
(B%-1100)<160
- Q=(B%-1100)/
((A%-1800)^2+(B%-1100)^2)
A%-1800<0
Angle=
Angle=2*
P%=Angle/(2*
)*NbSeq%+1
"QTM_Pos",P%-1,0
Buttons
BBox(EXIT%()) :
BBox(PAUSE%())
PauseFlag%=
("QTMStart") : PauseFlag%=
("QTMPause") : PauseFlag%=
BBox(SAMPLES%())
Boom("<FUNQTM$Dir>.Draw.Samples 1 0 0 1 100 500",0)
Samples
ScreenFade
BBox(WAVES%())
Boom("<FUNQTM$Dir>.Draw.Waves 1.6 0 0 1.6 200 200",1)
Shell("Run <FUNQTM$Dir>.Waves")
mode("X1024 Y768 G256")
ScreenFade
BBox(BALLS%())
Boom("<FUNQTM$Dir>.Draw.Balls 1.6 0 0 1.6 200 200",0)
128,0,0,0
Write(1)
Write(2)
ScreenFade
BBox(AUTHOR%())
Boom("<FUNQTM$Dir>.Draw.AUTHOR 1.6 0 0 1.6 200 200",0)
Shell("Run <FUNQTM$Dir>.KING")
mode("X1024 Y768 G256")
ScreenFade
C%=0
"QTM_Pos",-1,-1
seq%,event%
&47E4F,seq%
pat%
pos%=1024*pat%+event%*16
pos%+=patterns%
ShadowSwitch
Z%=1-Z%
VUBars
"QTM_ReadVULevels",0
XVU%
Eyes%+=10
Eyes%>100
Eyes%=0
VU%=XVU%
G%=pos%
VoiceUpdate(MargeX%,MargeY%+0*(EqualH%+Space%),0,Red%)
VoiceUpdate(MargeX%,MargeY%+1*(EqualH%+Space%)-50,1,Green%)
VoiceUpdate(MargeX%,MargeY%+2*(EqualH%+Space%)+50,2,Blue%)
VoiceUpdate(MargeX%,MargeY%+3*(EqualH%+Space%),3,Purple%)
TimeTrack
NbFPS
Timer%+=1
End of GIGA Loooooop. -------------------------------------------------
YOU(p%)
p%=0
p%>=&71
p%<=&358
a%=-1
a%+=1
a%>36
PTable%(a%)=p%
=36-a%
plot(p%)
p%=-1
p%=-2
SetCol(Black%)
500+Piano%(0,c%,2+Z%)*Digit%+2,-10,14,10
p%=Piano%(0,c%,3-Z%)
Piano%(0,c%,2+Z%)=p%
SetCol(White%)
500+p%*Digit%+2,-10,14,10
S%=Piano%(0,c%,2+Z%)
VU%<>0
Piano%(S%,c%,0)=VU% : Piano%(S%,c%,1)=255
p%=36-p%
VU%<>0
Piano%(p%,c%,0)=VU% : Piano%(p%,c%,1)=255
SetCol(Black%)
500+Piano%(0,c%,2+Z%)*Digit%+2,-10,14,10
Piano%(0,c%,2+Z%)=p%
SetCol(White%)
500+p%*Digit%+2,-10,14,10
Smiley
PROCSetCol(White%)
IF FNreadpitch(pos%+c%*4)<>0 THEN PROCSetCol(Red%)
CIRCLE FILL VUR%,VUR%,VUR%+10
SetCol(White%)
VUR%,VUR%,VUR%
VU%<2
Q=R%/VUR%
GCOL 255-(255-NR%)*Q,255-(255-NG%)*Q,255-(255-NB%)*Q
SetCol(VoiceCol%)
VUR%,VUR%,R%
SetCol(White%)
CIRCLE FILL VUR%,VUR%-R%/2,R%/5*R%/100
A%=VUR%-R%/2
B%=VUR%+R%/2
C%=VUR%-R%/3
D%=VUR%+R%/3
R%>10
VUR%,A%,R%/4,R%/5,0
C%,B%,R%/4
D%,B%,R%/4
SetCol(Black%)
C%,B%,R%/4
D%,B%,R%/4
VUR%,VUR%,R%
R%>10
VUR%,A%,R%/4,R%/5,0
CIRCLE FILL VUR%-R%/3,VUR%+R%/3.2,R%/6
CIRCLE FILL VUR%+R%/3,VUR%+R%/3.2,R%/6
Eyes% < 50
Eye1%=Eyes%
Eye2%=50-Eyes%
Eye1%=100-Eyes%
Eye2%=50-Eyes%
GCOL 0,0,0 : REMEyeColorR%,EyeColorG%,EyeColorB%
Speed%<=3
SetCol(CycleCol%)
255,0,0 :
Black%
C%,B%,(R%/6)*Eye1%/50
D%,B%,(R%/6)*Eye2%/50
A%=VUR%-R%/8
B%=VUR%+R%/8
SetCol(White%)
84,A%,VUR%
84,B%,VUR%
85,VUR%,B%
SetCol(Black%)
A%,VUR%
B%,VUR%
VUR%,B%
A%,VUR%
StarX
SetCol(White%)
VUR%,VUR%,VUR%
seq%+5>=NbSeq%
(255),
(255),
(255)
A=2*
F=R%*2*
200,255,255,255
SetCol(Black%)
T%=R%
VUR%+
(F)*T%,VUR%+
(F)*T%
VUR%+
(F+2*
/10)*T%/2,VUR%+
(F+2*
/10)*T%/2
a=F+A
F+A+2*
VUR%+
(a)*T%,VUR%+
(a)*T%
VUR%+
(a+2*
/10)*T%/2,VUR%+
(a+2*
/10)*T%/2
(255),
(255),
(255)
VUR%,VUR%
200,0,0,0
GCOL 100,C%
FILL VUR%,VUR%
PLOT 128+5,VUR%,VUR%
BStar
I%=0
Color%=
I%+=1
`' R%=
(255) : G%=
(255) : B%=
(255)
Color%=1
9,R%,G%,B%
SetCol(White%)
Mode$="Dark"
(100):
9,D%,D%,D%
R%=RLim%
A=2*
(1000)/1000*2*
U%=
V%=
U%,V%
T%=R%
R%+20
(F)*T%,
(F)*T%
(F+A/2)*T%/2,
(F+A/2)*T%/2
a=F+A
F+A+2*
(a)*T%,
(a)*T%
r$
(a+A/2)*T%/2,
(a+A/2)*T%/2
I%=50
Trans(IN%,N%)
St$=""
C%=0
a$=
(IN%?C%)
St$ += a$
IN%?(C%+1)=0
=St$
Equalizer
p%=0
VU%=Piano%(p%,c%,0)
VU% > 0
SetCol(EqCol%)
x%+6,6,Digit%-14,EqualH%-10
255,255-Piano%(p%,c%,1),0
Piano%(p%,c%,1)-=30
Piano%(p%,c%,1)<0
Piano%(p%,c%,1)=0
V%=EqualH%*VU%/64-10
V%<0
V%=0
x%+6,6,Digit%-14,V%
Piano%(p%,c%,0)-=VUSpeed%
Piano%(p%,c%,0)<=0
Piano%(p%,c%,0)=-2
VU%=-2
VU%=-1
SetCol(EqCol%)
x%+6,6,Digit%-14,EqualH%-10
Piano%(p%,c%,0)+=1
x%+=Digit%
Position
A%,Pos%
SetCol(Black%)
450,0,50,EqualH%
Pos%=0
A%=pos%+Pos%*16+c%*4
readpitch(A%)<>0
event%+Pos%<=64-5
SetCol(VoiceCol%)
450,EqualH%-EqualH%/5*(Pos%+1),50,EqualH%/5-5
event%+Pos%>64-5
"OS_SetColour",3,CycleCol%
450,EqualH%-EqualH%/5*(Pos%+1),50,EqualH%/5-5
DrawSamples
Sample%=
sa(pos%+(c%-1)*4)
SetCol(Black%)
500,-60,EqualW%,50
"ColourTrans_SetFontColours",SampleFont%,0,0<<24
255<<16
255<<8,14
Sample%<>CurrentSpl%(c%)
Sample%<>0
CurrentSpl%(c%)=Sample%
"QTM_ReadSampleTable",CurrentSpl%(c%)
Name%
String$=
Trans(Name%,27)
String$=""
String$="Unknown"
"XFont_Paint",SampleFont%,
(CurrentSpl%(c%))+". "+String$,&10,FOX%+500,FOY%-50
3,255,0,0
500+EqualW%/31*(CurrentSpl%(c%)-1),-60,EqualW%/31,50
Samples
angle=0
angle-=FadeSpeed%
setpal(angle,angle,angle)
"QTM_Volume",(90+angle)/90*64
angle<=-90
*QTMPause
"QTM_Volume",64
Handle%
X%=XScreen%*2
Y%=YScreen%*2
0,0
Write(1)
128,0,0,0
Screen(1)
"Font_FindFont",,"Sassoon.Primary",500,500,0
Handle%
"ColourTrans_SetFontColours",Handle%,0,255<<24
0<<16
0<<8,5
"Font_Paint",Handle%,"Track name:",&10,0,Y%-100
"Font_Paint",Handle%,"Author name:",&10,0,Y%-300
"Font_Paint",Handle%,"Song origin:",&10,0,Y%-500
"Font_Paint",Handle%,"Track size:",&10,0,Y%-700
*Render "<FUNQTM$Dir>.Draw.Back" 0.3 0 0 0.3 100 900
"ColourTrans_SetFontColours",Handle%,0,255<<24
255<<16
255<<8,14
"Font_Paint",Handle%,Track%,&10,0,Y%-200
Author%<>0
"Font_Paint",Handle%,Author%,&10,0,Y%-400
"Font_Paint",,"Unknown",&10,0,Y%-400
Origin%
0 : Type$="15 inst. Sound Tracker"
1 : Type$="31 inst. Sound Tracker"
2 : Type$="31 inst. ProTracker"
3 : Type$="31 inst. Startrekker"
"Font_Paint",Handle%,Type$,&10,0,Y%-600
"Font_Paint",Handle%,
(Length%),&10,0,Y%-800
"Font_FindFont",,"Bauhaus.Demi",250,250,0
Handle%
S%=1
"QTM_ReadSampleTable",S%
Name%,Length%
Length%<>0
200,200,200
1000-50,Y%-(S%+1)*40+10,20
SetCol(White%)
1000-50-2,Y%-(S%+1)*40+10+2,20
SetCol(Black%)
1000-50+2,Y%-(S%+1)*40+10-2,20
"ColourTrans_SetFontColours",Handle%,0,
(255)<<24
255<<16
255<<8,14
String$=
Trans(Name%,28)
S%>=10
Number$=
(S%)+"."
Number$=" "+
(S%)+"."
"Font_Paint",Handle%,Number$,&10,800,Y%-(S%+1)*40
String$<>""
"XFont_Paint",Handle%,String$,&10,1000,Y%-(S%+1)*40
Length$=
(Length%)
Length$=STRING$(5-LEN(Length$),"0")+Length$
2000,Y%-(S%+1)*40
"Font_Paint",Handle%,Length$,&10,1600,Y%-(S%+1)*40
"Font_LoseFont",Handle%
255,0,0
A%=0
A%*20+1000,20,20,200
X1=0
N%=0
Channel%=1
Pitch%=0
(1)-0.5
(1)-0.5
(1)-0.5
(1)-0.5
angle=-90
angle+=FadeSpeed%
setpal(angle,angle,angle)
angle>=0
s%=1:lines%=Bub%
a%=-512
,"depth(a%+512) = 1/((a%/640)+1)
ang%=0
a%=0
lines%
0"lx(a%)=(50+
(290))*
(360))
ly(a%)=a%*1024/lines%-512
2"lz(a%)=50+(
(290))*
(360))
XS%,YS%
XS%,YS%
rotate
0=1
SetCol(Black%)
0,200,800,800
(X1)*255,
(X1)*255,255
V1=X1*Pitch%
I=0
Gm
1.5*
((I+V1)+A)*
((I+V1)+B)*
(V1)*300+400,200+1.5*
(((I+V1)+C))*
((I+V1)+D)*
(V1)*300+400,
(I*2)*50
Hn
((I+X1+A))+
(((I+X1)+B)*10)/10)*
(X1)*300+400,(
((I+X1)+C)+
(((I+X1)+D)*10)/10)*
(X1)*300+400,5
A%,B%,C%
C%=0
Mouse%=0
A%>1000
B%>200
NF%=-(B%-Y%)/40
Q<
"QTM_ReadSampleTable",NF%
Name%,Length%,,,,,Adr%
Length%<>0
255,0,0
Mouse%=7
MGCOL 0,0,0
0,0,800,200
Y
0,255,255,255
Incr%=Length%/200
P%=0
^
U%=0
P%+=Incr%
U%,?(P%+Adr%)/5+50
c
N%<>NF%
Mouse%=0
Red light
SetCol(Black%)
k(
1000-50,Y%-(N%+1)*40+10,18
N%=NF%
SetCol(Black%)
o(
1000-50,Y%-(N%+1)*40+10,18
p%
255,
/100*2*
/3))*255,0
q)
1000-50,Y%-(NF%+1)*40+10,18
SetCol(White%)
s(
1000-55,Y%-(NF%+1)*40+15,8
NPitch%=(A%-1000)/20+1
SetCol(Black%)
w(
1000+Pitch%*20+2,22,16,196
x$
Pitch%<>NPitch%
Mouse%=0
Pitch%=NPitch%
255,255,0
{(
1000+Pitch%*20+2,22,16,196
C%=4
Mouse%=0
~
2
"QTM_PlaySample",Channel%,N%,Pitch%,64
Mouse%=1
C%=1
Mouse%=0
.
"QTM_PlaySample",Channel%,N%,25,64
Mouse%=1
C%=2
Mouse%=0
?
Save(Adr%,Length%,"<FUNQTM$Dir>.Samples."+
(N%),&FFD)
Mouse%=1
SetCol(Black%)
(
1000-50,Y%-(N%+1)*40+10,18
NPitch%=(A%-1000)/20+1
%
NPitch%<>Pitch%
Mouse%=0
SetCol(Black%)
(
1000+Pitch%*20+2,22,16,196
Pitch%=NPitch%
X1+=0.005
C%=2
"QTM_Volume",0
*QTMStart
"QTM_Volume",
/100*64
>100
TimeTrack
1800,1100
3,200,255,0
Z%=0
Last%=LastSeq1%
Last%=LastSeq2%
0,150
Angle=Last%*
*2/NbSeq%+
&B5,
(Angle)*500,
(Angle)*500
0,150
Angle=seq%*
*2/NbSeq%+
&B5,
(Angle)*500,
(Angle)*500
Z%=0
LastSeq1%=seq%
LastSeq2%=seq%
SetCol(Black%)
0,0,98
PROCSpeed
3,0,0,255
0,75
Angle=event%*
*2/63+
&B5,
(Angle)*500,
(Angle)*500
SetCol(Black%)
0,0,30
"OS_SetColour",3,CycleCol%
Angle=event%*
*2/63*2+
Scale%=98*event%/63
seq%
0,0,Scale%
(Angle)*Scale%,
(Angle)*Scale%
(Angle+2*
/3)*Scale%,
(Angle+2*
/3)*Scale%
(Angle+4*
/3)*Scale%,
(Angle+4*
/3)*Scale%
Scale%>2
0,0,Scale%,Scale%/5,Angle
0,0,Scale%/5,Scale%,Angle
Star
(Angle)*Scale%,
(Angle)*Scale%
(Angle+2*
/3)*Scale%,
(Angle+2*
/3)*Scale%
(Angle+4*
/3)*Scale%,
(Angle+4*
/3)*Scale%
Angle+=
(Angle)*Scale%,
(Angle)*Scale%
(Angle+2*
/3)*Scale%,
(Angle+2*
/3)*Scale%
(Angle+4*
/3)*Scale%,
(Angle+4*
/3)*Scale%
0,0,Scale%
0,0,Scale%
(Angle)*(Scale%/2),
(Angle)*(Scale%/2),Scale%/2-2
Angle+=
(Angle)*(Scale%/2),
(Angle)*(Scale%/2),Scale%/2-2
Angle+=
(Angle)*(Scale%/2),
(Angle)*(Scale%/2),Scale%/2-2
Angle+=
(Angle)*(Scale%/2),
(Angle)*(Scale%/2),Scale%/2-2
Scale%>2
(Angle)*Scale%/8,-
(Angle)*Scale%/10,Scale%/3,Scale%/6,Angle
(Angle)*Scale%/8,
(Angle)*Scale%/10,Scale%/10
Speed
"QTM_ReadSpeed"
Speed%
Counter%+=Speed%/10
Counter%>15
Counter%=0
Z%=0
Last%=Last1%
Last%=Last2%
SetCol(White%)
R%=200
(Last%/15*2*
)*R%,
(Last%/15*2*
)*R%,30
((Last%-1)/15*2*
)*R%,
((Last%-1)/15*2*
)*R%,30
((Last%-2)/15*2*
)*R%,
((Last%-2)/15*2*
)*R%,30
255,0,0
(Counter%/15*2*
)*R%,
(Counter%/15*2*
)*R%,30
255,100,0
((Counter%-1)/15*2*
)*R%,
((Counter%-1)/15*2*
)*R%,30
255,255,0
((Counter%-2)/15*2*
)*R%,
((Counter%-2)/15*2*
)*R%,30
Z%=0
Last1%=Counter%
Last2%=Counter%
CycleColor
(Cycle%
0: C%=Red%
1: C%=Green%
2: C%=Blue%
3: C%=Yellow%
4: C%=Purple%
5: C%=Green%
Cycle%+=1
setpal(rangle,gangle,bangle)
rf =
rangle
gf =
gangle
bf =
bangle
c% = 0
rf >= 0
#& RGam%?c% = c% + (255 - c%) * rf
RGam%?c% = c%*(rf+1)
gf >= 0
)& GGam%?c% = c% + (255 - c%) * gf
GGam%?c% = c%*(gf+1)
bf >= 0
/& BGam%?c% = c% + (255 - c%) * bf
BGam%?c% = c%*(bf+1)
"OS_CallAVector",RGam%,GGam%,BGam%,0,9,0,0,0,0,&23
Screen(1)
Write(1)
I
(255),
(255),
(255)
J,
(XScreen%*2),
(YScreen%*2),
N A=0
Ad=
(1)*2
F%=
(XS%*XS%+YS%*YS%/4)
R%=
(100)+100
XS%,YS%
V
(255),
(255),
(255)
D%=
/100*F%
B=A
Z
(B)*D%,
(B)*D%,R%
A+=Ad
XS%,YS%
Col%=
CycleColor
Angle=0
VU%=
R%=VU%
"OS_SetColour",0,Col%
0,0,R%
SetCol(White%)
A%=-R%/2
B%=+R%/2
C%=-R%/3
D%=+R%/3
R%>10
0,A%,R%/4,R%/5,0
C%,B%,R%/4
D%,B%,R%/4
SetCol(Black%)
C%,B%,R%/4
D%,B%,R%/4
0,0,R%
R%>10
0,A%,R%/4,R%/5,0
(Angle)*R%/20,B%+
(Angle)*R%/12,R%/10
(Angle)*R%/20,B%+
(Angle)*R%/12,R%/10
A%=-R%/8
B%=+R%/8
SetCol(White%)
84,A%,0
84,B%,0
85,0,B%
SetCol(Black%)
A%,0
B%,0
0,B%
A%,0
ShadowSwitch
Angle+=0.8
Screen(1)
Write(1)
128,0,0,0
setpal(0,0,0)
DrawButtons
0,0,0
Draw(EXIT%())
Draw(PAUSE%())
Draw(BALLS%())
Draw(AUTHOR%())
Draw(SAMPLES%())
Draw(WAVES%())
Draw(Button%())
Button%(0),Button%(2),Button%(1)-Button%(0),Button%(3)-Button%(2)
sa(addr%)=(?addr%
&F0)+((addr%?3
&F0)>>4)
readpitch(addr%)=addr%?1+((?addr%
&F)<<8)
BBox(But%())
(But%(0)<A%
A%<But%(1))
(But%(2)<B%
B%<But%(3))
Scale IN+Rotation
Cos=
Sin=
Scale=1.01
angle=0
X%=
(1024*2-50)
Y%=
(768*2-50)
U%=(X%-XS%)
V%=(Y%-YS%)
K
X%,Y%,200
1024+(Cos*U%+Sin*V%)*Scale,768+(Cos*V%-Sin*U%)*Scale
PROCsetpal(angle,angle,angle)
angle=-TIME/500*90
>=150
Scale IN
Scale=1.01
X%=
(1024*2-50)
Y%=
(768*2-50)
<
X%,Y%,200
XS%+(X%-XS%)*Scale,YS%+(Y%-YS%)*Scale
>=150
Scale OUT
Scale=0.99
X%=
(1024*2-50)
Y%=
(768*2-50)
<
X%,Y%,200
XS%+(X%-XS%)*Scale,YS%+(Y%-YS%)*Scale
>=150
Code: Vibe
X%=
(XS%*2):Y%=
(YS%*2)
O%=8
X%-O%,Y%-O%:
&BD,O%,O%
0,Y%+O%:
X%-O%,YS%*2:
&BD,O%,Y%
X%+O%,Y%+O%:
XS%*2,YS%*2:
&BD,X%,Y%
X%+O%,0:
XS%*2,Y%-O%:
&BD,X%,O%
O%,O%:
X%,Y%:
&BE,0,0
O%,Y%:
X%,YS%*2-O%:
&BE,0,Y%+O%
X%,Y%:
XS%*2-O%,YS%*2-O%:
&BE,X%+O%,Y%+O%
X%,O%:
XS%*2-O%,Y%:
&BE,X%+O%,0
>=150
StarFX
(255),
(255),
(255)
XS%,YS%
Angle=
/200*5*2*
Scale%=
/200*3000
(Angle)*Scale%,
(Angle)*Scale%
(Angle+2*
/3)*Scale%,
(Angle+2*
/3)*Scale%
(Angle+4*
/3)*Scale%,
(Angle+4*
/3)*Scale%
Angle=Angle+
(Angle)*Scale%,
(Angle)*Scale%
(Angle+2*
/3)*Scale%,
(Angle+2*
/3)*Scale%
(Angle+4*
/3)*Scale%,
(Angle+4*
/3)*Scale%
>200
ScreenFade
Bank%=1
Screen(1)
Write(2)
OS_SpriteOp%,10+512,ScreenArea%,"<FUNQTM$Dir>.Scr1"
OS_SpriteOp%,28+512,ScreenArea%,ScreenArea%+16,0
CASE 1 OF
Bouncing.
Write(1)
)* Y%=YScreen%*2-((
/50)^2*YScreen%*2)
*?
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,Y%,0
0, Y%=YScreen%/4-((1-
/20)^2*YScreen%/4)
1?
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,Y%,0
0,0,0
0,0,XScreen%*2,Y%
8* Y%=YScreen%/4-((
/20)^2*YScreen%/4)
9?
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,Y%,0
Boing!.
Write(1)
A& X%=(1-
/150)*
/150*2*
*5)*500
B?
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,X%,0,0
>=150
Boing2!.
Write(1)
J& X%=(1-
/150)*
/150*2*
*5)*500
K& Y%=(1-
/150)*
/150*2*
*5)*500
L@
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,X%,Y%,0
>=150
Brush
R- X%=(
/200*2*
*5))*XScreen%+XScreen%)
Y%=(1-
/200)*YScreen%*2
OS_SpriteOp%,9+512,ScreenArea%
Write(2)
OS_SpriteOp%,16+512,ScreenArea%,ScreenArea%+16,0,X%,Y%,X%+300,Y%+300
Write(1)
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,X%,Y%,0
>=200
!!!
OS_SpriteOp%,10+512,ScreenArea%,"<FUNQTM$Dir>.Scr1"
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,0,200,0
Scaled.
Write(1)
T%=0
Y%=0
Block%!0=1
Block%!4=1
Block%!8=100-T%/500*99
Block%!12=100-T%/500*99
OS_SpriteOp%,52+512,ScreenArea%,ScreenArea%+16,0,0,0,Block%,0
T%+=1
T%>=500
X%=
(XScreen%)*2
Y%=
(YScreen%)*2
w(
OS_SpriteOp%,9+512,ScreenArea%
Write(2)
yN
OS_SpriteOp%,16+512,ScreenArea%,ScreenArea%+16,0,X%,Y%,X%+100,Y%+100
Write(1)
{@
OS_SpriteOp%,34+512,ScreenArea%,ScreenArea%+16,X%,Y%,0
>=150
Write(1)
OS_SpriteOp%,28+512,ScreenArea%,ScreenArea%+16,0
Write(2)
OS_SpriteOp%,10+512,ScreenArea%,"<FUNQTM$Dir>.Scr2"
OS_SpriteOp%,28+512,ScreenArea%,ScreenArea%+16,0
ShadowSwitch
setpal(0,0,0)
rotate
vtx%= 0
lines%
Uxnew=lx(vtx%)*c-lz(vtx%)*s:znew=lx(vtx%)*s+lz(vtx%)*c:lx(vtx%)=xnew:lz(vtx%)=znew
6ly(vtx%)=ly(vtx%)+4+(vtx%/2)-(1024
ly(vtx%)>512)
vtx%
f=1/((lz(a%)/640)+1)
a%=0
lines%
f=depth(
(lz(a%))+512)
PRINT f
3,255,0,255
lx(a%)*f,ly(a%)*f,f*32
3,255,255,255
(lx(a%)-15)*f,(ly(a%)+15)*f,f*5
Patterns
1 : Pattern%=Cross% : Size%=332
2 : Pattern%=Radar% : Size%=1812
3 : Pattern%=RadioActive% : Size%=532
4 : Pattern%=Star% : Size%=444
5 : Pattern%=World% : Size%=1860
6 : Pattern%=Arrow% : Size%=456
6 Pattern%!ColourOffset%=255<<24
255<<16
255<<8
(XScreen%*2)
(YScreen%*2)
Angle=
(1)*2*
Size=
K Matrix%!0=(1<<16)*
(Angle)*Size : Matrix%!4=(1<<16)*
(Angle)*Size
L Matrix%!8=-(1<<16)*
(Angle)*Size : Matrix%!12=(1<<16)*
(Angle)*Size
* Matrix%!16=256*X% : Matrix%!20=256*Y%
"DrawFile_Render",0,Pattern%,Size%,Matrix%,0,0
A%+=1
A%=20
VoicePanel(X%,Y%)
X%,Y%
R%,G%,B%
VUR%,VUR%,300,VUR%/2,0
VUR%,VUR%,200,VUR%/2,
VUR%,VUR%,200,VUR%/2,-
X%+500,Y%
x%=0
EqCR%,EqCG%,EqCB%
x%*Digit%,0,Digit%,EqualH%
SetCol(Black%)
x%*Digit%,0,Digit%,EqualH%
x%*Digit%+8,2
x%*Digit%+Digit%-2,2
x%*Digit%+Digit%-2,EqualH%-8
SetCol(White%)
x%*Digit%+2,2
x%*Digit%+2,EqualH%
x%*Digit%+Digit%-2,EqualH%
SetCol(Black%)
0,-10,EqualW%-6,10
VoiceUpdate(X%,Y%,c%,VoiceCol%)
X%,Y%
FOX%=X% : FOY%=Y%
plot(
readpitch(G%)))
R%=VUR%*VU%/64
Smiley
x%=500
Equalizer
Position
PROCSamples
XVU%=XVU%>>8
VU%=XVU%
G%+=4
NbFPS
SetCol(White%)
0,0,120,15
SetCol(Black%)
T%=1/(
/100)
0,15
"FPS: ";T%
Boom(String$,B%)
Write(1)
$ *ScreenSave "<FUNQTM$Dir>.Scr1"
Write(2)
$ *ScreenSave "<FUNQTM$Dir>.Scr2"
Screen(1)
Write(2)
B%=0
128,0,0,0
128,0,0,0
XS%,YS%
I=0
100
S%=(1-(I/100)^2)*XS%
A%=(I/100)^2*255
0,0,255
A=I/100
+I/100
(A)*S%,
(A)*S%,10
255,0,A%
& O%=
(I/100*2*
*10)*150*(1-I/100)
S%-O%,S%+O%,30
-S%+O%,S%+O%,30
-S%-O%,-S%+O%,30
S%+O%,-S%+O%,30
("Render "+String$)
OS_SpriteOp%,9+512,ScreenArea%
OS_SpriteOp%,16+256,ScreenArea%,"L",0,0,0,XS%,YScreen%*2
,,AdrL%
OS_SpriteOp%,16+256,ScreenArea%,"R",0,XS%,0,XScreen%*2,YScreen%*2
,,AdrR%
Write(1)
X%=(
/20)^2*XS%
OS_SpriteOp%,34+512,ScreenArea%,AdrL%,X%-XS%,0,0
OS_SpriteOp%,34+512,ScreenArea%,AdrR%,XScreen%*2-X%,0,0
OS_SpriteOp%,34+512,ScreenArea%,AdrL%,0,0,0
OS_SpriteOp%,34+512,ScreenArea%,AdrR%,XS%,0,0
OS_SpriteOp%,9+512,ScreenArea%
OS_SpriteOp%,16+256,ScreenArea%,"Screen",0,0,0,XScreen%*2,YScreen%*2
,,Adr%
/# X%=
/50*2*
*10)*50*(1-
Y%=0
OS_SpriteOp%,34+512,ScreenArea%,Adr%,X%,0,0
Error
=% Error$=
$+" Error at line "+
Error$
File%
(Error$)
$File%=Error$
"OS_File",10,"<FUNQTM$Dir>.Error",&FFF,,File%,File%+
(Error$)
*QTMStop
setpal(0,0,0)
DATA &6B0,&650,&5F5,&5A0,&54F,&503,&4BB,&477,&436,&3FA,&3C1,&386
&358,&328,&2FA,&2D0,&2A6,&280,&25C,&23A,&21A,&1FC,&1E0,&1C5
&1AC,&194,&17D,&168,&153,&140,&12E,&11D,&10D,&0FE,&0F0,&0E2
&0D6,&0CA,&0BE,&0B4,&0AA,&0A0,&097,&08F,&087,&07F,&078,&071
DATA &06B,&065,&05F,&05A,&055,&04C,&047,&043,&040,&03C,&039,&036