Difference between revisions of "Emulation accuracy"

From Emulation General Wiki
Jump to navigation Jump to search
m
Line 15: Line 15:
 
===Cycle accurate===
 
===Cycle accurate===
 
Cycle accurate emulation is basically trying to perfectly emulate timings right down to per-cycle accesses. So each individual component is emulated at exactly the right time, and in perfect sync etc., which takes a performance hit. The size of the performance hit depends on the way cycle accuracy is implemented and the skill of the coder.
 
Cycle accurate emulation is basically trying to perfectly emulate timings right down to per-cycle accesses. So each individual component is emulated at exactly the right time, and in perfect sync etc., which takes a performance hit. The size of the performance hit depends on the way cycle accuracy is implemented and the skill of the coder.
The accuracy of these emulators are close to perfection, but at a steep CPU cost.
+
 
 +
The accuracy of these emulators are close to perfection, but at a steep CPU cost. However, some people believe that the notion of 100% cycle-based accuracy being slow is a misconception, one that people believe because most attempts at a cycle emulator aren't as well-optimized as they could be. MarathonMan, developer of [[CEN64]], is one of the people who believes this. Whether or not this is the case remains to be seen.
  
 
===Chip accurate/Circuit accurate===
 
===Chip accurate/Circuit accurate===
Chip accurate emulation works by simulating each logic chip on the board individually. Not only does this take a tremendous amount of power to run (as in, even emulating something from the late 70's on a chip accurate level requires a pretty high-end system to run at full speed.), but they also require a incredible amount of effort to code. This accuracy method is pretty much useless. Although it is technically the only way to achieve true 100% accuracy, cycle accuracy is already near-perfect, to the point where any inaccuracies present in cycle accuracy are pretty much invisible to the end user (e.g. there are no known discrepancies between BSNES/Higan and a real SNES). Not only that, but cycle-accurate emulators have much lower system requirements and programming difficulty. There are currently no publicly-released chip accurate video game emulators in existence, and there will most likely never be one. Circuit accuracy is similar to chip accuracy, although it's made for systems that lack any type of CPU (e.g. the cabinets for Pong and other arcade cabinets released around that time.) The system requirements for this are also very high. There is only one circuit emulator: [http://sourceforge.net/projects/dice/ DICE.] This emulator was made for playing very old arcade games, such as the aforementioned Pong. Yet despite being well-optimized, you need a very high-end computer to run them at full speed. This has some use, since it is the only way to emulate games like that accurately (due to there being no CPU cycles to make cycle emulation possible.)
+
Chip accurate emulation works by simulating each logic chip on the board individually. Not only does this take a tremendous amount of power to run (as in, even emulating something from the late 70's on a chip accurate level requires a pretty high-end system to run at full speed.), but they also require a incredible amount of effort and money to make. This accuracy method is pretty much useless. Although it is technically the only way to achieve true 100% hardware simulation, cycle accurate emulation can already achieve accuracy which is virtually indistinguishable from the real hardware. Not only that, but cycle-accurate emulators have much lower system requirements and programming difficulty. There are currently no publicly-released chip accurate video game emulators in existence, and there will most likely never be one.  
 +
 
 +
Circuit accuracy is similar to chip accuracy, although it's made for systems that lack any type of CPU (e.g. the cabinets for Pong and other arcade cabinets released around that time.) The system requirements for this are also very high. There is only one circuit emulator: [http://sourceforge.net/projects/dice/ DICE.] This emulator was made for playing some of the first arcade games ever made. Yet despite being well-optimized, you need a very high-end computer to run it at full speed. This has some use, since it is the only way to emulate games like that accurately (due to there being no CPU cycles to make cycle emulation possible.)
  
 
==Controversy==
 
==Controversy==

Revision as of 05:44, 22 March 2014

Accuracy is how accurate the emulator is to the original hardware. Accuracy is most often achieved by tighter syncing. More accuracy means less graphics and audio glitches, at the cost of additional CPU power required to run the game at fullspeed. There are hopes that less CPU power will be needed for more accuracy with the use of tighter programming.

Types:

Low accuracy

Low accuracy emulators will have a large amount of visual and audio glitches. They will typically use various speedhacks to skip over problems, as a result many games simply run due to a variety of patches while others don't work at all. This can become very problematic when ROM hacks use these speedhacks to run by abusing the errors to create otherwise impossible behaviour. This means that the romhack can only be used in that one specific emulator. Such an issue has occured with ZSNES.

Medium accuracy

Medium accuracy emulators will have fewer glitches, but will still have many problems. Most emulators fall into this category.

High accuracy

High accuracy emulators try to replicate the original system as closely as possible, and for that reason take more CPU power to do so. They will have fewer audio and visual glitches. High accuracy emulators may or may not be cycle accurate.

100% Game compatibility

Some high accuracy emulators can achieve 100% compatibility with commercially released games.

Cycle accurate

Cycle accurate emulation is basically trying to perfectly emulate timings right down to per-cycle accesses. So each individual component is emulated at exactly the right time, and in perfect sync etc., which takes a performance hit. The size of the performance hit depends on the way cycle accuracy is implemented and the skill of the coder.

The accuracy of these emulators are close to perfection, but at a steep CPU cost. However, some people believe that the notion of 100% cycle-based accuracy being slow is a misconception, one that people believe because most attempts at a cycle emulator aren't as well-optimized as they could be. MarathonMan, developer of CEN64, is one of the people who believes this. Whether or not this is the case remains to be seen.

Chip accurate/Circuit accurate

Chip accurate emulation works by simulating each logic chip on the board individually. Not only does this take a tremendous amount of power to run (as in, even emulating something from the late 70's on a chip accurate level requires a pretty high-end system to run at full speed.), but they also require a incredible amount of effort and money to make. This accuracy method is pretty much useless. Although it is technically the only way to achieve true 100% hardware simulation, cycle accurate emulation can already achieve accuracy which is virtually indistinguishable from the real hardware. Not only that, but cycle-accurate emulators have much lower system requirements and programming difficulty. There are currently no publicly-released chip accurate video game emulators in existence, and there will most likely never be one.

Circuit accuracy is similar to chip accuracy, although it's made for systems that lack any type of CPU (e.g. the cabinets for Pong and other arcade cabinets released around that time.) The system requirements for this are also very high. There is only one circuit emulator: DICE. This emulator was made for playing some of the first arcade games ever made. Yet despite being well-optimized, you need a very high-end computer to run it at full speed. This has some use, since it is the only way to emulate games like that accurately (due to there being no CPU cycles to make cycle emulation possible.)

Controversy

There are basically two camps when it comes to the issue of accuracy. One side argues that as long as an emulator plays the majority of games at full speed on most computers and devices without too many obvious glitches, it does not matter how accurately it actually replicates the original hardware and its many quirks and functions. The faithfulness of the emulator to the console it is emulating comes second to its overall ability to play games. The other side argues that an emulator should ultimately strive to simulate the hardware as much as possible, as that is the only way to achieve as much compatibility as possible, as well as the only way to preserve the hardware. Thus, speed and scalability to most devices takes a backseat to accuracy to the real console, both for purposes of compatibility and preservation.

Even within the second camp, however, there is some disagreement as to just how much accuracy is actually needed. On most platforms, after obtaining a certain amount of accuracy, going further still requires an exponential growth in system requirements, the results of which may not be noticeable to the vast majority of users. Cycle accuracy in particular has been hotly debated in regards to its usefulness, due to how such an extreme level of accuracy requires a lot of extra processing power for relatively few gains in compatibility.

Simply put, it's a battle between those who feel 'good enough' is the goal and those who want nothing but the pinnacle of perfection no matter the cost.

Further reading

http://arstechnica.com/gaming/2011/08/accuracy-takes-power-one-mans-3ghz-quest-to-build-a-perfect-snes-emulator/

NES Accuracy Tests

Game Boy Accuracy Tests