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...
... 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. :)