yes x has a huge jump whenever the game is not drawn proper, or when i hold the menu....

You may have done this yourself, whilst a timer is running, hold menu and the counter stops, then when you let go, the counter jumps to where it should be. The game itself pauses but of course the Gamecounter hasn't.

I guess I will have to go along the lines of pausing the game as you say to stop this happening.

What about a computer that is really slow though?

if x>500
then
begin
direction:='left'; {direction is a global variable for the row}
end;

if direction:='left' then x:=x-1; {obv. i am using deltatime here.... not x:=x-1 but you get the point}

this is to make the sprite bounce of the wall, a space invaders game would be the closest idea. Unfortunately if too much time is skipped when the game gets control back, x may be 600 and will have ages to come back on itself If i say if x>500 then X:=500, the last sprite in a line will go out of sync with the rest in that line

I can send an example if you wish?