Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Nintendo Games

A Quest For the Perfect SNES Emulator 227

An anonymous reader sends this excerpt from the Opposable Thumbs blog: "It doesn't take much raw power to play Nintendo or SNES games on a modern PC; emulators could do it in the 1990s with a mere 25MHz of processing power. But emulating those old consoles accurately — well, that's another challenge entirely; accurate emulators may need up to 3GHz of power to faithfully recreate aging tech. ... As an example, compare the spinning triforce animation from the opening to Legend of Zelda on the ZSNES and bsnes emulators. On the former, the triforces will complete their rotations far too soon as a result of the CPU running well over 40 percent faster than a real SNES. These are little details, but if you have an eye for accuracy, they can be maddening. ... The primary demands of an emulator are the amount of times per second one processor must synchronize with another. An emulator is an inherently serial process. Attempting to rely on today's multi-core processors leads to all kinds of timing problems. Take the analogy of an assembly line: one person unloads the boxes, another person scans them, another opens them, another starts putting the item together, etc. Synchronization is the equivalent of stalling out and clearing the entire assembly line, then starting over on a new product. It's an incredible hit to throughput. It completely negates the benefits of pipelining and out-of-order execution. The more you have to synchronize, the faster your assembly line has to move to keep up."
This discussion has been archived. No new comments can be posted.

A Quest For the Perfect SNES Emulator

Comments Filter:
  • by iYk6 ( 1425255 ) on Wednesday August 10, 2011 @07:14AM (#37042190)

    You seem to be missing the point. The triforce spinning was probably a bad example, since it's not that important. The problems with inaccurate emulators range from annoying visual glitches, to crashes, to actually making a game unbeatable. Star Ocean, for example, will sometimes crash in zsnes, but I haven't experienced that in bsnes. The battles run at double speed, much like the triforce in LTTP. Playing Yoshi's Island in zsnes, any level with those giant fuzzballs will tick every time you move. It's nauseating to get through. In zsnes, Super Mario RPG battles will sometimes de-sync to the point that the music and animations will continue, but your input will no longer work and you have to reset the game.

    In Speedy Gonzales - Los Gatos Bandidos, if you're playing with zsnes, you can't even beat the game, because it doesn't emulate everything necessary to do so. In Sink or Swim, the room fills with water, and you need to swim above it. But because of timing and speed issues, the room fills up much too fast and you will drown instantly.

    You can read about some of these issues, and many more, here: http://byuu.org/bsnes/accuracy [byuu.org]

  • Re:Chipsets (Score:5, Informative)

    by AmiMoJo ( 196126 ) on Wednesday August 10, 2011 @07:34AM (#37042290) Homepage Journal

    Latency on USB is terrible. It just isn't designed for that sort of thing.

    The problem that the summary alludes to is context switching, changing from one task to another. Every time you do it you have to save data from one task to memory and reload data for the next one. Most operating systems do that and it isn't a problem when you are only switching 1,000,000 times per second even for a fairly low end console.

    Amiga emulation was thought to be nearly impossible because of this, but some clever chap realised that you can do a fairly close approximation and get a reasonably good result while running at the speed of the original machine. TFA doesn't make it clear but I think what it is trying to demonstrate is how the CPU can end up running too fast because in an actual SNES the other hardware causes wait states for memory access and the like which effectively slows it down. Say the CPU wants to access video memory but the graphics chip also needs to use it. Since the graphics hardware can't wait (it would cause corruption on the display) it gets priority and the CPU has to wait instead. The delay is handled internally by the CPU so there is no hint in the game's code that this is happening and a traditional emulator would not take account of it.

  • Re:MAME (Score:2, Informative)

    by Anonymous Coward on Wednesday August 10, 2011 @08:59AM (#37042936)

    MAME isn't accurate, it's just badly coded. Accuracy is an excuse the current developers use because they're not actually very good programmers, and many of the performance issues just boil down to poorly implemented core features.

    To get a like-for-like comparison, MESS is a side-project of MAME using the MAME code to emulate consoles. It has to rank as one of the worst in terms of both performance AND compatibility. It's actually slower than BSNES and has a compatibility rate worse than ZSNES of 10 years ago.

    The MESS emulation of the SNES is using code from MAME because MAME emulated the SNES for the Nintendo Super System arcade system. This demonstrates how MAME is a prime example of an emulator where the developers have adopted a 'good enough is good enough' mentality. Once the software they want to run works the developers consider it consider it 'good enough'

    With arcade platforms that approach holds up in 99% of cases, each platform usually has only a small number of games running on it, and most users don't have the prior knowledge of the titles to analyse them with extreme scrutiny. When their code is taken and used to emulate systems like the SNES where details are important, it fails. It fails in a similar way when it comes to Playstation, Jaguar, Sega, Amiga and the majority of others too. All you read about Tekken 3 being slow in MAME because the emulator is focused on accuracy holds no weight when you look at the actual accuracy and compatibility rate of the Playstation emulation provided by MAME via the MESS project.

    BSNES is slow because Byuu has masterfully crafted an accurate emulator which emulates the SNES at a level indistinguishable from the real hardware, comparisons with MAME which is just the fruit of shoddy programming, ill-designed subsystems and a poorly conceived development vision are disrespectful.

    I say this as somebody who has submitted code to MAME to fix issues found in MESS and has observed some of the horrors and inexplicably gross hacks and inefficient functions to be found in the MAME code while they continue to claim 'accuracy' as the reason for performance woes.

  • by Hatta ( 162192 ) on Wednesday August 10, 2011 @09:37AM (#37043336) Journal

    Some guy? Byuu is the author of the finest emulator yet created. He's not asking a question because he knows the answer. He's speaking from his own expertise.

They are relatively good but absolutely terrible. -- Alan Kay, commenting on Apollos

Working...