Accuracy: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(is it possible to exempt http://nesdev.parodius.com/bbs/ URLs from the CAPTCHA?)
 
(or is there a way that established editors can be exempt from CAPTCHA?)
Line 1: Line 1:
'''Compatibility''' is how well an emulator produces the same output as the original system when running a particular known program.
'''Compatibility''' is how well an emulator produces the same output as the original system when running a particular known program.
'''Accuracy''' refers to how well an emulator produces the same output as the original system when running an arbitrary unknown program.
'''Accuracy''' refers to how well an emulator produces the same output as the original system when running an arbitrary unknown program.
An emulator can be highly compatible without being very accurate; Nesticle was this way back in the 1990s.
Accuracy cannot be measured directly. Compatibility with [[Emulator Tests|ROMs designed to test obscure behaviors]] is a good (though not perfect) predictor of accuracy.
In many cases, an emulator is more forgiving than the hardware, especially in when a program is allowed to write to a register.
Nesticle, for instance, allowed writes to [[PPU registers|PPUDATA]] at any time, when it actually works only after line 241 of a given frame.
Whenever you discover a difference in behavior between the NES and best-of-breed emulators (like Nintendulator and Nestopia), you can help emulators become more accurate.
First reduce your program to a minimal test case: keep removing things while the program continues to exhibit this difference.
Then characterize the behavior difference and add it to the [[Emulator Tests|test suite]].


== References ==
== References ==
*[http://nesdev.parodius.com/bbs/viewtopic.php?t=5797 Topic on forum]
*[http://nesdev.parodius.com/bbs/viewtopic.php?t=5797 Topic on forum]
*[https://wiki.mozilla.org/QA/Minimal_Test_Cases How to make a minimal test case] (focuses on HTML, but applies to any virtual machine]

Revision as of 04:34, 7 December 2009

Compatibility is how well an emulator produces the same output as the original system when running a particular known program. Accuracy refers to how well an emulator produces the same output as the original system when running an arbitrary unknown program. An emulator can be highly compatible without being very accurate; Nesticle was this way back in the 1990s.

Accuracy cannot be measured directly. Compatibility with ROMs designed to test obscure behaviors is a good (though not perfect) predictor of accuracy.

In many cases, an emulator is more forgiving than the hardware, especially in when a program is allowed to write to a register. Nesticle, for instance, allowed writes to PPUDATA at any time, when it actually works only after line 241 of a given frame.

Whenever you discover a difference in behavior between the NES and best-of-breed emulators (like Nintendulator and Nestopia), you can help emulators become more accurate. First reduce your program to a minimal test case: keep removing things while the program continues to exhibit this difference. Then characterize the behavior difference and add it to the test suite.

References