We used __DisplayGetFPS before but sadly it takes about 60 frames before
the correct framerate is returned by that function. We now use the
number of cycles that elapsed during a NativeRender call and calculate
the frame time from that.
Sadly for this to work we have to throttle PPSSPP, which means that it
tries to synchronize by default. As both PPSSPP and OpenEmu
synchronizing can lead to some issues, we have to disable the sleep
functions in the DoFrameTiming function of sceDisplay.cpp.
This fixes the audio crackle upon changing framerates, but doesn't
resolve all audio issues.