Sync on not only has to be before the main loop, but before the loading code also. Until the sync on command is found, everything will be automatically displayed, which is why you could see the game loading. I tried to fix your code by putting sync on at the top and the center text command I posted earlier. Does it work?
rem ---------------------
rem RPG
rem 4/4/06
rem ---------------------
rem show loading screen
sync on
sync rate 60
center text screen width() / 2, screen height() / 2, "Loading..."
sync
rem load objects
load bitmap "grass.bmp",1
load object "H-Spectre-Idle.3DS",12
load object "L-Amazon-Idle.3DS",11
load object "AlienWheet.3DS",10
load object "tree_cluster_13.3DS",9
load object "fachwerk12_LOWPOLY_TS.3DS",8
load object "spring.3DS",7
load object "hosshop.3DS",6
load object "weapshop.3DS",5
load object "shop.3DS",4
load object "chapel.3DS",3
load object "walls.x",2
load object "H-Knight-Idle.3DS",1
get image 1,0,0,128,128
texture object 10,1
yrotate object 1,180
fix object pivot 1
make matrix 1,10000.0,10000.0,25,25
prepare matrix texture 1,1,2,2
position object 2,800,0,900
hide mouse
rem scale objects
scale object 1,6000,6000,5500
scale object 4,1000,1000,1000
scale object 5,1000,1000,1000
scale object 6,1000,1000,1000
scale object 7,6100,6100,6100
scale object 8,60,60,60
scale object 9,6000,6000,6000
scale object 10,100,100,100
scale object 11,8700,8700,8700
scale object 12,8700,8700,8700
rem position objects
position object 2,1000,135,5700
position object 3,4500,0,1100
position object 4,4595,155,2000
position object 5,4595,155,2700
position object 6,4595,120,3400
position object 7,2625,20,3400
position object 8,1185,0,299
position object 9,890,0,750
position object 10,890,0,795
position object 11,890,0,1000
position object 12,4515,0,300
rem rotate objects
yrotate object 4,90
yrotate object 5,90
yrotate object 6,90
yrotate object 8,270
yrotate object 12,100
set camera range 1,9000
play object 11
loop object 11
play object 12
loop object 12
x#=500
z#=500
rem Begin loop
do
rem Control camera with arrow keys
if upkey()=1 then x#=newxvalue(x#,a#,10) : z#=newzvalue(z#,a#,10)
if downkey()=1 then x#=newxvalue(x#,a#,-10) : z#=newzvalue(z#,a#,-10)
if leftkey()=1 then a#=wrapvalue(a#-10.0)
if rightkey()=1 then a#=wrapvalue(a#+10.0)
rem Update character
y#=get ground height(1,x#,z#)+50.0
position object 1,x#,y#,z#
yrotate object 1,a#
rem Position camera to the back of the character
cx#=newxvalue(x#,wrapvalue(a#+180),300)
cz#=newzvalue(z#,wrapvalue(a#+180),300)
cy#=get ground height(1,cx#,cz#)+100.0
position camera cx#,cy#,cz#
rem Point camera at object
point camera x#,y#,z#
rem sync
sync
rem End loop
loop