snes9x_3ds icon indicating copy to clipboard operation
snes9x_3ds copied to clipboard

Star Fox (and possibly other SuperFX games) run too fast.

Open vaguerant opened this issue 8 years ago • 3 comments

I recall this as a known bug from old versions of Snes9x, but I can't say with certainty when it was patched in order for the correction to be backported. I was able to find a potentially relevant fix in the old Snes9x changelog under Snes9x 1.5, which should match the rough timeframe when the bug was fixed:

Speed adjustment of C++ Super FX emulation. (zones)

According to @kode54, the issue was that the SuperFX chip was "not regulated correctly", and since Star Fox is timed entirely based on the SuperFX's performance rather than any sort of sane internal timing, the game will run at a speed relative to the SuperFX clock speed.

For reference, I think some other SuperFX games use more stable timers, so gameplay speed doesn't change along with performance when, e.g. the SuperFX chip is overclocked.

Paradoxically, patching this bug should mean that the SuperFX is emulated at a lower clock speed, which should improve performance in Snes9x 3DS, by reducing performance of the emulated console.

EDIT: A related request would be manual settings for the SuperFX clock speed. Games in general respond well to this (i.e. they don't crash), and other emulators such as the RetroArch Snes9x ports have long allowed overclocking the SuperFX to improve performance on systems where emulation is not taxing. On New 3DS, users can probably afford to overclock the SuperFX for improved performance in games which are timed sanely.

vaguerant avatar Feb 03 '17 18:02 vaguerant

Yup, it has been reported to me too. I can have a look and see what Snes9x v1.5 did. But I'll touch up the Snes9x UI first. I've already started work on revamping the UI and don't want to stop there. :)

bubble2k16 avatar Feb 04 '17 16:02 bubble2k16

Hi, any update? thanks.

mrTruch avatar Jul 02 '17 04:07 mrTruch

Actually in one of the earlier versions I remember trying to implement the "Speed adjustment of C++ Super FX emulation. (zones)" but it screwed up timing even more.

It could be something that I don't understand about the SuperFX and the fix they've implemented. shrug

bubble2k16 avatar Oct 21 '17 13:10 bubble2k16