home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / subroutines / rotatingscroll.amos / rotatingscroll.amosSourceCode
AMOS Source Code  |  1991-06-11  |  5KB  |  219 lines

  1. Rem Rotating Scroll Demo 
  2. Rem by JAG of FANATIX
  3. Rem
  4. SETUP
  5. Procedure SETUP
  6. Break Off 
  7. Load "rotmus.abk",3
  8. Load "rotdata.abk",8
  9. Load "rotlogo.abk",7
  10. Load "rotfont.abk",6
  11. DEMO
  12. Screen Open 0,320,256,2,Lowres : Curs Off : Hide On : Colour 1,$0 : Cls 1
  13. Rainbow 0,0,300,16
  14. Rainbow 1,0,300,16
  15. Set Rainbow 0,0,16,"","",""
  16. Set Rainbow 1,0,16,"","",""
  17. Wait Vbl 
  18. Screen Close 0
  19. Run "StarHarrier.AMOS"
  20. End Proc
  21. Procedure DEMO
  22. Rem Effects: 
  23. Rem         [ = F off
  24. Rem         ~ = "  
  25. Rem         ^ = Triangle 
  26. Rem         ] = FX 
  27. Rem         @ = Face 
  28. Rem         ï¿½ = Rotate slow
  29. Rem         $ = Rotate fast
  30. Rem         % = Stop slow
  31. Rem         & = Stop Fast
  32. Rem         | = Music on 
  33. Rem         { = Fast scroll
  34. Rem         } = Slow scroll
  35. Screen Open 0,320,256,2,Lowres : Cls 0 : Hide On 
  36. Close Workbench : Close Editor : Led Off : Break Off 
  37. If Length(8)<>3668 Then Goto LAMER
  38. Dim CL(16)
  39. CL(16)=$F00 : CL(15)=$E00 : CL(14)=$D00 : CL(13)=$C00 : CL(12)=$B00
  40. CL(11)=$A00 : CL(10)=$900 : CL(9)=$800 : CL(8)=$700 : CL(7)=$600
  41. CL(6)=$500 : CL(5)=$400 : CL(4)=$300 : CL(3)=$200 : CL(2)=$100 : CL(1)=$0
  42. M$="Restart:  Let X=0; Pause; Loop:  Let X=X+1; If X>63 then Jump Restart; Pause; Jump Loop;"
  43. Z$="Restart:  Let Y=1; Pause; Loop:  Let Y=Y+1; If Y>20 then Jump Restart; Pause; Jump Loop;"
  44. X$="Restart:  Let Y=1; Pause; Pause; Loop:  Let Y=Y+1; If Y>20 then Jump Restart; Pause; Pause; Jump Loop;"
  45. C$=" Loop:  Let Y=Y+1; If Y>20 then Jump Stop; Pause; Jump Loop; Stop:  Let Y=0; "
  46. V$=" Loop:  Let Y=Y+1; If Y>20 then Jump Stop; Pause; Pause; Jump Loop; Stop:  Let Y=0; "
  47. O$="Restart:  Let X=1; Pause; Loop:  Let X=X+1; If X>321 then Jump Restart; Pause; Jump Loop;"
  48. Dim L$(54) : Dim X(54) : Dim Y(54) : Gosub VARLOAD
  49. SC=8 : CH=1 : SCAR=7 : SCR=1
  50. LETTER$="[!~^]@'()+,-. 0123456789:;=?abcdefghijklmnopqrstuvwxyz"
  51. Screen Open 0,400,36,2,Lowres : Curs Off : Hide On : Cls 0
  52. Unpack 7 To 2 : Hide On 
  53. Screen Display 2,108,40,,119
  54. Screen Display 0,128,225,,17
  55. F=1
  56. Set Rainbow 0,1,64,"","",""
  57. Rainbow 0,1,224,20
  58. Set Rainbow 1,0,64,"","","(2,1,15)(2,-1,15)"
  59. Rainbow 1,1,40,120
  60. Restore RDATA
  61. RD:
  62. Read R
  63. If R=9999 Then Goto COK
  64. Rain(0,F)=R
  65. Inc F
  66. Goto RD
  67. COK:
  68. Channel 0 To Screen Offset 0
  69. Channel 2 To Screen Offset 2
  70. Channel 1 To Rainbow 1
  71. Amal 1,M$ : Amal 2,O$
  72. Unpack 6 To 1
  73. Screen To Back 1
  74. Screen Hide 1
  75. F=1
  76. Amal On 
  77. Def Scroll 1,0,0 To 360,36,-2,0
  78. Def Scroll 2,0,0 To 360,36,-4,0
  79. SC$=Space$(3666) : For F=Start(8) To Start(8)+3666 : Poke Varptr(SC$)+F-Start(8),Peek(F) : Next F
  80. Rem ************************************************************** 
  81. Rem
  82. Rem
  83. Do 
  84. Gosub MESSAGE
  85. Wait Vbl 
  86. Gosub MESSAGE
  87. Gosub EQWALS
  88. Update : Wait Vbl 
  89. If Mouse Key=1 Then Goto DIE
  90. Loop 
  91. Rem
  92. Rem
  93. Rem ************************************************************** 
  94. MESSAGE:
  95. Screen 0
  96. Scroll SCR
  97. Inc SCAR : If SCAR=SC Then SCAR=0 : Inc CH : Gosub PCHAR
  98. Return 
  99. PCHAR:
  100. If CH=Len(SC$) Then CH=0 : Return 
  101. S$=Mid$(SC$,CH,1)
  102. P=Instr(LETTER$,S$)
  103. If P=0 Then Goto FX
  104. Screen Copy 1,X(P),Y(P),(X(P))+15,(Y(P))+15 To 0,332,0
  105. Screen Copy 1,X(P),Y(P),(X(P))+15,(Y(P))+15 To 0,332,20
  106. Return 
  107. FX:
  108. If S$="�" Then Amal 0,X$ : Amal On 0 : Return 
  109. If S$="%" Then Amal 0,V$ : Amal On 0 : Return 
  110. If S$="$" Then Amal 0,Z$ : Amal On 0 : Return 
  111. If S$="&" Then Amal 0,C$ : Amal On 0 : Return 
  112. If S$="|" and MU=0 Then Music 1 : MU=1
  113. If S$="{" Then SCR=2 : SC=4 : Return 
  114. If S$="}" Then SCR=1 : SC=8 : Return 
  115. EQWALS:
  116. Screen 2
  117. V0=Vumeter(0) : If V0>10 Then C0=16
  118. V1=Vumeter(1) : If V1>10 Then C1=16
  119. V2=Vumeter(2) : If V2>10 Then C2=16
  120. V3=Vumeter(3) : If V3>10 Then C3=16
  121. C0=C0-2 : If C0<1 Then C0=1
  122. C1=C1-2 : If C1<0 Then C1=1
  123. C2=C2-2 : If C2<0 Then C2=1
  124. C3=C3-2 : If C3<0 Then C3=1
  125. Colour 1,CL(C0)
  126. Colour 2,CL(C1)
  127. Colour 3,CL(C2)
  128. Colour 4,CL(C3)
  129. Return 
  130. VARLOAD:
  131. Restore SCDATA
  132. For F=1 To 54
  133. Read A$ : Read A : Read B
  134. L$(F)=A$ : X(F)=A : Y(F)=B
  135. Next F
  136. Return 
  137. SCDATA:
  138. Data "[",0,0
  139. Data "!",16,0
  140. Data "~",32,0
  141. Data "^",48,0
  142. Data "]",64,0
  143. Data "@",80,0
  144. Data "'",112,0
  145. Data "(",128,0
  146. Data ")",144,0
  147. Data "+",176,0
  148. Data ",",192,0
  149. Data "-",208,0
  150. Data ".",224,0
  151. Data " ",240,0
  152. Data "0",256,0
  153. Data "1",272,0
  154. Data "2",288,0
  155. Data "3",304,0
  156. Data "4",0,16
  157. Data "5",16,16
  158. Data "6",32,16
  159. Data "7",48,16
  160. Data "8",64,16
  161. Data "9",80,16
  162. Data ":",96,16
  163. Data ";",112,16
  164. Data "=",144,16
  165. Data "?",176,16
  166. Data "a",208,16
  167. Data "b",224,16
  168. Data "c",240,16
  169. Data "d",256,16
  170. Data "e",272,16
  171. Data "f",288,16
  172. Data "g",304,16
  173. Data "h",0,32
  174. Data "i",16,32
  175. Data "j",32,32
  176. Data "k",48,32
  177. Data "l",64,32
  178. Data "m",80,32
  179. Data "n",96,32
  180. Data "o",112,32
  181. Data "p",128,32
  182. Data "q",144,32
  183. Data "r",160,32
  184. Data "s",176,32
  185. Data "t",192,32
  186. Data "u",208,32
  187. Data "v",224,32
  188. Data "w",240,32
  189. Data "x",256,32
  190. Data "y",272,32
  191. Data "z",288,32
  192. RDATA:
  193. Data $110,816,1360,2176,2720,2720,3520,3520,4080,3520,3520,2720,2720,2176,1360,816,$110,9999
  194. LAMER:
  195. Screen Open 0,640,512,2,Hires
  196. Curs Off 
  197. Cls 0
  198. Colour 1,$FFF
  199. Print "Well, well well, if it isn't a lamer"
  200. Print "that tried to change the scrolling message."
  201. Print 
  202. Locate 0,10
  203. Centre "Bad luck loser."
  204. Do 
  205. Centre "Bad luck loser."
  206. For F=1 To 10000 : Next F
  207. Centre "               "
  208. For F=1 To 10000 : Next F
  209. Loop 
  210. DIE:
  211. Screen Close 0
  212. Screen Close 1
  213. Screen 2
  214. Fade 5
  215. For F=63 To 0 Step -1
  216. Mvolume F : For T=0 To 2000 : Next T
  217. Next F
  218. Screen Close 2
  219. End Proc