Page 1 of 1

[not a bug] Snes9x 1.53 30 fps in fake fullscreen with vsync

Posted: Wed Apr 27, 2011 3:59 am
by Lex
Hi! Thank you so much for this release! I love Snes9x! :) However, I immediately discovered a bug in this version of Snes9x.

With vsync enabled, Snes9x...
  • ... runs at 60 fps in windowed mode.
    ... runs at 30 fps while in fake (emulated) fullscreen mode. <-- the bug
    ... scrolls smoothly in scrolling games.
With vsync disabled, Snes9x...
  • ... runs at 60 fps in windowed mode
    ... runs at 60 fps while in fake (emulated) fullscreen mode.
    ... scrolls jerkily in scrolling games.
I love the smooth scrolling of vsync, but I also want to run games at their full speed in fake fullscreen mode.

For the record, I don't have a slow computer. Chrono Trigger runs at just over 1000 fps while fast-forward is held. That's one thousand.

I am running Windows Vista with Aero on (to work around the Windows vsync-not-working-at-all-anywhere bug) on an Intel i7 920 overclocked @ 3370.46MHz with an nVidia GeForce 9800GTX+ GPU.

I had posted this in the Snes9x 1.53 release thread, but I realized that was the wrong place to post bug reports.

Re: Snes9x 1.53 30 fps in fake fullscreen with vsync enabled

Posted: Wed Apr 27, 2011 4:06 am
by the_randomizer
Lex wrote:Hi! Thank you so much for this release! I love Snes9x! :) However, I immediately discovered a bug in this version of Snes9x.

With vsync enabled, Snes9x...
  • ... runs at 60 fps in windowed mode.
    ... runs at 30 fps while in fake (emulated) fullscreen mode. <-- the bug
    ... scrolls smoothly in scrolling games.
With vsync disabled, Snes9x...
  • ... runs at 60 fps in windowed mode
    ... runs at 60 fps while in fake (emulated) fullscreen mode.
    ... scrolls jerkily in scrolling games.
I love the smooth scrolling of vsync, but I also want to run games at their full speed in fake fullscreen mode.

For the record, I don't have a slow computer. Chrono Trigger runs at just over 1000 fps while fast-forward is held. That's one thousand.

I am running Windows Vista with Aero on (to work around the Windows vsync-not-working-at-all-anywhere bug) on an Intel i7 920 overclocked @ 3370.46MHz with an nVidia GeForce 9800GTX+ GPU.

I had posted this in the Snes9x 1.53 release thread, but I realized that was the wrong place to post bug reports.
Odd....I have vsync enabled, and I also have an nVidia GPU. Use the settings I currently use under the settings;


Output Method - Direct3D or OpenGL
Sound Driver - XAudio2 (make sure you install it from the XAudio2 website first, this works better on Windows Vista/7 than DirectSound does)
Input Rate - 31850Hz to reduce any popping sounds you may hear
Buffer Length - 128ms to 160ms
Playback Rate - 32KHz


In the nVidia Control Panel, go to "Manage 3D settings", then under the tab "Vertical Sync" try the "Use the 3d application settings" or "force on" modes. Make sure your monitor is set at 60Hz, and that "Triple Buffering" is set to "Off". If all else fails, try updating the GPU drivers.

Posted: Wed Apr 27, 2011 4:27 am
by Lex
Of course I'm using Direct3D, XAudio2, with the correct input rate, buffer length, and playback rate. This isn't just an audio issue anyway. The emulator runs smoothly and perfectly at 60 fps in windowed mode. Snes9x' fps counter actually goes to 30 fps when I press Alt+Enter to enter fake fullscreen mode and runs at half speed. My video driver configuration is correct too; letting Snes9x determine everything.

For the record, the fps counter says exactly this in windowed mode (even at 4x size):

"60 fps
60/60"

In fake fullscreen mode, the fps counter says this:

"30 fps
60/60"

I was led to believe by World of Warcraft which also has a fake fullscreen mode that execution should be identical to windowed mode while in fake fullscreen mode. It seems strange that anything would change when switching between windowed and fake fullscreen modes in Snes9x.

Edit: I tried setting my buffer length to the insanely long 160 ms you suggested, but that didn't change anything, so I set it back to 64 ms. I don't hear any crackling ever anyway.

Edit: I tried changing the highlit number in the following screenshot to 1...

Image

... and the fps counter changed to say this:

"60 fps
30/60"

So, apparently, if it can skip every other frame, the emulator can "run" at 60 fps in fake fullscreen mode. Of course this means it's running half as smoothly as it should. There's definitely something wrong in Snes9x here.

Edit: Okay, apparently all this nonsense can be ignored. After fiddling with these exact same few settings continuously for the past hour, it suddenly runs smoothly at 60 fps in fake fullscreen mode with vsync enabled. This thread can be freely locked.

For the record, my final configuration is seemingly identical to my original configuration. This really makes zero sense. Oh well. I'm happy now. :)

Posted: Wed Apr 27, 2011 5:19 am
by the_randomizer
Works fine on my end. I doubt it's a problem with Snes9x. Try turning off Triple Buffering and setting skipped frames to 0.

Posted: Wed Apr 27, 2011 5:34 am
by Lex
I edited my previous post.

Posted: Wed Apr 27, 2011 2:05 pm
by the_randomizer
Lex wrote:I edited my previous post.

Gotcha