• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

What are the most accurate emulators per platform?

I wonder if it's compatible with modern PC.
It's more compatible with modern PCs than it was when I first started dabbling in Saturn emulation in the mid-to-late '00s.

It has its issues, though. Some games are playable with somewhat annoying quirks (BUG!'s background spasms up and down randomly, Daytona USA is obscenely quiet). Some games run, but are unplayable (Rayman interprets all input as turbo, making it impossible to clear the first stage). Some games crash outright (Clockwork Knight 2 crashes when you try to load the main campaign's menu; Croc shows a black screen, IIRC). But Panzer Dragoon Saga is, IIRC, fully playable and mostly-accurate in it, which alone makes it a worthy endeavor.
 

byuu

Member
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.
 

Teppic

Member
Hey, byuu, what's the deal with sound going *BRRRR* when I go through the menus with a game running? I do use an older version (083), it might have been addressed already, or it's something that can't be fixed for some reason.
 

daninthemix

Member
Byuu - just want to say I think you're as important to emulation as Ken Kutaragi was to game console development. Thanks for being here :)
 

byuu

Member
Teppic said:
Hey, byuu, what's the deal with sound going *BRRRR* when I go through the menus with a game running?

Default driver is DirectSound, which is a ring-buffer design. When menus are entered, the application loop is suspended, so the buffer repeats the last 100ms over and over.

Go to Settings->Configuration->Advanced, change the audio driver to XAudio2, and restart.

I would default to XAudio2, but systems with old DirectX drivers will produce no sound at all, even though the API says everything is fine. Figured stuttering menu sound was better than no sound for the initial out of the box experience.

Some people multi-thread the DirectSound driver to avoid this, but I didn't want to spend a lot of time on it when XAudio2 works great.

daninthemix said:
Thanks for being here

Sure, thanks for having me.
 

Ty4on

Member
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.
What is the best N64 emulator/plugin?
And do you have any idea why Golden Eye and Perfect Dark are so hard to emulate? :p
 

rezuth

Member
Can I steal this thread a bit? I want to buy a NES clone, anyone knows which is the best? Would love to get an original but boy.. They are expensive here.
 

alr1ght

bish gets all the credit :)
Oooh, byuu is here. Did you ever release those full SNES box scans since you completed your US SNES set? I'm sure some people would be interested in helping fix them up in photoshop.
 
At what point is copyrighted software able to be sought, dloaded and played for free without it being piracy ? 1 year, 2 years ... 3, 5, 10 ??
14 years like copyright originally was sounds reasonable. Requiring manual extensions also ensures that abandoned and discarded copyrights fall into the public domain more quickly than ones companies want to keep.
 
Oooh, byuu is here. Did you ever release those full SNES box scans since you completed your US SNES set? I'm sure some people would be interested in helping fix them up in photoshop.

That's right, I forgot about this! We need the info!

At what point is copyrighted software able to be sought, dloaded and played for free without it being piracy ? 1 year, 2 years ... 3, 5, 10 ??

95 years. Thank Disney.
 

alr1ght

bish gets all the credit :)
maybe someone can help with this. Higan/BSNES seems to not scale the entire way when going fullscreen. I just want a 4:3 aspect with no windowboxing in Higan. i've tried messing with the overscan options, but that just crops it more.

Higan
kw3hRtS.png

Sdtxjlw.png

What I want it to look like
SNES9X
 

byuu

Member
The SNES outputs video at 256x240, but on NTSC TVs you don't see the extra lines. Play Super Mario All-Stars (EU) and you'll see that it fills your entire screen (in scale and stretch mode.) I don't currently provide an option to crop off the 16 pixels that are usually blank for NTSC games, sorry. (Due to the design of the multi-emulator not supporting changing resolutions dynamically between PAL and NTSC.) However, we'll make a shader to do this for the next release. It'll also be multi-pass, so you can combine the border crop with other filters (CRT, scanlines, HQ2x, etc.)
 

gblues

Banned
Wow, start talking about accurate emulators and byuu himself shows up. Kickass.

Got a question for you, byuu: any plans for FDS support? The FDS system also included a couple extra sound channels, so e.g. Metroid sounds quite different between the FDS and NES editions.
 

daninthemix

Member
What is the best N64 emulator/plugin?
And do you have any idea why Golden Eye and Perfect Dark are so hard to emulate? :p

In my opinon: Project 64 1.6, Glide64 for video, either Jabo 1.6.1 or Azimer HLE for audio.

Goldenye is fine as far as I'm aware? Never tried Perfect Dark.
 

Teppic

Member
Default driver is DirectSound, which is a ring-buffer design. When menus are entered, the application loop is suspended, so the buffer repeats the last 100ms over and over.

