Emulation accuracy: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
;It's important to know that emulation accuracy and compatibility are two different things; while how closely an emulator mimics the original hardware is important, don't mistake that for compatibility. Whether games run properly is a separate concern, accuracy can sometimes influence it. See [[#Perfection.3F|"perfection"]] and [[#Controversy|"controversy"]] sections. | ;It's important to know that emulation accuracy and compatibility are two different things; while how closely an emulator mimics the original hardware is important, don't mistake that for compatibility. Whether games run properly is a separate concern, accuracy can sometimes influence it. See [[#Perfection.3F|"perfection"]] and [[#Controversy|"controversy"]] sections. | ||
;In the world of computing, terms | ;In the world of computing, terms mentioned below are often used interchangeably, leading to confusion. While they share some similarities, each technology serves a distinct purpose and operates at different levels. Within the realm of computer science, emulation occupies a niche distinct from virtualization or other techniques; | ||
Within the realm of computer science, emulation occupies a niche distinct from virtualization or other techniques | *'''[[Hypervisors|Hypervisors/virtualization]]''' usually used for partitioning physical hardware resources among multiple guest operating systems | ||
*'''Hypervisors''' usually used for partitioning physical hardware resources among multiple guest operating systems | *'''[[Simulators]]''' where developers build virtual replicas of specific environments or processes | ||
*'''Simulators''' where developers build virtual replicas of specific environments or processes | *'''[[:Category:Emulators|Emulation]]''' endeavors to recreate an entire historical architecture. This digital reconstruction seeks to faithfully capture the instruction set, timing behaviors, hardware features and even peripheral nuances of a bygone hardware platform. In years, lots of techniques and other technologies come in useful to emulator development which is mentioned in [[High/Low_level_emulation#Future_Outlook]] section. Thanks to this, emulators achieve impressive levels of [[Frames_per_second|performance]] and compatibility, further unlocking the doors to historical software [[Preservation_projects|preservation]]. | ||
*'''Emulation''' endeavors to recreate an entire historical architecture. This digital reconstruction seeks to faithfully capture the instruction set, timing behaviors, hardware features and even peripheral nuances of a bygone hardware platform. In years, lots of techniques and other technologies come in useful to emulator development which is mentioned in [[High/Low_level_emulation#Future_Outlook]] section. Thanks to this, emulators achieve impressive levels of [[Frames_per_second|performance]] and compatibility, further unlocking the doors to historical software [[Preservation_projects|preservation]]. | *'''[[Compatibility_layer|Compatibility/translation layers]]''' allow software written for one operating system to run on a different OS, often by translating system calls made by an application to their equivalent calls in the host operating system. | ||
*'''[[Wrappers]]''' is a reimplementation of a library, where the goal is to substitute the original API with a better-supported interface. It works as a drop-in replacement for the original library, since a lot of software usually bundled it as-is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. | |||
*'''Sandboxing''' creates a restricted environment for running applications on your Host operating system. Within this "sandbox," applications can't make permanent changes to your system files or registry. | *'''Sandboxing''' creates a restricted environment for running applications on your Host operating system. Within this "sandbox," applications can't make permanent changes to your system files or registry. | ||
*'''Docker''' is a containerization platform. It creates isolated containers that share the host operating system kernel but have their own set of files and configurations. Docker is primarily used for deploying and isolating applications, particularly microservices, for development, testing, and deployment purposes. | *'''Docker''' is a containerization platform. It creates isolated containers that share the host operating system kernel but have their own set of files and configurations. Docker is primarily used for deploying and isolating applications, particularly microservices, for development, testing, and deployment purposes. | ||
*'''FPGA''' is a type of microchip that can reconfigure itself after it has been manufactured, hence "field-programmable". The technology has found use in alternative to software emulation as it can reimplement the hardware without having to resort to any kind of binary translation to a computer platform's native code. Instead of adhering to an instruction set or a programming language, FPGA chips are instead programmed using a hardware descriptor language (HDL) that describes the components and logic needed to run the software. This programming isn't permanent; corrections and other changes can be made afterwards so that it isn't limited to one application like an ASIC. | |||
If emulators are accurate enough, it produces much fewer audio and video glitches, usually at the cost of more processing power needed. It's often achieved by using tighter synchronization. This means the more accurate an emulator is, the lesser deviations there are from real hardware behavior but the more demanding it is. In another way, instructions given to both the program and the hardware (original intentions) results in both outputting the same result (mimics). Ironically, that aspect might at times be at odds with how authentic the experience is, when it introduces [[input lag]]. A similar debate surrounds CRT shaders as well. Not to mention the hardware intensive nature of very accurate emulators for later consoles may be at odds with the emulator's usability, especially with the recent collapse of Moore's Law (in layman's terms, you can't just "buy a better PC" if semiconductor technology does not catch up fast enough with what it takes for accurate emulation that makes zero compromises for optimizing speed). As a result, accuracy and emulator authenticity continue to be controversial subjects and highly a matter of opinion depending on what aspect of the experience the user values more. | If emulators are accurate enough, it produces much fewer audio and video glitches, usually at the cost of more processing power needed. It's often achieved by using tighter synchronization. This means the more accurate an emulator is, the lesser deviations there are from real hardware behavior but the more demanding it is. In another way, instructions given to both the program and the hardware (original intentions) results in both outputting the same result (mimics). Ironically, that aspect might at times be at odds with how authentic the experience is, when it introduces [[input lag]]. A similar debate surrounds CRT shaders as well. Not to mention the hardware intensive nature of very accurate emulators for later consoles may be at odds with the emulator's usability, especially with the recent collapse of Moore's Law (in layman's terms, you can't just "buy a better PC" if semiconductor technology does not catch up fast enough with what it takes for accurate emulation that makes zero compromises for optimizing speed). As a result, accuracy and emulator authenticity continue to be controversial subjects and highly a matter of opinion depending on what aspect of the experience the user values more. | ||