' - FUZZY SCREEN EFFECT!!! 

' - BY ROB OF CYBORNETICS - Jan 94 

' - There's a small(?) delay while it generates the fuzz.
' - Alternatively you could use a picture to store the static fuzz.  

FUZZ[110,88,100,80,5000,True] : Rem  - Not really INTENSE enough.  
FUZZ[110,88,100,80,10000,False] : Rem - About the right INTENSITY.  No Sound.  
FUZZ[110,88,100,80,20000,True] : Rem - A bit too INTENSE. 
FUZZ[0,0,320,256,40000,True] : Rem - BIG one. Takes ages. Not INTENSE enough! 

Procedure FUZZ[X,Y,WIDTH,HEIGHT,_INTENSITY,SFX]
   
   ' - X         - X coordinate of fuzz on screen 0 
   ' - Y         - Y coordinate of fuzz on screen 0 
   ' - WIDTH     - Number of pixels wide the fuzz is (MAX 320)
   ' - HEIGHT    - Number of pixels high (MAX 256)
   ' - INTENSITY - Number of dots in the fuzz.  Works best with high intensity. 
   ' -           - Takes ages to generate though, if you have too many. 
   ' - SFX       - If True then the fuzz will be accompanied by sound 
   
   
   ' - DIFF determines how random each frame is.
   ' - It's the number of pixels extra added to the width when it's generated.
   ' - A higer number creates a better effects but needs higer intensity. 
   DIFF=40
   
   
   ' - Display screen 
   Screen Open 0,320,256,2,Lowres
   Curs Off : Cls 0 : Hide On : Flash Off : Colour 1,$FFF
   
   
   ' - Setup fuzz generation screen 
   Screen Open 1,320+DIFF,256+DIFF,2,Lowres
   Curs Off : Cls 0 : Flash Off : Hide : Colour 1,$FFF
   Screen Hide 1
   
   
   ' - Generate the static fuzz 
   Ink 1
   SW=WIDTH+DIFF
   SH=HEIGHT+DIFF
   For SPOT=0 To _INTENSITY
      PX=Rnd(SW)
      PY=Rnd(SH)
      Plot PX,PY
   Next SPOT
   Screen 0
   
   
   ' - Bring the noise... 
   If SFX Then Noise To 15
   
   ' - And the fuzzzzz... 
   Repeat 
      If SFX Then Play Rnd(10)+80,0
      FROMX=Rnd(DIFF)
      FROMY=Rnd(DIFF)
      Screen Copy 1,FROMX,FROMY,FROMX+WIDTH,FROMY+HEIGHT To 0,X,Y
   Until(Mouse Key=1) or(Inkey$<>"") : Rem - Wait for mouse button or any key!
End Proc





