home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
251-275
/
apd262
/
rotatingscroll.amos
/
rotatingscroll.amosSourceCode
Wrap
AMOS Source Code
|
1991-06-11
|
5KB
|
219 lines
Rem Rotating Scroll Demo
Rem by JAG of FANATIX
Rem
SETUP
Procedure SETUP
Break Off
Load "rotmus.abk",3
Load "rotdata.abk",8
Load "rotlogo.abk",7
Load "rotfont.abk",6
DEMO
Screen Open 0,320,256,2,Lowres : Curs Off : Hide On : Colour 1,$0 : Cls 1
Rainbow 0,0,300,16
Rainbow 1,0,300,16
Set Rainbow 0,0,16,"","",""
Set Rainbow 1,0,16,"","",""
Wait Vbl
Screen Close 0
Run "StarHarrier.AMOS"
End Proc
Procedure DEMO
Rem Effects:
Rem [ = F off
Rem ~ = "
Rem ^ = Triangle
Rem ] = FX
Rem @ = Face
Rem � = Rotate slow
Rem $ = Rotate fast
Rem % = Stop slow
Rem & = Stop Fast
Rem | = Music on
Rem { = Fast scroll
Rem } = Slow scroll
Screen Open 0,320,256,2,Lowres : Cls 0 : Hide On
Close Workbench : Close Editor : Led Off : Break Off
If Length(8)<>3668 Then Goto LAMER
Dim CL(16)
CL(16)=$F00 : CL(15)=$E00 : CL(14)=$D00 : CL(13)=$C00 : CL(12)=$B00
CL(11)=$A00 : CL(10)=$900 : CL(9)=$800 : CL(8)=$700 : CL(7)=$600
CL(6)=$500 : CL(5)=$400 : CL(4)=$300 : CL(3)=$200 : CL(2)=$100 : CL(1)=$0
M$="Restart: Let X=0; Pause; Loop: Let X=X+1; If X>63 then Jump Restart; Pause; Jump Loop;"
Z$="Restart: Let Y=1; Pause; Loop: Let Y=Y+1; If Y>20 then Jump Restart; Pause; Jump Loop;"
X$="Restart: Let Y=1; Pause; Pause; Loop: Let Y=Y+1; If Y>20 then Jump Restart; Pause; Pause; Jump Loop;"
C$=" Loop: Let Y=Y+1; If Y>20 then Jump Stop; Pause; Jump Loop; Stop: Let Y=0; "
V$=" Loop: Let Y=Y+1; If Y>20 then Jump Stop; Pause; Pause; Jump Loop; Stop: Let Y=0; "
O$="Restart: Let X=1; Pause; Loop: Let X=X+1; If X>321 then Jump Restart; Pause; Jump Loop;"
Dim L$(54) : Dim X(54) : Dim Y(54) : Gosub VARLOAD
SC=8 : CH=1 : SCAR=7 : SCR=1
LETTER$="[!~^]@'()+,-. 0123456789:;=?abcdefghijklmnopqrstuvwxyz"
Screen Open 0,400,36,2,Lowres : Curs Off : Hide On : Cls 0
Unpack 7 To 2 : Hide On
Screen Display 2,108,40,,119
Screen Display 0,128,225,,17
F=1
Set Rainbow 0,1,64,"","",""
Rainbow 0,1,224,20
Set Rainbow 1,0,64,"","","(2,1,15)(2,-1,15)"
Rainbow 1,1,40,120
Restore RDATA
RD:
Read R
If R=9999 Then Goto COK
Rain(0,F)=R
Inc F
Goto RD
COK:
Channel 0 To Screen Offset 0
Channel 2 To Screen Offset 2
Channel 1 To Rainbow 1
Amal 1,M$ : Amal 2,O$
Unpack 6 To 1
Screen To Back 1
Screen Hide 1
F=1
Amal On
Def Scroll 1,0,0 To 360,36,-2,0
Def Scroll 2,0,0 To 360,36,-4,0
SC$=Space$(3666) : For F=Start(8) To Start(8)+3666 : Poke Varptr(SC$)+F-Start(8),Peek(F) : Next F
Rem **************************************************************
Rem
Rem
Do
Gosub MESSAGE
Wait Vbl
Gosub MESSAGE
Gosub EQWALS
Update : Wait Vbl
If Mouse Key=1 Then Goto DIE
Loop
Rem
Rem
Rem **************************************************************
MESSAGE:
Screen 0
Scroll SCR
Inc SCAR : If SCAR=SC Then SCAR=0 : Inc CH : Gosub PCHAR
Return
PCHAR:
If CH=Len(SC$) Then CH=0 : Return
S$=Mid$(SC$,CH,1)
P=Instr(LETTER$,S$)
If P=0 Then Goto FX
Screen Copy 1,X(P),Y(P),(X(P))+15,(Y(P))+15 To 0,332,0
Screen Copy 1,X(P),Y(P),(X(P))+15,(Y(P))+15 To 0,332,20
Return
FX:
If S$="�" Then Amal 0,X$ : Amal On 0 : Return
If S$="%" Then Amal 0,V$ : Amal On 0 : Return
If S$="$" Then Amal 0,Z$ : Amal On 0 : Return
If S$="&" Then Amal 0,C$ : Amal On 0 : Return
If S$="|" and MU=0 Then Music 1 : MU=1
If S$="{" Then SCR=2 : SC=4 : Return
If S$="}" Then SCR=1 : SC=8 : Return
EQWALS:
Screen 2
V0=Vumeter(0) : If V0>10 Then C0=16
V1=Vumeter(1) : If V1>10 Then C1=16
V2=Vumeter(2) : If V2>10 Then C2=16
V3=Vumeter(3) : If V3>10 Then C3=16
C0=C0-2 : If C0<1 Then C0=1
C1=C1-2 : If C1<0 Then C1=1
C2=C2-2 : If C2<0 Then C2=1
C3=C3-2 : If C3<0 Then C3=1
Colour 1,CL(C0)
Colour 2,CL(C1)
Colour 3,CL(C2)
Colour 4,CL(C3)
Return
VARLOAD:
Restore SCDATA
For F=1 To 54
Read A$ : Read A : Read B
L$(F)=A$ : X(F)=A : Y(F)=B
Next F
Return
SCDATA:
Data "[",0,0
Data "!",16,0
Data "~",32,0
Data "^",48,0
Data "]",64,0
Data "@",80,0
Data "'",112,0
Data "(",128,0
Data ")",144,0
Data "+",176,0
Data ",",192,0
Data "-",208,0
Data ".",224,0
Data " ",240,0
Data "0",256,0
Data "1",272,0
Data "2",288,0
Data "3",304,0
Data "4",0,16
Data "5",16,16
Data "6",32,16
Data "7",48,16
Data "8",64,16
Data "9",80,16
Data ":",96,16
Data ";",112,16
Data "=",144,16
Data "?",176,16
Data "a",208,16
Data "b",224,16
Data "c",240,16
Data "d",256,16
Data "e",272,16
Data "f",288,16
Data "g",304,16
Data "h",0,32
Data "i",16,32
Data "j",32,32
Data "k",48,32
Data "l",64,32
Data "m",80,32
Data "n",96,32
Data "o",112,32
Data "p",128,32
Data "q",144,32
Data "r",160,32
Data "s",176,32
Data "t",192,32
Data "u",208,32
Data "v",224,32
Data "w",240,32
Data "x",256,32
Data "y",272,32
Data "z",288,32
RDATA:
Data $110,816,1360,2176,2720,2720,3520,3520,4080,3520,3520,2720,2720,2176,1360,816,$110,9999
LAMER:
Screen Open 0,640,512,2,Hires
Curs Off
Cls 0
Colour 1,$FFF
Print "Well, well well, if it isn't a lamer"
Print "that tried to change the scrolling message."
Print
Locate 0,10
Centre "Bad luck loser."
Do
Centre "Bad luck loser."
For F=1 To 10000 : Next F
Centre " "
For F=1 To 10000 : Next F
Loop
DIE:
Screen Close 0
Screen Close 1
Screen 2
Fade 5
For F=63 To 0 Step -1
Mvolume F : For T=0 To 2000 : Next T
Next F
Screen Close 2
End Proc