Which is the Most Accurate NES Emulator?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Which is the Most Accurate NES Emulator?
by on (#133655)
I'm not much of a hardware man but I was wondering which emulator is the most accurate as in real-time?

I use FCEUX most of the time when I hack (2.2.2), but I really feel Nestopia UE is the most accurate one. Any opinions or information would be greatly appreciated. (Well, accurate as in NES/Famicom and FDS.) :beer: :P

EDIT: Oh yeah, let's include PAL NES, too, since FPS is different.
Re: Which is the Most Accurate NES Emulator?
by on (#133656)
Nintendulator is the most accurate, and Nestopia the 2nd most accurate.

Quote:
EDIT: Oh yeah, let's include PAL NES, too, since FPS is different.

Not only the FPS but ALL TIMINGS are different, and also some other things, mostly fixed bugs from the NTSC version.
Re: Which is the Most Accurate NES Emulator?
by on (#133657)
Fhorse has been going to a lot of effort to make his punes awfully accurate. I suspect it's surpassed Nestopia by now.

I still use Nestopia UE, though.
Re: Which is the Most Accurate NES Emulator?
by on (#133664)
Bregalad wrote:
Nintendulator is the most accurate, and Nestopia the 2nd most accurate.

Quote:
EDIT: Oh yeah, let's include PAL NES, too, since FPS is different.

Not only the FPS but ALL TIMINGS are different, and also some other things, mostly fixed bugs from the NTSC version.



Yes. But what specifically makes Nintendulator more accurate than Nestopia? I hear Nestopia's accuracy is at about 97%. Does it support more mappers or is it something more technical?
Re: Which is the Most Accurate NES Emulator?
by on (#133665)
I don't know how you say something is 97% accurate. That really doesn't make sense to give it a number. How was this number calculated, or was it just pulled from nowhere?

We have extremely detailed information about how the NES behaves these days. If you very carefully followed every little detail you'd have an extremely accurate emulator. Most NES emulators are far better than what was available over a decade ago just because of the wealth of information we have gained.

Another point to be made though, why does it matter to you which is the most accurate? Are you developing new software? If you are, I can definitely see wanting to find the most accurate emulator with good debugging features. If not that, maybe I could see you wanting the best compatibility. But even with just a basic level of accuracy you can probably support 90% of licensed games. The more precise accuracy tends to be for a very small percentage of games to work properly. Games you may never play anyway. So if you are just playing games, you're better off looking for the emulator that has the features you like best and works best on your hardware.
Re: Which is the Most Accurate NES Emulator?
by on (#133666)
I wonder if someone's using compatibility with ROMs specifically designed to exercise edge cases, as seen in this chart, as a proxy for "percent accuracy". I wrote other thoughts on this in another post as well as the "Accuracy" article on the wiki.
Re: Which is the Most Accurate NES Emulator?
by on (#133671)
MottZilla wrote:
I don't know how you say something is 97% accurate. That really doesn't make sense to give it a number. How was this number calculated, or was it just pulled from nowhere?


I borrowed that number from Koitsu. (See below.)

koitsu wrote:
Reminder to folks: Nestopia plays, oh I don't know, ~97% of all games reliably, so please keep that in mind. [/url].


Found here at: http://forums.nesdev.com/viewtopic.php?f=3&t=11594#p133332


Also, I wanted to test accuracy for my FDS hacks, as I wanted to see if they would work on real hardware if GAP and CRC data were added back. That's why I wanted one with accuracy. Counting that no FDS emulators are accurate, an NES one (with FDS support) with close accuracy would be enough.
Re: Which is the Most Accurate NES Emulator?
by on (#133680)
ShaneM wrote:
MottZilla wrote:
I don't know how you say something is 97% accurate. That really doesn't make sense to give it a number. How was this number calculated, or was it just pulled from nowhere?


I borrowed that number from Koitsu. (See below.)

Causality: If an emulator is accurate, it is able to run many games. However, just because an emulator can run many games doesn't mean it's accurate. It's trivial to make an emulator full of hacks to get games to run.

That said, Nestopia really is quite accurate. FCEUX is not super accurate, but I still use it because it runs fast.

PAL NES emulation is quite a bit behind NTSC NES emulation when it comes to the fine details. The main reason is that there are no known commercial games that exploited the differences between the machines beyond the obvious ones.
Re: Which is the Most Accurate NES Emulator?
by on (#133682)
thefox wrote:
Causality: If an emulator is accurate, it is able to run many games. However, just because an emulator can run many games doesn't mean it's accurate. It's trivial to make an emulator full of hacks to get games to run.

Even without any hacks it means nothing, for the simple reason that games rarely exploit the most extreme corner cases of the hardware.
Re: Which is the Most Accurate NES Emulator?
by on (#133686)
As far as I can remember PAL emulation was a bit off in Nestopia but was mostly correct in Nintendulator. It's things like jittering being a few pixels off and something like that. I might have changed with more recent updates, though.
Re: Which is the Most Accurate NES Emulator?
by on (#133689)
thefox wrote:
FCEUX is not super accurate, but I still use it because it runs fast.

That and FCEUX has a debugging version, unlike Nestopia, and debugging works well enough under Wine, unlike Nintendulator. If you're just trying to develop or reverse engineer game logic in a program that doesn't exercise edge cases, FCEUX has an essentially perfect CPU and a good enough PPU.
Re: Which is the Most Accurate NES Emulator?
by on (#133714)
Which is the Most Accurate NES Emulator?
Not an easy question to answer. All the latest emulators tend to be very accurate, but I can highlight a few:
-- Nestopia
Can run almost any game. However it is not the best emulator in terms of accuracy. It has problems with IRQ processing, audio processing, DMA, video processing, PPU/CPU sync.
-- Nintendulator
Was really a revelation for me. It is written in C++ and the source code is really straight-forward, almost like asm. From that I could really see that the author understands very well how NES operates internally (it matches my vision in most details at least). However, it has a lot of inaccuracies too (IRQ processing, unofficial opcodes, audio processing, DMA, PPU/CPU sync). But it has a very good PPU, I must give a credit for that.
-- puNES
Has a closed source code, thats too bad. But it is the most accurate emulator I know, especially when it comes to APU. There is still work left to improve PPU and maybe to implement some missing details for the variants of NES (NES PAL, NES NTSC, FC, Dendy, other clones).
-- FCEUX
Does not have a good accuracy, but is very useful for debugging and stuff.

I did not research this closely, but it can give you some ideas.
Re: Which is the Most Accurate NES Emulator?
by on (#133721)
Like I always say, running a large number of games is not a sign of accuracy. Commercial games (and newer homebrew games) are finished programs, which have been tested and bug fixed for release. This means that they are (usually) well behaved programs, that do most of their work according to the book, so a higher level simulation of the system is often enough to support them well. Things are very different during the development of a new game: you'll find yourself writing to wrong memory locations, extrapolating VBlank time, forgetting to initialize registers... and that's when accuracy is really needed, otherwise those problems might go undetected if the emulator is too forgiving with the little details.
Re: Which is the Most Accurate NES Emulator?
by on (#133730)
Nintedulator helps me to find bug ,when I sent data on scanline '-1' without screen off. , so I vote for it. :beer:
Re: Which is the Most Accurate NES Emulator?
by on (#133766)
Quote:
That and FCEUX has a debugging version, unlike Nestopia, and debugging works well enough under Wine
The Windows-specificity of the...well, pretty much ALL the features, despite FCEUX allegedly being multiplatform, really irks me.

It strikes me that Mednafen isn't even on your wiki's list of emulators that do NES.
It has debugging features, rerecording features, memory-search features, albeit a bit user-unfriendly...and actually has these features on the linux version.

But, I haven't worked long enough with it/NES coding to really know its full accuracy. TASvideos seems to rank it middling at best. It doesn't seem to do the graphical tricks on Covell's Game Genie Decoder, instead showing green screen most of the time.
Re: Which is the Most Accurate NES Emulator?
by on (#133767)
Myask wrote:
It doesn't seem to do the graphical tricks on Covell's Game Genie Decoder, instead showing green screen most of the time.

To be fair, PowerPak on NES shows the same green screen with shakiness when pressing select.
Re: Which is the Most Accurate NES Emulator?
by on (#133773)
Myask wrote:
It strikes me that Mednafen isn't even on your wiki's list of emulators that do NES.
It has debugging features, rerecording features, memory-search features, albeit a bit user-unfriendly...and actually has these features on the linux version.

But, I haven't worked long enough with it/NES coding to really know its full accuracy. TASvideos seems to rank it middling at best. It doesn't seem to do the graphical tricks on Covell's Game Genie Decoder, instead showing green screen most of the time.

Isn't Mednafen woefully inaccurate? (really the only reason I ever downloaded it was because its PC Engine emulator at least can scroll the screen in Nectaris while the one I was using before couldn't, otherwise I wouldn't have even looked at it)
Re: Which is the Most Accurate NES Emulator?
by on (#133777)
Only a handful of Mednafen's cores are actually original (and some of the code for a few was based on existing code/designs, whatever the truly means). NES emulation is provided by FCEU, though I'm not entirely sure which version it currently uses. It's probably not hardware-accurate, but "accurate" enough as far as ordinary users care about, else I think they'd be hard pressed to use something better, or make something better.

About FCEUX not truly being multiplatform, it's been ages since I even touched the Windows version, but aside from the missing debugger, I can't think of any major features that are lacking, at least none that are deal-breakers for an average player like myself. There probably are some advanced bells and whistles that I've never touched (please point them out, since I'm really curious to find out the Windows/Linux differences), but I'm guessing FCEUX is in the same boat as VBA-M and Desmume. They have Linux ports to be sure (I use them, a lot :p) but they're missing a lot of the debugging features present on the Windows version. To my knowledge, this is simply due to the fact that no one has bothered to add things to the Linux GUIs. It often gets put on the back-burner, which means indefinite delay.
Re: Which is the Most Accurate NES Emulator?
by on (#133802)
Quote:
but aside from the missing debugger,[...] for an average player like myself
I was specifically hunting for a debugging emulator to understand the innards of Zelda II. Now, TASvideos stands behind FCEUX. (Mednafen's got their imprimatur for some of the many systems it runs, but I don't think NES is in there.)

I miss the days when TASvideos wouldn't accept OS-specific emulators.

So, the main description says...
FCEUX website, and also the Ubuntu Software Center wrote:
The concept behind FCEUX is to merge elements from FCEU Ultra, FCEU rerecording, FCEUXD, FCEUXDSP, FCEUXDSP CE, and FCEU-mm into a single branch of FCEU.

As the X implies, it is an all-encompassing version of the FCEU emulator that provides the best of all worlds for the general player,
(emphasis added)

The downloads page on FCEUX does note the discrepancy, but the Ubuntu Software Center does not.

Let's consider the features of the branches alleged to have been amalgamated in X.
Quote:
FCEUXD by BBitmaster and Parasyte has a Trace Logger, a built-in Hex Editor, a Name Table Viewer, Code/Data Logger, Inline Assembler, and Game Genie Decoder/Encoder in addition to the Debugger and PPU Viewer from FCEUD.
aren't present (You even still have the "Load Game Genie ROM" bit for using it in the ubuntu-packaged version (2.1.5).)
Quote:
FCEUXD SP adds conditional breakpoints and symbolic debugging.
and neither are these.
Couldn't find anything on FCEUXDSP CE, but I expect it's yet more debugging features. Similarly I cannot find FCEU Ultra, though I expect that's just a typo of the main branch FCEU.
Quote:
FCEU-mm
seems to focus on improved mapper applications? Uncertain provenance, but would be nice.
Quote:
FCEU-rr/Rerecording (keypress-movie recording/rerecording (savestate+movie interaction), avidump)
is present in the linux "port" of FCEUX. There's also lua scripting, a language I haven't learned yet, though I understand that it could, if properly leveraged, do quite a bit of debugging.

In any case, you'll note that the debugging features are

So, does that REALLY sound like it's a port FCEUX, the "all-encompassing"?

In contrast, Mednafen had about all these features, only lacking symbolic debugging and conditional breakpoints; this was also nice when I moved from just peeking to hacking to nascent developing.

Sorry. It made me very angry at the time.

Neither Mednafen 8.x nor FCEUX 2.1.5 appear to be able to handle the NTSC port of Elite that is available somewhere around here; looks like it's in some way neglecting to switch CHR pages--the upper region of the screen looks all right, but once objects get large enough, the lower tiles of their wireframes become junk.
Re: Which is the Most Accurate NES Emulator?
by on (#133803)
To meet its claimed spec without needing Wine, the Win32 front-end would have to be either A. compiled against Winelib or B. rewritten in GTK+ or Qt.

I think the NTSC version of Elite might have been made for a customized version of NESticle. Does it even run on a PowerPak?
Re: Which is the Most Accurate NES Emulator?
by on (#133809)
@Myask - That's the point I was making. For your average user, the FCEUX port is complete enough. It's those extra features that are actually pretty niche even as far as emulation goes (TAS and debugging). Most people involved in emulation just want to play games (myself included as it regards the NES).

But you missed the other point I was making. There's nothing, to my knowledge, that prevents those features from being added to the SDL/GTK+ version. Most of the debugger is probably just a matter of writing the necessary GUI code (again, as in the cases of other emulators such as VBA-M and Desmume). Video recording may be trickier (dumping audio in SDL is straightforward) but not impossible (just hit up ffmpeg if need be). I doubt there's a lot that can't be ported (or much of anything really). It's just a matter of not enough people caring to get the work done, not that the work can't be done.