Redgeneral, use this.
It's been slightly modified by me but credit should go to the original author but I don't know who that was!
Set display mode 640,480,16
`set window on
`set window layout 1,1,1
sync rate 40
sync on
set ambient light 100
hide mouse
Set camera fov 3.14/3
autocam off
cls 0
` Count the lines of text in the data statements then restore
total_lines=0
Rem Read in the title
read Title$
restore
repeat
read a$
inc total_lines
until a$="*"
dec total_lines
restore
` We divide by 9 to see how many bitmaps to create
pages=total_lines/9
` Now set-up the text for drawing to a bitmap
` Using this font/size we get 9 lines per "page"
` We use a yellow colour for true Star Wars style!
set text font "VERDANA"
set text size 36
set text to bold
ink rgb(255,255,0),rgb(0,0,0)
Create Bitmap 1,256,256
set current bitmap 1
Center text 123,100,Title$
blur bitmap 1,1
GET IMAGE 1000, 0, 0, 256, 256
make object plain 1000,256,256
texture object 1000,1000
set object 1000,1,0,0
delete bitmap 1
set text font "Arial"
set text size 36
set text to bold
ink rgb(255,255,0),rgb(0,0,0)
` This loop creates bitmaps and image grabs them
i=1
for p=0 to pages
create bitmap 1,640,256
set current bitmap 1
y=0
for c=0 to 8
if c > 1 then set text size 16
read text$
if text$="*" then text$=""
center text 320,y,text$
y=y+28
next c
blur bitmap 1,1
get image i,192,0,448,256
delete bitmap 1
inc i
next p
startexture=i
` This just creates a 256x256 bitmap and plots 100 stars to it.
` We make sure the stars aren't on the extreme edge, but otherwise
` it's random. Replace with a nice graphic for better effect.
create bitmap 1,256,256
set current bitmap 1
ink rgb(255,255,255),rgb(0,0,0)
for a=0 to 100
dot x,y
x=rnd(254)+1
y=rnd(254)+1
next a
get image startexture,0,0,256,256
delete bitmap 1
` This loop creates one 3D object per page of text
` it scales it for a "wide screen" effect then ghosts it
dec i
z=0
for a=1 to i
make object cube a,50
scale object a,100,0,150
texture object a,a
Set object a, 1,0,1
` ghost object on a
position object a,0,0,z
z=z+74
next a
` Turn on the fogging for that smooth fade-out effect
color backdrop 0
texture backdrop startexture
if fog available() = 1
fog color rgb(0,0,0)
fog distance 1200
fog on
EndIf
` Finally calculate the vanish value based on total_pages
`vanish=(pages*100)+100
vanish=(pages*100)
` The main loop, just moves the camera along the text slow enough
` to read at a framerate of 40. Change to suit your tastes.
` Use the up/down arrow keys to scroll text faster and in reverse.
` Remove the upkey and downkey lines to stop this "feature"
update#=0.25
` Now place the camera at the start of the text
` as we're moving the camera, not the actual text itself
c#=-50
position camera 0,1,c#
yrotate camera 180
Rem do the title bit...
yrotate object 1000,180
for i = -50 to -1000 step -4
position object 1000,0,1,i
point camera object position x(1000), 1, object position z(1000)
sync
next i
delete object 1000
c# = -50
position camera 0,1,c#
xrotate camera 20
do
position camera 0,20,c#
c#=c#+update#
`if c#>vanish then c#=-50
if c#=>vanish then end
if upkey() then update#=update#+0.25
if downkey() then update#=update#-0.25
if rightkey() then a# = camera angle z() : zrotate camera wrapvalue(a# - 1)
if leftkey() then a# = camera angle z() : zrotate camera wrapvalue(a# + 1)
sync
loop
` ---> Scroll Text
` There are 9 lines per "page".
` Maximum of 18 upper-case or 20 lower-case characters per line
` Use a * on its own to signify the end of the text (don't forget this!)
data "STARWARS"
data ""
data "EPISODE II MANY"
data ""
data "THE PHANTOM DIALOG"
data ""
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data ""
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data ""
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah blah blah blah blah"
data "Blah blah Galaxy....."
data "*"