I found your main problem and then corrected other stuff. You needed a sync in the loop for the menu, to update the screen or it runs really slow as you said. Another thing was that your > and < signs were the wrong way round (more than 250 and less than 230 is kind of impossible). Also I took the sync off command out and put a sync in the last loop as I didn't see any point in it (change it back if you want). To make it neater you could have the 'sync on' at the top and make your fading work by a timer() mechanism. I'll give you an example if you want.
hide mouse
for n=1 to 190
ink rgb(n,n,n),1
center text 320,240,"Apocalypse, Inc. presents"
next n
suspend for key
cls
for n=1 to 190
ink rgb(n,n,n),1
center text 320,240,"PROJECT NEXUS"
next n
suspend for key
for p=1 to 13
center text rnd(640),rnd(480),"PROJECT NEXUS"
next p
center text rnd(640),rnd(480),"YOU WILL DIE"
goto menu
sync on
sync rate 30
menu:
cls
show mouse
start=0
do
mx#=mousex()
my#=mousey()
center text 320,240,"BEGIN"
if mx# < 350 and mx# > 290 and my# < 250 and my# > 230
start=1
endif
if start=1 and mouseclick()=1
goto success
endif
sync
loop
success:
cls
do
center text rnd(640),rnd(480),"HA"
sync
loop
Why the hell'd you ask me for crying out loud!?!