Go to Settings->Configuration->Advanced, change the audio driver to XAudio2, and restart.

I would default to XAudio2, but systems with old DirectX drivers will produce no sound at all, even though the API says everything is fine. Figured stuttering menu sound was better than no sound for the initial out of the box experience.

Some people multi-thread the DirectSound driver to avoid this, but I didn't want to spend a lot of time on it when XAudio2 works great.
Thanks. Works great now.
 

Corky

Nine out of ten orphans can't tell the difference.
Byuu

1) I love you

2) Using bsnes fullscreen and not paying real attention to any framerate counter I never know when it's the emulator that's accurately emulating frame rate drops and/or stutter OR when it is my pc not keeping up. I check the taskmanager from time to time ( not sure how good of a tool it is to gauge my actual cpu-usage and potential bottleneck ) and the cpu 'still has power to give'.

My question is, what should be the optimal clock of my i7 2600k ( currently running 4.4ghz ) to ensure that the emulator can run fully unhindered by aforementioned clock?


Thanks <3!
 

tborsje

Member
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.

I completely agree, especially with your notion of the distinction between accuracy and gaming oriented emulators. I think that one of the greatest aspects of emulation is in preservation, and BSNES\higan are really the best examples of emulation as an 'historian's endeavor'.

The issue that I have is really just with a certain group in the userbase. On a few forums - NeoGAF for one, and there used to be some on NGemu when I used to read it, there seems to be a belief that gaming-focused emulators are 'wrong'. I've seen arguments where people have tried to shame people use those sorts of emulators as if they were committing some sort of crime against gaming. Which is, of course, just silly. People should be able to enjoy classic games however they want to.
 

Durante

Member
That's the normal case with emulation, for sure, and when you do that you obviously get screen tearing (or stuttering when using vsync) but many emulators (including bsnes and MAME) can very slightly alter the timing of the emulated system to match my display. Thing is, MAME has to use D3D's "standard" vsync to do that (which, in MAME's case, makes for something like three frames of lag on my PC), where bsnes seems to get perfect results in D3D without having to.
My solution is rather to drive the output display at the exact frequency that the emulated system requires, using custom resolution/refresh settings. That works well for me.
 
Never tried BSNES, but apparently GAF loves it. I use ZSNES and it is pretty awesome (great upscaling filters/save system/controller support etc).

What's the advantages of BSNES?
 

Tain

Member
byuu said:
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.

Thanks for the response. I didn't know that about OS X. The setup is totally worth it for the results.

My solution is rather to drive the output display at the exact frequency that the emulated system requires, using custom resolution/refresh settings. That works well for me.

I'll often try to do this with custom resolutions, but I'll still get a stationary tearing line at a random spot on the screen. I've wondered if there's a way to avoid this in, say, MAME, without too much work.
 

Durante

Member
I'll often try to do this with custom resolutions, but I'll still get a stationary tearing line at a random spot on the screen. I've wondered if there's a way to avoid this in, say, MAME, without too much work.
Well yes, you still need vsync, but with synced refresh rates you should at least not get the intermittent stuttering when the emulated and output refresh rates diverge. If the emulator is implemented well (and your driver queue is configured correctly for low latency) there should be at most 16 ms of lag.

Actually, what I usually do with my projector (which takes anything from 24 to 124 FPS) is using exactly twice the refresh rate of the emulated system. That way, lag with vsync should be at most 8 ms, and I don't notice that.
 

byuu

Member
gblues said:
byuu: any plans for FDS support?

Yes, but not for a long time. The disk drive timing looks to be particularly challenging.

Corky said:
My question is, what should be the optimal clock of my i7 2600k ( currently running 4.4ghz ) to ensure that the emulator can run fully unhindered by aforementioned clock?

I run my 2600k at 4.4GHz and it's always been plenty. Easiest way to tell is to uncheck sync video+audio, and check your framerate. If it's 80+fps, you're going to be fine. Typically you'll know when it's the emulator choking because the sound will garble up.

Worst case, drop to the balanced profile. More than twice as fast, and only perceivable difference is in one or two odd games.

tborsje said:
On a few forums - NeoGAF for one, and there used to be some on NGemu when I used to read it, there seems to be a belief that gaming-focused emulators are 'wrong'

Yes, and that just ends up getting people angry at me for some reason. But it does go both ways. To see the other side, try : http://www.ngemu.com/forums/showthread.php?t=154649

People just get too worked up over things. And I'm sure there's also false flag trolls on either side trying to be as obnoxious as possible.

daCuk said:
The problem with BSNES is its humongous resource consumption... the price to pay for its accuracy

The speed issue will resolve itself (it actually did six years ago), it's just that people stopped upgrading PCs a few years back.

There's also the folder format. A straight list of ROM files is great for quick gaming, but it sucks for preservation. I use folders to store a description of the PCB layout and components, information about the game (a title that isn't mangled for NTFS and sorting, Japanese titles in actual Japanese, serial codes, etc), box art, manual scans, cartridge artwork, etc. Some of that is optional (scans), some of it is required for better emulation (board descriptions, coprocessor firmware.) I don't use folders to be difficult, I do it because I need more data than standalone ROMs provide. Because those fine details are bsnes' raison d'etre.

