home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / MAGGIE22.ARJ / magg22st.msa / GOODIES / ST_INTRO.ZIP / M21.ST / DATA / INT_GFX.GFA (.txt) < prev    next >
GFA-BASIC Atari  |  1996-09-11  |  3KB  |  105 lines

  1. ' Interference Generator
  2. ' For ST intro wash effect
  3. '
  4. '
  5. RESERVE 500000
  6. INPUT "Random factor, like a tractor:";ra%
  7. RANDOMIZE ra%
  8. maxint%=1
  9. x1%=0
  10. y1%=0
  11. x2%=256
  12. y2%=64
  13. div%=8
  14. xs%=x2%-x1%
  15. ys%=y2%-y1%
  16. xsize%=xs%/div%
  17. ysize%=ys%/div%
  18. PRINT xsize%,ysize%
  19. DIM p%(xsize%+1,ysize%+1)
  20. ' END
  21. nine%=MALLOC(320*240+2048)
  22. out%=MALLOC(64*64)
  23. old%=XBIOS(2)
  24. ' --------------------------------------
  25. phys%=nine%+256*4
  26. HIDEM
  27. ' --------------------------------------
  28. VOID XBIOS(5,L:phys%,L:phys%,0)
  29. GOSUB set_points
  30. GOSUB set_colors
  31. GOSUB interference(0,0,256,64)
  32. GOSUB get_z
  33. '
  34. REPEAT
  35. UNTIL MOUSEK
  36. ' --------------------------------------
  37. VOID XBIOS(5,L:old%,L:old%,2)
  38. VOID MFREE(nine%)
  39. END
  40. '
  41. PROCEDURE set_points
  42.   FOR x%=0 TO xsize%-1
  43.     FOR y%=0 TO ysize%-1
  44.       p%(x%,y%)=RND*360*1
  45.     NEXT y%
  46.     p%(x%,ysize%)=p%(x%,0)
  47.   NEXT x%
  48.   FOR y%=0 TO ysize%-1
  49.     p%(xsize%,y%)=p%(0,y%)
  50.   NEXT y%
  51. RETURN
  52. '
  53. PROCEDURE interference(mx1%,my1%,mx2%,my2%)
  54.   out2%=out%
  55.   FOR y%=my1% TO my2%-1
  56.     FOR x%=mx1% TO mx2%-1
  57.       sx#=x%
  58.       sy#=y%
  59.       FOR i%=maxint% TO 1 STEP -1
  60.         c#=FN height(sx#,sy#)
  61.         ADD sx#,i%*8*SINQ(c#)
  62.         ADD sy#,i%*8*COSQ(c#)
  63.       NEXT i%
  64.       q%=FN colour(sx#,sy#)/16
  65.       PSET x%,y%,q%
  66.       POKE out2%,q%*4
  67.       INC out2%
  68.     NEXT x%
  69.     IF MOUSEK
  70.       y%=my2%+100
  71.     ENDIF
  72.   NEXT y%
  73. RETURN
  74. '
  75. FUNCTION height(xx#,yy#)
  76.   xx#=xx# AND (xs%-1)
  77.   yy#=yy# AND (ys%-1)
  78.   xm1#=xx# MOD div%
  79.   ym1#=yy# MOD div%
  80.   xm2#=(xx#/div%) MOD xsize%
  81.   ym2#=(yy#/div%) MOD ysize%
  82.   xm3#=(xm2#+1) MOD xsize%
  83.   ym3#=(ym2#+1) MOD ysize%
  84.   colq#=p%(xm2#,ym2#)+(p%(xm2#,ym3#)-p%(xm2#,ym2#))*ym1#/div%
  85.   colr#=p%(xm3#,ym2#)+(p%(xm3#,ym3#)-p%(xm3#,ym2#))*ym1#/div%
  86.   RETURN ((colr#-colq#)*xm1#/div%)+colq#
  87. ENDFUNC
  88. '
  89. FUNCTION colour(xx%,yy%)
  90.   p%=((xx%/x2%+yy%/y2%)*2*128) MOD 256
  91.   RETURN ABS(128-p%)
  92. ENDFUNC
  93. '
  94. PROCEDURE set_colors
  95.   VSYNC
  96.   col%=nine%
  97.   FOR x%=0 TO 15
  98.     VSETCOLOR x%,x%,x%,x%
  99.   NEXT x%
  100. RETURN
  101. '
  102. PROCEDURE get_z
  103.   BSAVE "d:\source2\m21.st\data\tun2.dat",out%,out2%-out%
  104. RETURN
  105.