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

Best NES, SNES and GBA Emulators

petran79

Banned
N64 is the hardest to emulate accurately. There aren't any shaders i know of that emulate it's video output accurately. Still trying to make a custom one that i'm happy with.

The new Angrylion RDP fork with multicore support brings N64 emulation to a whole new level.
 

nkarafo

Member
The new Angrylion RDP fork with multicore support brings N64 emulation to a whole new level.
Oh, i was talking about CRT shaders in RetroArch, trying to emulate how the N64 looked on the TVs we had back then.

For instance, ParaLLEl doesn't emulate the VI filters (or however they are called) so you get some pretty nasty dithering looking effects that you have to smooth out yourself using certain shaders. Then you have to make it a bit more blurry (but not too much) and make sure text and other 2D elements are displayed correctly. Then you need some form of antialiasing because in Mario, the distant mountains didn't look jaggied like they do in Angrylion or ParaLLEl. Finally, you need to do adjustments to make the colors, contrast, glow, etc look like your CRT TV.

So far i can't make a good combination that doesn't ruin text in some way.
 
Holy shit, looks like the core update is actually happening, what a result!

https://board.byuu.org/viewtopic.php?f=8&t=1798&start=10

I5ZB6Md.png


Pretty damn pleased that I asked about the sync issues in the stand alone now!
 

Easy_D

never left the stone age
Wait the Higan core had sync issues? Might that be why I got minor audio stutter when using MSU-1 enabled roms? Speedwise everything was fine and it was only specific sounds that triggered it at very random intervals, so if that's been sorted I couldn't be happier.
 

Awakened

Member
Awesome, cool that it's maister coming back to work on it as well. It'd be excellent if this leads to all the other higan cores coming over to libretro.

One thing I thought of that I would miss from the current v94 based libretro BSNES cores is Brunnis' lag fix. That shaved off a frame or two of input lag, but I don't think that was ever accepted upstream for some reason. It was even applied to SNES9x, but I forget if they upstreamed it.
 

Easy_D

never left the stone age
its the standalone version of higan that has sync issues between video and sound.

http://higan.readthedocs.io/en/latest/faq/

retroarch fixes the issues as it uses dynamic rate control but the core was based on a four year old version.

I see, does the new core offer better performance then? I assume it was a matter of my CPU being just a bit too weak to handle MSU1 and Higan level emulation at the same time in Retroarch causing the audio stutters then.

I really need to move on from this ancient FX6300 :p
 
You also need to apply gamma correction. Modern displays are typically calibrated to 2.22 gamma, while a properly set up CRT would be 2.35. The only stand-alone emulator I've seen with a gamma correction option was Higan, and last time I tried it, it converted 2.20 to 2.50 which is wrong. (too dark) [...] I generally favor Trinitron-style CRT emulation

Sup color buddy.

Funny you mention gamma as it wasn't formally standardized until ITU-R Rec. BT.1886, which came out 2011 (?!). Prior to that, everybody and their brother, both in the video game industry and film/TV worlds, used a Sony PVM/BVM as "the" standard, which is what we know as "gamma" today. The BT.1886 standard itself is a clone of the classic Sony PVM CRT EOTF with a slight tweak at the bottom end to better handle crushed blacks on LCDs.

On older video game systems like the NES and virtually all CRT arcade games, you have the Japanese 9300K white point issue. Classic Japanese TV used a 9300K white point instead of the now-standard 6500K, aka D65, supposedly as it made fair skin tones look better back in the day (some Japanese TV stations still intentionally calibrate to D93 last I heard). This little tidbit seems almost completely unknown in the West and why the colors of many classic games look a bit "off" on modern displays, even if you're using original game hardware and a CRT. The NES was seemingly calibrated to D93, contrary to what many emulator authors seem to think, and I think the SNES might be too, but not sure. Good luck finding info on this, even in places like AVS Forum. I wonder how many emulators will eventually get a decent 3D LUT implementation for D93->D65 conversion. Supposedly even US-spec Sony Trinitron and Mitsubishi TVs shipped calibrated to D93, which would explain why there's controversy over the color of the SMB1 blue sky (when the correct answer is a Sony Trinitron calibrated to D93). D93 is apparently "official" as it (still?) shows up as an allowable technical footnote in BT.470.

There's some info here and talk of the Sony PVM color and 9300K:
https://shmups.system11.org/viewtopic.php?f=6&t=59843
https://shmups.system11.org/viewtopic.php?f=6&t=43344
https://shmups.system11.org/viewtopic.php?f=6&t=55024
 
I see, does the new core offer better performance then? I assume it was a matter of my CPU being just a bit too weak to handle MSU1 and Higan level emulation at the same time in Retroarch causing the audio stutters then.

I really need to move on from this ancient FX6300 :p

I doubt very much that there are any performance improvements, especially as higan only uses the accuracy profile which this new core will use. What you are getting is ten revisions or four years worth of updates to the emulation quality.
 

Neith

Banned
Interesting development. Very cool. I hope this can lead to some good improvements and maybe people can also get along better too.

In other news I found another game that uses ScaleFX really well. Heart of Darkness on PS1. Where before xBRZ really did not clean things up the ScaleFX makes this thing pretty cool at least IMO. Game is tough as nails, but damn I did not expect to see it looking as good as it does. Without filters it is positively hideous IMO.

A screen comparison from Beetle if anyone is curious:

https://imgur.com/a/90VWm
 

byuu

Member
Holy shit, looks like the core update is actually happening, what a result!

Yep, we were setting up a small group of people to make this happen when none other than Themaister himself showed up to help! :D

I'll be making changes to higan to make it easier for him, already have a list of things for me to do.

Really excited for this. With his support, it'll definitely make it upstream. Then we'll maintain the port in our own Git repository going forward. v104+ should be an obvious choice over v094 and v094-mercury, so that will remove all technical complaints I have with regards to RA and my emulator.

And for whatever it's worth, the Patreon money thing with RA doesn't really concern me, either.

It'd be excellent if this leads to all the other higan cores coming over to libretro.

Sadly, it's unlikely. They have to hardcode a lot of things on a per-core basis, because apparently Emulator::Interface and libretro are more different than expected.

One thing I thought of that I would miss from the current v94 based libretro BSNES cores is Brunnis' lag fix. That shaved off a frame or two of input lag, but I don't think that was ever accepted upstream for some reason.

Brunnis' lag fix affected lag in Retroarch. higan never had this issue.

Brunnis later realized his mistake was comparing higan with DWM enabled to Retroarch with it disabled.

higan has exclusive fullscreen mode now, for those who don't / can't disable DWM.

I wrote an article explaining how input latency in higan works due to that discussion, available here: https://byuu.org/articles/latency/

To my great surprise, even John Carmack liked the article :O

I see, does the new core offer better performance then?

No, sorry. It'll be a bit slower even due to years of accuracy improvements. But we will get the balanced profile out there, too.

Please make the accuracy core work with shaders ^^

That'll be up to them. Doing so will mess with shaders in hires games (mostly JRPG text boxes), however.
 

nkarafo

Member
No, sorry. It'll be a bit slower even due to years of accuracy improvements. But we will get the balanced profile out there, too.
Last time i checked, accuracy profile would improve one game, Air Strike Patrol's shadow. Other than that the balanced profile would be the same. Has this changed lately?
 

Easy_D

never left the stone age
No, sorry. It'll be a bit slower even due to years of accuracy improvements. But we will get the balanced profile out there, too.

I'm glad it's being worked on at all! In due time I'll have a better CPU anyway and it won't be an issue.
 

Awakened

Member
Sadly, it's unlikely. They have to hardcode a lot of things on a per-core basis, because apparently Emulator::Interface and libretro are more different than expected.
That's unfortunate, since you seemed to be making some good progress on your other cores and they'd be nice options in the libretro ecosystem.

Brunnis' lag fix affected lag in Retroarch. higan never had this issue.

Brunnis later realized his mistake was comparing higan with DWM enabled to Retroarch with it disabled.

higan has exclusive fullscreen mode now, for those who don't / can't disable DWM.

I wrote an article explaining how input latency in higan works due to that discussion, available here: https://byuu.org/articles/latency/

To my great surprise, even John Carmack liked the article :O
Hmm, so maybe his fix will still need to be included only in the libretro port for optimal latency in RetroArch?

No, sorry. It'll be a bit slower even due to years of accuracy improvements. But we will get the balanced profile out there, too.
That's probably what I'll end up using, since I remember getting sound crackles using hard sync frames 0 on cx4 and SuperFX games with the accuracy profile. Plus the 480p framebuffer shader issue, at least until that gets fixed on RetroArch's end.
 
Seems like there is some activity in regards to talk of these cores. In terms of hardware, is there any reasonably good portable hardware for running mGBA with 1:1 pixel mapping? ie: something powerful enough that has a 480p or 1440p screen? (or other integer of 160p)?
 
Is this something that would be hard to set up as just a config value? i.e. report 240 vs 480 resolution to the libretro API?


Probably had more to do with how hires mode works. At least in it's most common form, it's just doubling every pixel on the horizontal, except for the text boxes which actually do have full access to double resolution for drawing complex single color sprites (text characters).

Trying to write a shader that intelligently 'descales' most of the image back down before applying it's effects while also managing to ignore the text sections would be a small miracle... Or maybe impossible? I don't really know anything about programming shaders :)

(edit) Some images to describe what I'm talking about. Not 100% accurate because I don't have a setup to grab proper images, so I just grabbed a random image from google.

NLrf36e.png


A 256x224 that represents the standard SNES game (a few games have a slightly different base resolution, but for the most part this is a fine thing to assume most SNES games will be and be built around).

Note: This isn't actually an accurate image. As a standard non-hi-res mode this would normally render the text completely unreadable since half of each character wouldn't be rendered at all. I just downsampled a properly scaled image for this.

While there is a true 512x448 hi-res mode on the SNES, it's VERY VERY limited and only a couple games used it and fewer still used it for anything gameplay related. Generally, if a game used the hi-res mode on the SNES, it instead used this...

POlbekX.png


This is a 512x224 mode where every pixel is just horizontally doubled. Only a single layer capable of true 512x224 is drawn at this resolution (notice how much more natural and rounded the text is), the layer the text is on. This image is then 'stretched' back into TV correct aspect ratio.

The thing about games like Seiken Densetsu 3 that use this hi-res mode is that they don't even use it all the time. Much of the text in the game is 256x224, and when the game isn't using the hi-res text, it renders at 256x224. So the game is constantly switching back and forth between the two modes.

I honestly don't know shit about programming or shaders, but I imagine when you double the amount of pixels to work with, especially in one direction, it's going to make the image look very different and probably be distracting in normal play. I imagine you could work a solution by simply assuming SNES games were always hi-res (essentially applying a 2x nearest neighbors filter) at all times except when hi-res mode is actually used and feed that image into the shaders... But I'm mostly just talking out my butt at this point.
 

Neith

Banned
Retroarch is simply not user friendly at all

This is definitely not true. I got three emulators up and running with transferred saves and personal settings in no time flat. The shader system is amazing. And there is absolutely no need to even invest in most of the pre psppp emus of the standalone type.

I'm not sure how you have come to this conclusion, but you should really give it another chance. It's absolutely super easy to set up, and quite honestly is a pleasure to have it all in one wrapper.
 
This is definitely not true. I got three emulators up and running with transferred saves and personal settings in no time flat. The shader system is amazing. And there is absolutely no need to even invest in most of the pre psppp emus of the standalone type.

I'm not sure how you have come to this conclusion, but you should really give it another chance. It's absolutely super easy to set up, and quite honestly is a pleasure to have it all in one wrapper.

The default menu options are like zsnes... only a thousand times worse because there are thousands of more options.

You do grow used to it, especially if you grew up on such interfaces... but there is a reason why nearly every program on the planet has moved beyond that UI style.
 

Ecrofirt

Member
Hi all!

Since this thread is taking off, I'm hoping someone here might be able to help me out a bit with some questions.

I've got a Fire TV (I'm pretty positive it's the pre-4K version, but I can confirm if needed), and I currently use RetroArch on it.

Based on the cores available and my known hardware, is there a list of the best core choices for things like NES, SNES, Genesis, GBA, and N64 (if it's even up to snuff to emulate that)? In addition, perhaps the best configuration options for getting the most out of the Fire TV for emulation?

I'm currently using NESTopia for NES.
SNES9X (there's a few SNES9X variants, and I don't know which is the best to use) for SNES. I tried some of the bsnes options (the performance and mercury performance), but the framerate seemed to suffer pretty greatly.
Genesis Plus GX for Genesis.

I don't currently do GBA or N64, but they're things I'd do for sure.

If there's a guide out there that I haven't yet stumbled upon, or if someone has some good firsthand advice, it would be much appreciated.
 

Neith

Banned
The default menu options are like zsnes... only a thousand times worse because there are thousands of more options.

You do grow used to it, especially if you grew up on such interfaces... but there is a reason why nearly every program on the planet has moved beyond that UI style.

Hmm, I tend to think that once you explore the XMB a little it really is not hard to get up and running. You literally download core, get your content, and you are basically ready to go if you don't want to mess with much. I understand that it looks like a lot of options, but you don't use hardly any of it day to day.

There are convenient video, sound, et cetera, categories and with a little reading you know exactly what you are doing in little time.

The main idea is that there is nothing even remotely close to how easy this is when managing your emulators.

I mean I used to use ePSXe, and that thing was complete shit, and required all sorts of tuning. A lot of newer emulators require just as much work including PSCX2, Ishiiruka, and PSPPP.

So I'm not really seeing how Retroarch is a hard to run program. I thought it was going to be a lot tougher than it was when I was getting all my stuff ready a couple days ago.

Now, it's awesome. I only have modern standalone emu's, don't really have to bother with any shaders or plugins, and everything works great.
 

Radius4

Member
This is definitely not true. I got three emulators up and running with transferred saves and personal settings in no time flat. The shader system is amazing. And there is absolutely no need to even invest in most of the pre psppp emus of the standalone type.

I'm not sure how you have come to this conclusion, but you should really give it another chance. It's absolutely super easy to set up, and quite honestly is a pleasure to have it all in one wrapper.

Thanks for the kind words

Still, there is a lot of work to be done on the GUI... It does look dated despite the touchups
I'm starting to work with a designer, we have some mockups and I have a functional POC of a new menu driver

It's been quite slow though, lots of work lately so hardly any time for this stuff...
 

Neith

Banned
Hi all!

Since this thread is taking off, I'm hoping someone here might be able to help me out a bit with some questions.

I've got a Fire TV (I'm pretty positive it's the pre-4K version, but I can confirm if needed), and I currently use RetroArch on it.

Based on the cores available and my known hardware, is there a list of the best core choices for things like NES, SNES, Genesis, GBA, and N64 (if it's even up to snuff to emulate that)? In addition, perhaps the best configuration options for getting the most out of the Fire TV for emulation?

I'm currently using NESTopia for NES.
SNES9X (there's a few SNES9X variants, and I don't know which is the best to use) for SNES. I tried some of the bsnes options (the performance and mercury performance), but the framerate seemed to suffer pretty greatly.
Genesis Plus GX for Genesis.

I don't currently do GBA or N64, but they're things I'd do for sure.

If there's a guide out there that I haven't yet stumbled upon, or if someone has some good firsthand advice, it would be much appreciated.

Best to use SNES9X is the one without a year on it, as the rest are older versions.

mGBA is the best emulator for GBA. BSNES balanced is pretty good if you have a decent PC, but even Byuu recommends SNES9X if you really must have performance. He created a good part of it.

Not really sure about NES. 64 I have no idea because I find all of its games to be way too dated for my tastes. Anything but Mario 64 anyway.
 

Neith

Banned
Thanks for the kind words

Still, there is a lot of work to be done on the GUI... It does look dated despite the touchups
I'm starting to work with a designer, we have some mockups and I have a functional POC of a new menu driver


It's been quite slow though, lots of work lately so hardly any time for this stuff...

Dude, RA is fucking top shelf man. I don't particularly find it hard to navigate at all. I'm trying to get folders working out in a better way, but in reality all I have to do is click file and it's a breeze to play games. I found setting things up pretty familiar as I had a PS3 for so long so I actually like the XMB.

You all really did an AMAZING job on this thing. I finally got so tired of ePSXe and its bullshit--and with filters I could not do xBRZ anymore as it just didn't filter enough of the pixels correctly--so I was led to Retroarch, which I put off a while back because it was an earlier version, and now I could never go back. I have upgraded emus too. Going from shitty ePSXe to Beetle has been huge for me. And the use of ScaleFX on games like Yoshi's Island is just fabulous (ScaleFX does not work with standalone SNES9X).

In reality I was always afraid my saves would not transfer. But everything on that end was fairly easy to work out too.

It's just absolute glory having all this in one package with such an easy to use shader system. It's a fucking miracle in fact lol. Thank you so very much.
 

SOLDIER

Member
Again, is there a way to customize the controls for the Retroarch UI so that hitting start doesn't shut the whole program?

I won't be able to play around with the settings much if I keep shutting off the program when I'm trying to pause or press start in-game.
 
Best to use SNES9X is the one without a year on it, as the rest are older versions.

mGBA is the best emulator for GBA. BSNES balanced is pretty good if you have a decent PC, but even Byuu recommends SNES9X if you really must have performance. He created a good part of it.

Not really sure about NES. 64 I have no idea because I find all of its games to be way too dated for my tastes. Anything but Mario 64 anyway.

I don't know the specs of the Kindle fire, but generally the weaker the hardware, the earlier the version of Snes9x you want. This is because Snes9x went through a phase of massive accuracy boosts at the cost of speed.
 

Aeana

Member
Again, is there a way to customize the controls for the Retroarch UI so that hitting start doesn't shut the whole program?

I won't be able to play around with the settings much if I keep shutting off the program when I'm trying to pause or press start in-game.

There's settings for the non-game function inputs in the input menu under settings. But my perspective is from the rgui menu driver -- I don't know if it's different in the others.
 

Awakened

Member
Again, is there a way to customize the controls for the Retroarch UI so that hitting start doesn't shut the whole program?

I won't be able to play around with the settings much if I keep shutting off the program when I'm trying to pause or press start in-game.
Settings Tab, Input, Input Hotkey Binds, Quit RetroArch. You can change the key and button for that there. It should default to Escape and no button though.
 

SOLDIER

Member
Settings Tab, Input, Input Hotkey Binds, Quit RetroArch. You can change the key and button for that there. It should default to Escape and no button though.

Thank you.

Is there also a way to enable certain actions with combination keys (like L1+Start)?
 
Someone finally found a way to make FF6 look worse than the android port!

God it's so easy to completely ruin SNES visuals in an attempt to clean it up. At the end of the day, 60,000 pixels just isn't much to work with.
 

Radius4

Member
Thank you.

Is there also a way to enable certain actions with combination keys (like L1+Start)?

There is no way to map a particular action to a combo.
BUT you can setup a hotkey modifier, that way you need to press modifier to trigger any other hotkey. It works with both keyboards and gamepads, and you can even add it to the autoconf profiles (which is probably an advanced topic so I won't get into it).

 

Neith

Banned
If you combine it with Bilateral filter you obtain some interesting effect on snes games:

https://imgur.com/a/GWkaX
https://imgur.com/a/yRMqi

I see that you were tweaking bilateral. I had to go into the menu parameters to get the softness up. It is cool you can tweak these values.

LOL some people just cannot handle it. But yeah some of those look really bad for sure. Others are fine.

Wow, I kind of really like how smooth that Mario 2 looks man. The gradients are really good. Where did you get bilateral though? It just looks a touch soft all told.

Also, is the aspect ratio off in that Mario shot? My BSNES one is a bit wider I think. Not all games look decent with this, but that combo really smooths things out really well.

Stuff like Bowser's nose really looks nicely shaded in that. But SMW might not be busy enough to maintain this filter like YI. Yoshi looks amazing in those YI photos.. It doesn't work for a lot of games with realistic detail because overall detail is definitely low and they come off as flash games. But there are a few examples there were this filter works really well.

https://forums.libretro.com/t/bilateral-filter-another-smartblur/1525

I see it is SpookyFox again. He is definitely right. The banding is almost gone. If it were possible to maybe slightly tone down the blur in that filter with ScaleFX I would use it for games like YI.
 
Probably had more to do with how hires mode works.

I know about the hires mode. The issue as described earlier is that higan would report every game to the libretro wrapper as running in the full high resolution, which would lead to it filtering regular games as if each pixel was actually two. I was figuring you could make a setting to explicitly override that if you're going to play a game (i.e. most of them) that doesn't utilize hires at all.
 
Top Bottom