I see even you experts are as confused as me perhaps

I have now tested gettickcount and timegettime.

Confirmed that timegettime is bar far the better.

As some of you will have read, my computer seems to be ..well ****ed up somehow, timers are bonkers. Gettickcount, slowed down unbelievably with delphix..and was awful.
Timegettime runs the game perfectly, with no slow down. It works like a dream.

This is my loop procedure, it is probably awfully inefficient, so if there are any pointers you guys can add like "hey that isn't how it is supposed to be done" then tell me

Code:
Procedure TheGameLoop;
begin

While (Finished=false)do
begin

Application.processmessages;

CurrentTime:=timegettime-StartTime;

If (CurrentTime>TheInterval)then
begin

StartTime:=timegettime;

if not mainfm.DXDraw1.CanDraw then Exit;

-----the rest

Application.processmessages;

end;

end;

end;
Interval is set when you use or don't use Vsync. If Vsync, Refreshrate=monitor refresh, Interval :=1000/Refreshrate. , if no vsync, I set to 1000/60.