You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Treewide: Rework input handling, frame limiter and serviceRepaints
The idea behind this is fixing a bunch of regressions caused by the
newer input handling, and the better render sync code.
Frame limiting is now donw by lcdui's Canvas and GameCanvas instead
of MobilePlatform's over-arching flushGraphics() method, which was
prone to inaccuracies if games heavily used serviceRepaints() to
constantly sync the render state. Most notably, this rework fixes
Sonic 1's regression of improper frame-pacing due to serviceRepaints
calls (which made the framecounter and limiter think the game was
running at double the framerate), at the same time it keeps the
Panasonic VS3 version working because it only needs serviceRepaints
to sync the upper area of the screen. Previously fixing one by
messing with serviceRepaints() logic would break the other. Beyond
Sonic 1, it should fix pretty much any instance of inaccurate timing
in other games without reintroducing flickering in games such as
Pipyakas/Boombakas, so it's related to issues #10 and #68.
Furthermore, input is no longer queued into serial calls, because
it's no longer needed. This helps Puzzlegeddon (#71), and Ratatouille
without breaking anything else that i could find at the moment, and
Ratatouille was one that previously required queuing those inputs.
Heroes Lore: Wind of Soltia regressed randomly at some point and
gets stuck in a white screen after pressing any key, so it can't
really be tested further, although the input delay when pressing
keys appears to be gone from it as well.
0 commit comments