Skip to content

Instantly share code, notes, and snippets.

@fredrik-rambris
Created March 30, 2024 20:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fredrik-rambris/fc8b45868303ecad73de32fedaf8bddd to your computer and use it in GitHub Desktop.
Save fredrik-rambris/fc8b45868303ecad73de32fedaf8bddd to your computer and use it in GitHub Desktop.
AMOS Sine-scroller
' Sine-scroller by Fredrik Rambris
Dim _SINE(64)
_MAXLETTERS=20
Dim _BOBCYCLE(_MAXLETTERS)
_SCROLLTEXT$="This is a sine wave scroller that is as fun to watch as hard to read. Greetings to everyone. "
CAPTURE_FONT
CALC_SINE
Screen Open 0,320+16,64,2,Lowres
Curs Off : Hide : Paper 0 : Cls 2
Palette 0,$FFF,$8
Screen Display 0,,,320,256
Double Buffer
_LETTER_X=Screen Width-16
_CURRENTLETTER=1
_MAXBOB=0
_CURRENTBOB=0
PLACE_LETTER
Repeat
For _BOB=1 To _MAXBOB
Add _BOBCYCLE(_BOB),1,1 To 64
Bob _BOB,X Bob(_BOB)-1,_SINE(_BOBCYCLE(_BOB)),
Next _BOB
If X Bob(_CURRENTBOB)<_LETTER_X-16 Then PLACE_LETTER
Wait Vbl
Until Inkey$<>"" or Mouse Key
End
Procedure PLACE_LETTER
Global _SINE(),_CURRENTLETTER,_MAXBOB,_CURRENTBOB,_SCROLLTEXT$
Global _BOBCYCLE(),_MAXLETTERS,_LETTER_X
Add _CURRENTBOB,1,1 To _MAXLETTERS
If _MAXBOB<_MAXLETTERS Then Add _MAXBOB,1
_BOBCYCLE(_CURRENTBOB)=1
_YBOB=_SINE(_BOBCYCLE(_CURRENTBOB))
_IMGNUM=Asc(Mid$(_SCROLLTEXT$,_CURRENTLETTER,1))-31
Bob _CURRENTBOB,_LETTER_X,_YBOB,_IMGNUM
Add _CURRENTLETTER,1,0 To Len(_SCROLLTEXT$)
End Proc
Procedure CALC_SINE
Global _SINE()
Degree
For P=1 To 64
DEG#=P*(360.0/64.0)
_SINE(P)=(Sin(DEG#)*16.0)+16
Next P
End Proc
Procedure CAPTURE_FONT
Screen Open 2,320,8,2,Lowres
Screen Hide : Hide : Curs Off : Flash Off : Paper 0 : Cls 0
Screen Open 3,320,16,2,Lowres
Screen Hide : Hide : Curs Off : Flash Off : Paper 0 : Cls 0
For I=Asc(' ') To Asc('z')
Screen 2
Text 0,6,Chr$(I)
Zoom 2,0,0,7,7 To 3,0,0,15,15
Screen 3
BN=I-Asc(' ')+1
Get Bob 3,BN,0,0 To 15,15
Next I
Screen Close 2
Screen Close 3
End Proc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment