Схема ограничения частоты обновления такая:
Const FPS% = 60
Global period# = 1000 / FPS
Global time% = MilliSecs() - period
Global Ticks#, elapsed%
While AppRunning()
nFPS_Int = xGetFPS()
Repeat
elapsed = MilliSecs() - time
Until elapsed
Ticks = elapsed / period
For k% = 1 To Ticks
time = time + period
GameLogicUpdate() ; тут обновляется вся логика
xUpdateWorld() ; тут надо пробовать. Возможно стоит вынести за пределы ограничивающего цикла
Next
xRenderWorld()
xFlip()
Wend
End
Вообще подобного кода на оффсайте блитца завались. Правда некоторый может глючить. Не особо разбирался в причинах.
Можно еще твиннинг вкрутить, для того чтобы анимация оставалась плавной при низкой частоте обновления логики.
Но во всяких демках с большим ФПС проблема все равно останется, потому что xRenderWorld() все равно каждый кадр вызывается. Тогда его или в ограничивающий цикл надо засунуть, что перечеркнет весь смысл твиннинга. Или просто delay(2) вставить.