リンク先のスクリプトの改変版です。
GetTickCount() と timeGetTime() はどちらもWindows が起動してから経過した時間を返しますが、プロセスを起動するごとにそれぞれのAPIが返す時間に固有のズレができるようです。
でawaitでは一貫してtimeGetTime()で取得した時間を使うので問題ないのですが、waitではGetTickCount()で取得した時間を基準としてtimeGetTime()で取得した時間まで待つので、timeGetTime()の方が充分大きい値(恐らく5ms以上)を返す場合、waitが実質機能しません。
3.5系では若干事情が変わりそうですが、少なくとも3.4ではawaitでwaitで指定したかったのより若干長めの時間待つのがいいんじゃないかと
#uselib "kernel32.dll"
#cfunc GetTickCount "GetTickCount"
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
SizeX = 500 : SizeY = 40
screen 0, SizeX, SizeY, 1, 0, 0;( ginfo_dispx - SizeX ) / 2, ( ginfo_dispy - SizeY ) / 2
PreTime = gettime(6)
repeat
repeat 50
wait 1
//描画
redraw 0
color 255, 255, 255 : boxf 0, 0, 30, 20 : color
pos 0, 0 : mes Fps
redraw 1
gosub *GetFps
loop
t1 = GetTickCount()
t2 = timeGetTime()
title "" + (t2 - t1)
loop
*GetFps
FpsCnt ++ : PostTime = gettime(6)
if PostTime ! PreTime : Fps = FpsCnt : FpsCnt = 0 : PreTime = gettime(6)
return