Only just got round to looking at this thread - just to set the record straight here...
You really really should
use TimeDelta based movements - it's an important aspect of designing a game if you use custom movements! TimeDelta has limited accuracy and in practice will vary by a small, random amount every frame. This means sometimes, by chance, it will work, and other times it won't. You cannot guarantee you will land perfectly on top of the ground so you do need a little while loop to push you up out of the ground. And as for this:
[quote:16vl06ng]usually I like to build the engine without the need to constantly push sprites out of backdrops they're not supposed to overlap.[/quote:16vl06ng]
As you might realise, it's a perfectly necessary part of designing a good custom platform engine - in fact most movement engines (even the built in behavior ones) use some kind of push-out algorithm. So it's a bit like saying you're going to design a custom 360 degree movement engine without sin or cos. In other words, good luck with that
In conclusion, I think the while loop solves this issue, no?