|
>But a computer monitor can sync down to 60Hz, which should be adequate, and yet I still get tearing unless I activate the emulator's sync function, which usually brings its own set of problems.
The reason this happens is because the author has not implemented double-frame buffering. This basically seperates the video memory being read to output pixels to the monitor, from the video memory being written to by the rendering device, and is swapped every frame. Triple-buffering has some performance advantages to double-buffering. Using multi- video-buffers is the only way source frames can be rendered out of sync with the rate that destination frames are read at, without creating visual tearing. Generally a person would want to do this, if they want fancy features like fast-forwarding (increasing NES frame rate) or slow motion (decreasing NES frame rate). You can also do these things with a double-buffer technique.
Since these buffering techniques require the programmer to be aware of the vertical retrace, they are hardly ever implemented in emulators which were developed without tools for scheduling frames to the video card (for windows programers, directx should provide all this control. For DOS, VBE 3.0 (1998 or 99) has frame scheduling functions).
|