oh oops sorry add in VSYNC after WHILE 1 next theres wait, almost NEVER use WAIT in an active program with moving in it, instead use a INC/DEC loop like: IF BUTTON() AND #A THEN REPEAT VSYNC INC WAITS,1 UNTIL WAITS==100 ENDIF or something like that lol. for stopping on the ground.. what does that mean..? there is no ground, do you mean a bgtile or the screen or a sprite..? what? tbc