I don't know if this is any help, but if i'm ever in the situation where i need a little more accuracy in my movement engines, i make a little 'for' loop
Make a global varible called like, 'MovementAccuracy'
change the sampling to linear
And then at the start of layout (or change initial value) set it to the amount of accuracy you want
I usually set it to around 50, the higher it is, the more accurate you will get, although i'm not sure the cpu load it would have if you made it too high
Then do something like this
when right arrow is down
--for "Move" from 0 to global('MovementAccuracy')
== Set Player.X to Player.X + 200 * (timedelta / global('MovementAccuracy')
(the -- indicates a subevent)
(the == indicates an action)
Basically, the 'logic' runs 50 times per tick (or however many you set your global to) as opposed to once per tick, but you still get to use timedelta and use all your cool motion blur and timescaling stuff!
Apply that to your jumping code or moving code or whatever and it's pretty much pixel perfect
I had an example running at 1 fps that only went one pixel out
Or another method i suppose would be having variables like: "JumpStart" and "JumpMaxHeight" and make it so when the player jumps, the jumpstart records the Y value at 'ground level' and set jumpmaxheight to the jumpstart minus however high you want him to jump.
Then if the difference between the player's Y and jumpstart goes beyond jumpmaxheight, manually set the distance and code in the falling. Although i suppose this method would be a little harder if you weren't using a custom movement, and for REALLY low frame rates it might still require the use of that 'For' loop i just mentioned
I hope i made myself clear