If this were the common accepted format, I doubt anyone would mind. But many people, here included, are annoyed by this. I do offer a main menu option to load game files and archives directly. But since that generates a shadow copy in the folder format (using a built-in database of all the games I have dumped), it's still not good enough.

And then you have the camp that loves the ZSNES UI. Which ... to each their own.

Tain said:
I'll often try to do this with custom resolutions, but I'll still get a stationary tearing line at a random spot on the screen.

This is a bane of Windows and Linux gaming. Some drivers report Vsync too late, and so the app starts drawing during the screen refresh. Direct3D9 had a nice raster scanline position poll, so I've thought about offering a Vsync adjustment based on that to eliminate this tearing. Sadly, no similar raster scanline API for OpenGL, or for Linux period.

gravitybear said:
and they don't on ZSNES?

No, but it's usually close enough that people don't care or notice.

For some obvious examples: play Zelda 3, and watch the opening triforce animation. Now compare it to anything else, including Snes9X.
Or try Battle Blaze, and see how it handles the title screen.
 
Any hopes on the horizon out there for Jaguar and 3DO? I've always wanted to see what would've came of those quirk with if only the machines were supported longer---the Jaguar especially since there was that one insane game that got a GOLD edition, whose name escapes me but has a spot on Wikipedia, with online multiplayer and all sorts of stuff quite advanced for those times.
 
Trying out higan and it seems to be slow. SnesGT seems to be way better.

edit: gonna check out byuu's suggestions.

Still having issues, 4.2ghz and getting stutters. Happened about 5 times in 1 level of SMW. Runs at 90-120 fps when video and audio aren't synched with random dips to 50 fps. Doesn't quite feel 60 fps either sorta like frames are being dropped. Happens in all 3 modes. I definitely do appreciate the graphic quality though.
 
Just leaving a question here for byuu.. Wondering if you're planning on making Higan frontend friendly, like making command line options to start in fullscreen and making ESC a quit button, and also something like auto save state on exit and auto load state on open. These are things that ZSNES allows for and my whole SNES library is in my Steam Big Picture Mode so I can launch SNES games from it. I basically am making it mimic Nintendo's Virtual Console functionality. Would you ever consider adding such functionality to Higan because I'd love to be able to do this with a better emulator such as yours.
 

Platy

Member
NullDC. Though I've never tried it myself as ripping my GD-Roms would be a hassle.

Useless trivia :

Long time ago a friend set on a quest to rip a dreamcast game he loved so much to play on the pc.

Long time passed and he FINALLY got it and emulated and it was GLORIOUS !

and .... 2 weeks after that they announced that Marvel vs Capcom 2 would be released on XBL and PSN
 

Boss Doggie

all my loli wolf companions are so moe
Useless trivia :

Long time ago a friend set on a quest to rip a dreamcast game he loved so much to play on the pc.

Long time passed and he FINALLY got it and emulated and it was GLORIOUS !

and .... 2 weeks after that they announced that Marvel vs Capcom 2 would be released on XBL and PSN

tbqh compared to the release on XBL/PSN, I'd rather play the DC version. The screen isn't "forced" that you'd get that weird empty space on the sides, etc. Capcom learned its lesson for other games (Darkstalkers and Jojo) but I'm surprised they didn't patch it for MvC2.
 

oldmario

Member
i have a problem that only happens with epsxe, when i go to set controls for my controller in the config menu it's impossible to do so if i have no controller plugged in and click on a button it auto changes to "POV2_UP" and if i have the controller plugged in it changes when i click on to "POV1_UP" i've tried other games and emulators and none of them do this, epsxe is the only one that does it to me

i've redownloaded the emulator a couple times, used different versions and still no change
 
i have a problem that only happens with epsxe, when i go to set controls for my controller in the config menu it's impossible to do so if i have no controller plugged in and click on a button it auto changes to "POV2_UP" and if i have the controller plugged in it changes when i click on to "POV1_UP" i've tried other games and emulators and none of them do this, epsxe is the only one that does it to me

i've redownloaded the emulator a couple times, used different versions and still no change
Use Xebra. Best PSX emu by far IMO.
 

petran79

Banned
Regarding arcade games, I'd suggest ShmupMAME. It eliminates a lot of speed and latency issues regarding controls, especially in fighters.
 
Top Bottom