自分DelphiでSTG作ってるけど、OnIdleイベント内に↓これだけでFPS安定してるけどなあ。
小数点以下の話ならごめん(^_^;)

{
t = timeGetTime();
game_main();
while(timeGetTime() - t < 17)
{ Sleep(0); }
}