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

Cycle accurate emulators

jett

D-Member
BSNES is cool and all, but the difference between it and ZSNES(which hasn't been updated in years) is almost negligible. Which is fortunate for me because BSNES has framerate issues in some games on my PC. :p Didn't know though that it had been rolled into this Higan thing.

Sometimes though a non-super-accurate emulator helps, like for instance an older version of ZSNES runs Star Fox a a higher framerate than the proper release(while keeping the same game speed).
 

Harlock

Member
Good article. I was not aware of much things that can go wrong or different in old games running on emulators. And a valid point about game translations using roms specific for one emulator. This translators will be unused when this specific emulator cant run in new PC/mobile hardware.
 

Tain

Member
BSNES is cool and all, but the difference between it and ZSNES(which hasn't been updated in years) is almost negligible. Which is fortunate for me because BSNES has framerate issues in some games on my PC. :p Didn't know though that it had been rolled into this Higan thing.

Sometimes though a non-super-accurate emulator helps, like for instance an older version of ZSNES runs Star Fox a a higher framerate than the proper release(while keeping the same game speed).

There's definitely room for both. I'd say anyone looking down on less accurate but very fast emulators like ZSNES lacks perspective.
 
BSNES is cool and all, but the difference between it and ZSNES(which hasn't been updated in years) is almost negligible.

I wouldn't call it negligible. You've got these for a start.

I remember people had loads of issues with SMRPG freezing as well.

And then there's a lot of less obvious timing errors that means games just don't play as the original devs envisaged, becoming easier or harder then they should be.
 

Aeana

Member
i always though emulated games felt off. im happy i wasn't crazy and that emulators like these exist.

I now use bsnes v88 when i replay my old snes games. its the last version before byuu went crazy and started screwing around with the file system. higan takes apart roms and leaves behind the bits on your pc, bsnes doesn't.

it's too bad mother 3 doesn't save with bsnes/higan.(if you know of a fix let me know) would be nice to play it without the lag issues of other emulators.

Have you tried using GBATA's SRAM patcher on it?
 
I wouldn't call it negligible. You've got these for a start.

I remember people had loads of issues with SMRPG freezing as well.

And then there's a lot of less obvious timing errors that means games just don't play as the original devs envisaged, becoming easier or harder then they should be.

Added the link to the OP.
 

injurai

Banned
Higan (formerly BSNES) is probably the best emulator that I've used.

Love how the project has expanded to include a lot more systems.
 

nkarafo

Member
I wouldn't call it negligible. You've got these for a start.
Ok lets see how SNESGT emulator performs on these:

Air Strike Patrol - It doesn't show the shadow effect, so it's not accurate
Battle Blaze - SNES GT title screen looks exactly like in BSNES, however some artifacts exist before the title settles on screen. After that it looks OK.
Der Langrisser - Don't have time to test, i have to play the game for some time to be sure.
Earthworm Jim 2 - Sound effects work perfectly, like in BSNES
F-1 Grand Prix - HUD looks perfect, like in BSNES
Harukanaru Augusta 3 - Master's New - Didn't notice any errors, looks the same as BSNES
Jurassic Park - HUD looks good and transparent, like in BSNES
Kirby's Dreamland 3 - Not sure, don't have time to go to the correct level.
Mecarobot Golf - No flicker on screen, looks the same as BSNES
Moryo Senki Madara 2 - Text looks fine, like in BSNES
SD Gundam G-Next - Screen looks like BSNES screenshot, no errors
SNES Test Program - PASSED electronics test (that's awesome, didn't expect that)
Sink or Swim - Water slowly rises as in BSNES
Speedy Gonzales - Los Gatos Bandidos - Don't have time to reach the spot. Might test it later.
Starfox - Runs at the correct speed, like in BSNES
Star Ocean - I don't know how fast it should be so i can't be sure.
Super Mario World - I don't know if these hacks work or not.
Tetris Attack - I'm not sure. Can't find the EXACT screen. No errors to the ones i looked though.
Timecop - Sound and distortion are the same as in BSNES.

In conclusion: In almost all of these cases, except one and a couple of others that i didn't have time to test, SNESGT works like BSNES/HIGAN. Which also means that it might be more accurate than Snes9X 1.53. Besides, i already found glitches in Doom using SNES9X that don't exist in SNESGT.

Not bad for an emulator that is 10 times faster than BSNES/HIGAN and not nearly as popular as either Zsnes or Snes9x. I think its time for people to know more about this underrated emulator.

And i'm still using version 0218e. That's the final official version so far. I had some problems with the audio lagging using a more recent BETA.
 

TheExodu5

Banned
I have yet to find a perfect SNES emulation solution. BSNES may be cycle accurate, but it does not play nicely in terms of audio/video synchronization. No matter what, you're either going to have to live with dropped audio frames or dropped video frames. On top of that, all emulators have a lot more input lag than the native hardware itself.
 
Pro-tip: Disable the Synchronise Video setting if you're on Windows 8. The DWM compositor cannot be turned off here and already provides its own VSYNC, so Higan/BSNES, having no fullscreen exclusive mode, would interfere with it and stutter like crazy. Furthermore, choose XAudio2 as your sound driver. If you're on Windows 7, disable the compositor for your usage of choice (fullscreen or always). Either disable it always and stick to BSNES's VSYNC or do it as on W8; it's your choice, really.

That should work fine for most people, but for those rare few still experiencing stuttering, play with the Super Famicon frequency option. As soon as Byuu's user guide is up again, it'll tell you how to do it.

In general, try to stick to BSNES v088 x86 Compatibility Profile (it's the easiest to set up and use and works flawlessly). Also don't forget to google for all the DSP ROMs etc., which go into the Super Famicon.sys folder. That is all.
 
In conclusion: In almost all of these cases, except one and a couple of others that i didn't have time to test, SNESGT works like BSNES/HIGAN. Which also means that it might be more accurate than Snes9X 1.53. Besides, i already found glitches in Doom using SNES9X that don't exist in SNESGT.

Not bad for an emulator that is 10 times faster than BSNES/HIGAN and not nearly as popular as either Zsnes or Snes9x. I think its time for people to know more about this underrated emulator.

And i'm still using version 0218e. That's the final official version so far. I had some problems with the audio lagging using a more recent BETA.

There's been two years worth of beta's since Snes9X 1.53. Dunno how improved it is over 1.53 since I use bsnes though. But GT has had radio silence since 2011, so I don't know if it'll ever move on. It's a moot point for me personally anyway.
 
Has BSNES improved on the specs requirements at all now that it is "Higan?" I've tried it a couple of times over the past few years, and I've never been able to run anything at normal speed in accuracy mode with these specs:

AMD Phenom II X4 965 BE 3.4GHz
8GB 1333MHz DDR3 RAM
GeForce GTX 560 Ti 2GB GDDR5

Am I doing something wrong, or is my machine just not quite good enough? It's always pretty close--within 6FPS or so--but comparing it to my actual SNES, the emulator always runs noticeably slower.

I really like the ideology behind BSNES/Higan, and I'd like to be able to use it, but the slowdowns really bug the crap out of me; I'm not willing to spend any money on upgrading my PC to play games on an emulator that's only slightly more convenient than hooking up my SNES and playing the actual cartridges.
 

nkarafo

Member
There's been two years worth of beta's since Snes9X 1.53. Dunno how improved it is over 1.53 since I use bsnes though. But GT has had radio silence since 2011, so I don't know if it'll ever move on.
Point is that its good enough as it is. Its fast and accurate enough. From my tests i'd say its better than Snes9X so far at least as far as SFX chip emulation is concerned.

Anyway, for me it matters because i need a faster emulator than BSNES/HIGAN.
 
Point is that its good enough as it is. Its fast and accurate enough. From my tests i'd say its better than Snes9X so far at least as far as SFX chip emulation is concerned.

Anyway, for me it matters because i need a faster emulator than BSNES/HIGAN.

If BSNES / Higan runs on your machine... Why would you care about the older emulators?
 
Point is that its good enough as it is. Its fast and accurate enough. From my tests i'd say its better than Snes9X so far at least as far as SFX chip emulation is concerned.

Anyway, for me it matters because i need a faster emulator than BSNES/HIGAN.

in 5 years it will probably be hard to find a pc that can't run bsnes properly

at that point most of the other emulators become kind of irrelevant other than running on low spec hardware like mobile or something (which will probably be able to run it at that point too)
 

nkarafo

Member
If BSNES / Higan runs on your machine... Why would you care about the older emulators?
I wouldn't. But i wouldn't need ZSNES or Snes9X either. I'm not trying to say its better than BSNES. I'm saying it's better than all the other faster emulators or the ones that don't focus on cycle accuracy in general.
 

Tain

Member
atomic moth said:
Is there any SNES emulator that runs without input lag?

There are a lot of variables: your monitor, any USB controller adapters, vsync, desktop composition vsync, etc.

If you run a SNES emulator that has an exclusive fullscreen mode (in other words, most that aren't BSNES/Higan) on a known lagless monitor without a laggy USB controller adapter and you have vsync off I'd be surprised if you were getting more than a frame of lag. You can still use bsnes/higan, you just need to turn off window composition first, because, as said, left on it will impose its vsync and vsync always makes lag. This is much easier to do in Windows 7 than Windows 8.

And all of this applies to all emulators.
 

TheExodu5

Banned
There are a lot of variables: your monitor, any USB controller adapters, vsync, desktop composition vsync, etc.

If you run a SNES emulator that has an exclusive fullscreen mode (in other words, most that aren't BSNES/Higan) on a known lagless monitor without a laggy USB controller adapter and you have vsync off I'd be surprised if you were getting more than a frame of lag. You can still use bsnes/higan, you just need to turn off window composition first, because, as said, left on it will impose its vsync and vsync always makes lag. This is much easier to do in Windows 7 than Windows 8.

And all of this applies to all emulators.

Are there any emulators you know of that will work properly without any audio/video frame drops or synchronization issues?
 

Tain

Member
It's always a case of vsync and lag or screen tearing with minimal/no lag. For a period I thought bsnes avoided this, as I was playing for a bit without vsync and no tear line, but it turned out to be dumb luck with the vsync timing and the tear line was clear as day next time I tried it.

Many emulators get stuttery with vsync on, on top of the lag. Most often a pulldown issue, assuming your PC's final refresh rate is higher than the emulated platform's. The ones that don't stutter alter the emulated platform's timing to match your PC's refresh rate. MAME, MESS, and SNESGT, among others, can do this pretty well, though you might get slight audio issues depending on how big the timing difference is. It's generally not enough to be noticeable to me in MAME.

If I'm remembering right, bsnes does do a pretty good job with the frequency testing stuff, assuming you have desktop composition off. I could be mistaken, though.
 
I wouldn't. But i wouldn't need ZSNES or Snes9X either. I'm not trying to say its better than BSNES. I'm saying it's better than all the other faster emulators or the ones that don't focus on cycle accuracy in general.
Except this is a thread about cycle accurate emulators. We get that other emulators can approximate hardware accuracy at a fraction of the CPU cost. But those emulators aren't cycle accurate.
 

ryz

Member
I'm glad cycle accurate emulators get some recognition here. I've read quite a bit about byuu (developer of bsnes/higan) and his failed attempts to convince the emulation community that cycle accurate emulation is a better thing than dirty hacks (he even proposed patches for the ZSNES devs, but they just ignored everything) or why his UPS specification is just way better than the IPS patches around..

The ignorance of the emulation community is just sad.
 

TheExodu5

Banned
I think BSNES can do this if you're willing to spend enough time with the frequency testing thing.

I ran it for a good hour or so and it didn't seem to really help much...the values were pretty much set after a few minutes. I know that byuu wasn't really writing BSNES with Windows 7/8's DWM in mind, so that could be part of my issue.
 

Undubbed

Member
I tried to make my own NES emulator once. Think I bit off more than I could chew. How rendering works on the NES is fucking crazy and my main stumbling block to creating a complete working emulator. I did get Donkey Kong to work and other super simple games, but Super Mario Bros. on up, forget about it. Eh, someday I'll make an NES emulator....someday.
 
I'm glad cycle accurate emulators get some recognition here. I've read quite a bit about byuu (developer of bsnes/higan) and his failed attempts to convince the emulation community that cycle accurate emulation is a better thing than dirty hacks (he even proposed patches for the ZSNES devs, but they just ignored everything) or why his UPS specification is just way better than the IPS patches around..

The ignorance of the emulation community is just sad.
byuu's failings in these regards were almost completely due to his personality and execution and not because of some grand conspiracy to snub his technical accomplishments.
 
I tried to make my own NES emulator once. Think I bit off more than I could chew. How rendering works on the NES is fucking crazy and my main stumbling block to creating a complete working emulator. I did get Donkey Kong to work and other super simple games, but Super Mario Bros. on up, forget about it. Eh, someday I'll make an NES emulator....someday.

Any links on how you start such a project?
 

FyreWulff

Member
An important part about cycle accurate emulators is you can code proper homebrew games in them much easier, then deploy to an actual cart if you're feeling frisky enough.

With ZSNES and the other hacky emulators, you're programming to the emulator, not the system.
 
Great thread OP!Right now I have started looking for emulators for the laptop in my little boys room and the timing of this thread couldn't have been better. Thanks!
 
byuu's failings in these regards were almost completely due to his personality and execution and not because of some grand conspiracy to snub his technical accomplishments.

This is definitely an important point. I admire byuu's mindset that since hardware breaks, preservation is of utmost importance. He has engineered a great piece of software, but he is no software engineer. You should balance personal goals and user expectations (he often talks down to users that critique the software, even if he gives in).

This is his project, and he is entitled to run it how he sees fit. I think that if your project is designed to have an audience, you should make it conform to reasonable standards of the community (I understand only using official ROMs, but forcing the filesystem management is lacking in common sense).
 

Awakened

Member
I wish Higan was more front end friendly. I have my Steam Big Picture mode set up so I can select individual emulator games from it that starts in full screen and I can close them usually with a hotkey from my iPhone with MobileMouse, and it works great with SNES9X, Nestopia, PCSX2 and Xebra, but I really wish I could replace SNES9X with Higan.

I now use bsnes v88 when i replay my old snes games. its the last version before byuu went crazy and started screwing around with the file system. higan takes apart roms and leaves behind the bits on your pc, bsnes doesn't.

I have yet to find a perfect SNES emulation solution. BSNES may be cycle accurate, but it does not play nicely in terms of audio/video synchronization. No matter what, you're either going to have to live with dropped audio frames or dropped video frames. On top of that, all emulators have a lot more input lag than the native hardware itself.

Is there any SNES emulator that runs without input lag?
RetroArch is the answer to all of these, since it has far more options than using BSNES via Higan. You can assign any key to be exit, which I would think would work with the mobile mouse thing and has a nice fullscreen menu you can pull up with F1 by default. It doesn't spam your Roaming folder with ROM folders when using BSNES cores; it just loads zips normally. RetroArch uses a synchronization system called dynamic rate control that should be better than any other stand alone emulator.

It also has a GPU Hard Sync option you can turn on which reduces input lag further than any other emulator I've tried with vsync. That can be a bit resource intensive and can cause crackling if your PC isn't fast enough for the more intense cores, but if you set Hard Sync Frames to 1 you still get really low lag and that brings the resource intensity down a notch that is enough to not crackle on my i5 2500k for the BSNES and Mednafen PSX cores.

I now use it for everything from NES to PSX (and handhelds up to GBA) since it offers accuracy based cores and better features than the standalone versions of those emulators. I still use MAME for arcade stuff since that's more accurate and supports more games than the FBA core.

It's available on damn near every OS and portable device too which is a huge plus. On Windows it's a little different than other emulators to initially set up so I'd recommend looking at this guide which goes over how to get cores and such. This skeleton config is helpful for looking up advanced options you can add to your cfg file that might not be exposed by the UI. For the easiest launching setup I use it with HyperSpin to load a different config depending on which system I'm launching. It's supposed to work well using XBMC using advanced launcher as well.
 

Tain

Member
Glancing at the source, Hard Sync Frames on RetroArch seems to be independent of the PC's vsync, and vsync seems to be done the usual way. Doesn't sound like it would be any less laggy than the other emulators, but maybe I'm not understanding what it does.
 

Awakened

Member
Glancing at the source, Hard Sync Frames on RetroArch seems to be independent of the PC's vsync, and vsync seems to be done the usual way. Doesn't sound like it would be any less laggy than the other emulators, but maybe I'm not understanding what it does.
There's some detail on the same page that explains dynamic rate control:
There have been cases reported on excessive input lag in Windows for some users. It's not really input latency, but video driver latency. Some video drivers tend to buffer way too much in the name of increased performance. This problem is explained by Carmack here.

RetroArch recently got an option to use a swap/fence sync method in OpenGL driver, which is reported to greatly lower input latency (thread). To enable it, set video_hard_sync = true in config. To ensure that this sync method is actually used, make sure that you see this in the log:

RetroArch: Querying GL extension: ARB_sync => exists
RetroArch: [GL]: Using ARB_sync to reduce latency.
Do note that this sync method can greatly reduce performance, and can turn smooth 60 fps into crawling 30 fps if there was not enough headroom in the performance.

If you use KMS mode, using video_hard_sync won't help as it already does something like this.
Basically it helps for users on Windows with certain video drivers. This was the original thread I started on their forums where eventually maister added the hard sync option which reduced lag considerably on my setup (GTX 570 on Win7 with latest official NVidia Drivers). I don't have any AMD cards to test to see if it helps on those.
 

Undubbed

Member
Any links on how you start such a project?

There are none as far as I know. Just gotta look at (user created)documentation for the NES.

First start with loading the ROM into memory and then emulate the CPU instructions layed out on the "Program" portion of the ROM.

I got all my info from nesdev.com.
 

big_z

Member
Have you tried using GBATA's SRAM patcher on it?

Ill give that a go a little later. I've tried the English patched rom and what was claimed to be an untouched Japanese rom and neither would save the game with bsnes/higan.
 

Orayn

Member
There are filters for most emulators to enable people to make the picture look awful.

Scanlines can easily be argued against from a quality perspective. The other differences between a raw, pixelated image and a game as it appears on a CRT are not so cut and dry.

1LLpZbg.png


NcPEkjH.png
 

Sophia

Member
RetroArch is the answer to all of these, since it has far more options than using BSNES via Higan.....

Glad to see RetroArch is mentioned. The UI for it isn't perfect by any means, but it basically has all the benefits of using Higan with none of Byuu's awkward ROM silliness.
 
Top Bottom