Post #3434657
2025-09-07 00:42 UTC
More progress on performance: when running an N64 game in LLE mode and if it doesn't run at full speed, the app will show a toast suggesting to switch to HLE. This only happens once (there's a debug flag to show it every time, that's how I took that screenshot), and it's just there for discoverability reasons, since we default to LLE/accuracy.
Detecting slowdowns wasn't particularly straightforward tho. For most platforms this just involves tracking average framerate... except for N64. Mupen is entirely async, and run_frame() callbacks are fast. If it slows down, it does this internally and we'll never even know about this.
But one thing we do know is that we get audio buffer underruns. Normally, the amount of samples we play should be more or less equal to the core sample rate × channels. However, if the game is slow, we'll play less samples and it will be audible as crackling and stutter. So, the check is very simple: the game is slowing down if we played 95% or less than the sample rate.
Replies (1)
-
@alice@mk.nyaa.place 2025-09-07 02:12
And more TV filter improvements: after finding a video showcasing N64 composite on PAL I noticed the colorburst on standard PAL was completely wrong, and it's fixed now (I think). Wow standard PAL dot crawl is wacky compared to NTSC. It's even visible on 60 Hz screens. I also noticed the height and aspect ratio were wrong for PAL N64 games. All of this is fixed now, but yeah, I suspect there will be plenty of PAL bugs like that, since I don't test it nearly as regularly :/