Tain said:
Yo byuu, bsnes is the only Windows emulator for anything I've tried that actually can run a game without screen tearing or stuttering or lag. Generally if I want to get rid of tearing I have to turn on some vsync option that makes a few frames of lag, but bsnes with aero off ain't like that.
How'd you do it?
An emulated system has its own refresh rate and audio sample rate. For SNES, it's ~60.09hz and ~32040hz. A PC also has its own refresh rate and audio rate. PCs like to report them as exactly 60hz and 48000hz, but they're usually off by ~1% in either direction.
So, no Vsync at all will result in tearing. Most emulators will use double/triple buffering, and output a frame every Vsync. But since the emulated system and PC refresh rates aren't perfectly aligned, eventually you end up with too many or too few frames. If your monitor were exactly 60hz, and your input was 60.09hz, after ~10 or so seconds, you'd have an extra frame that had to be discarded to keep smooth audio. When this happens, you get a stuttering effect. That, and triple buffering requires 1-2 extra frames, so it has an additional 16-32ms lag on your input+audio output.
I don't adjust the emulated processor speeds, because that would be inaccurate (games could detect that, and some could break.) What I do is give you a profiling tool that determines your exact refresh/sample rates. Then I statically adjust the pitch (by less than 1%) so that the emulated system is outputting data at the same rate as your PC.
It works great, but has some issues. Poorly made compositors like Windows DWM and Linux Compiz fight for the Vsync signal (OS X does it right and fakes the application Vsync immediately after the screen is drawn.) And you have to time your individual monitor and sound card in the emulator first, which takes a few minutes.
Damian. said:
I used BSNES for a while, but had to stop because even with a Core i7 at 4.7GHZ, I still got some slowdowns, hiccups and sound skipping issues that ruined the experience for me.
That's definitely more than fast enough. You have to do the above, and make sure video+audio sync is on. Worst case, disable DWM on Vista/7 (you're out of luck on 8.)
As others have said already, higan is very difficult to set up for first-time users. It may not be worth the hassle for you to do all of that, and that's okay.
tborsje said:
The point of emulation should be whatever the user believes it should be. And the vast majority of users just want to play games in the most enjoyable way. BSNES is a great, fascinating project but it is strictly enthusiast level.
Correct. Although the worst emulators have game-breaking bugs, they usually occur in the less popular (and less well programmed) games. Few people notice or care that a game is running 20% too fast, or is missing an animation. Especially when they aren't comparing the emulator to real hardware. But some people really are very sensitive to this, and others claim to be.
My general philosophy has been to use the most accurate emulation your system can handle at full speed. But if it dips below 60fps, use something faster. Nobody likes playing with frame skipping or less than real-time speed.
higan is of course difficult at first. Once you understand it, it's nice. But I don't blame casual gamers for not wanting to bother when other emulators try and make it easier to get started with. So in that case, Snes9X is fine.
And then you have modern systems, N64 and up. I'm one of the most ardent accuracy folks around, but even I wouldn't want to play N64 at 320x240 or GC/Wii at 640x480, when I could use HLE tricks to upscale it to 1080p.
So the main difference: accuracy-oriented emulators want to preserve the hardware after it's gone for good, so people can realize what playing a game was actually like back in the day. It's a historian's endeavor. Gaming-oriented emulators want to make the experience as awesome as possible, so they can eliminate sprites-per-line limits, overclock the CPUs to eliminate lag, and upscale the graphics.
They both have their uses, and it's great to have options. It's when people try and compare them directly ("which is better?" - it depends on what you care about more.) and get over-zealous, that we break out into arguments, and that just starts flamewars.
Very counter-productive since we all work together, anyway. I wrote a good chunk of Snes9X myself (like the sound processor), so it hardly matters to me whether you prefer Snes9X or bsnes.