Quote Originally Posted by ericlangedijk View Post
BTW: Fullscreen GDI StretchDIBits gives me about 3000 FPS. Is this method hardware accelerated??
Depends what happens in fGamePainter.Update; If you are not using OpenGL or DirectX, then it is not accelerated.

While your loop timing works, it might have problems with no sleep() used, so the loop will use full potential of all allocated CPU cores. This can cause alot of heating and fan noise on powerful computers, or those with just a little faulty coolers. It can cause noise even from the monitor itself.

You do not need 2 tick timers. Scrolling faster simply means changing scroll value more per frame. With timing system you have, you can move things at constant speed. But if you would have possibility to change framerate, or not limit it, you can count
Code:
frameMove:=(CurrentTime-LastTime)/1000;
Using it as multiplicator for each movement, you can make things move as "per second".
Code:
player.X:=player.X+5*frameMove; // 5 units per second
(However this doesn't actually result in as smooth animation in my experience, when compared to constant speed and set framerate.)