Thanks a lot for describing this observation! Apparently there are bottlenecks in both engines that prevent running with 60 fps!The other engines, SP and RND, still stutter during scrolling. I think those are not smooth because the Vita just cannot achieve steady 60 fps while scrolling. I checked with the fps counter, and it dips down to 55 once the scrolling starts. The motion of rocks and other objects is perfectly smooth, it is just the scrolling that stutters.
Yep, seems perfectly reasonable. (While disabling Vsync would clearly be required for the faster modes, I think you're right that it will indeed also affect the slower modes due to the synchronization to the screen refresh rate.)I therefore decided to turn Vsync off for all modes apart from the new 60 fps mode.
That is indeed very interesting. Did you experience this slow-down problem when running any of the EM/EMC level sets that come from the Emerald Mine Club level set? Because they should all set "game.use_native_emc_graphics_engine: true" in their graphics configuration files, therefore preventing this code path from being executed.On a sidenote I found that there's a loop in the EM engine that causes significant slow-down on the Vita. The loop causing the slowdown is the following one in graphics.c, line 302:
Therefore, I can only imagine that you observed this slow-down when running a level using the EM/EMC game engine with standard artwork, therefore triggering the game engine to use the non-native artwork (from the point of view of the EM/EMC game engine), which would indeed cause this code to be executed.
And yes, I've also already found out that it seems to be slooow due to this specific bottleneck (and therefore deactivated it in warp or headless mode, where no screen updates are drawn).
But I wasn't aware of this being a problem when running the game with normal (or 60 fps) speed!
Your workaround is a perfectly fine first solution to this issue, but I will also investigate if/how "SetGfxAnimation_EM()" could be made faster. But setting graphics for unused tiles should be prevented anyway, and I wasn't aware of doing this when I first found out that this is slow in warp/headless mode... o well!
I will also have a look at the SP and RND game engines to find out why they are not fast enough for 60 fps... :-/