I don't think we're moving in the right direction. Everything was working fine untill I introduced the following in the timer event:

dxtimer1.Interval:=1000 div 70;
NewTime := TimeGetTime;
UpdateSpeed := (NewTime - OldTime) * OneMSec
OldTime := NewTime;

The objects are moved as such:

TMan(MyMen[loop]).DoMove(1); in the statemachine.
and y := y + (1 * updatespeed); in the doMove Procedure.

I've run the game without any keyboard input and it's jerky so I don't think it has to do with input delays from the keyboard.

I'll keep testing with different values in: UpdateSpeed := (NewTime - OldTime) * OneMSec;