I am definitely not the best person to look at this for you as I have no intention of learning Bmax but I threw an example together that does what Zawran has suggested.
It's not a sine scroll, it's a simple text scrolling routine that just draws a section of the scroll text string to screen.
I will be unable to provide any more help than this but hopefully it will get you on the right track.
' *************************************************
' * *
' * BlitzMax Sine Scroll *
' * ==================== *
' * *
' * By Shockwave - www.dbfinteractive.com *
' * *
' *************************************************
' *********************************************************************
' * Open Screen *
' *********************************************************************
SetGraphicsDriver GLMax2DDriver()
Const xRes = 800
Const yRes = 600
Graphics xRes,yRes,32,60,GRAPHICS_BACKBUFFER
Global Font = LoadAnimImage("sfont16.bmp",16,16,0,59)
Global ScrollText : String ' String to store the text
Global Tpos:Int' Position in text string.
Global ScrlPos:Int' Scroll Offset.
ScrollText =" "
ScrollText=ScrollText+"Just a small example of how to make a scroll routine without drawing every letter in the string... "
ScrollText=ScrollText+"This was written for Pot Noodle on the DBF forum by shockwave.. Wrap! "
ScrollText=ScrollText+" "
ScrollText=Upper(ScrollText)' Convert to uppercase
Tpos=1' Position in string
ScrlPos=0' ScrollOffset
' *********************************************************************
' * Main Loop *
' *********************************************************************
Repeat
Do_Scroller()
Flip(-1)
Cls
Until KeyDown(KEY_ESCAPE)
EndGraphics
End
' *********************************************************************
' * The Scroller *
' *********************************************************************
Function Do_Scroller()
ScrlPos=ScrlPos+2' Move the scroll offset.
If ScrlPos>16 Then ' If the text has scrolled more than the char width, reset scroll pointer and advance text pointer
ScrlPos=ScrlPos-16
Tpos=Tpos+1
If Tpos>Len(ScrollText)-52 Then Tpos = 1' Check to make sure that the text pointer hasn't gone out of bounds
End If
Local DrawPos: Int
Local TextAdd: Int
Local Letter: Int
TextAdd=0' This is added to in the draw loop to step to different letters
DrawPos=(-16)-ScrlPos' This is the current drawing position
'
' Draw letters all across the screen until we go off the screen.
Repeat
Letter=Asc(Mid(ScrollText,(Tpos+TextAdd),1))-32
DrawImage Font,DrawPos,50,Letter
TextAdd=TextAdd+1
DrawPos=DrawPos+16
Until DrawPos>=Xres
End Function