Changes

Jump to navigation Jump to search

Emulation accuracy

2,632 bytes added, 27 February
no edit summary
;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.
An emulator is '''accurate''' when an instruction given to both ;In the program world of computing, terms like "[[Hypervisors|hypervisors]]", "[[Simulators|simulators]]", "[[Compatibility_layer|compatibility layers]]", "[[Wrappers|wrappers]]", "[[FPGA|FPGA-based hardware cloning]]" and the hardware results in both outputting the same result"[[:Category:Emulators|software emulators]]" are often used interchangeably, leading to confusion. That means accurate emulators produce much fewer audio While they share some similarities, each technology serves a distinct purpose and video glitches, usually operates at the cost of more processing power needed. It's often achieved by using tighter synchronizationdifferent levels.
The more accurate Within the realm of computer science, emulation occupies a niche distinct from virtualization or other techniques. Whereas hypervisors usually used for partitioning physical hardware resources among multiple guest operating systems, and simulators where developers build virtual replicas of specific environments or processes, emulation endeavors to recreate an emulator isentire historical architecture. This digital reconstruction seeks to faithfully capture the instruction set, timing behaviors, the lesser deviations there is from real hardware behavior but features and even peripheral nuances of a bygone hardware platform. Unlike compatibility layers, which translate software instructions to a native format, emulation builds a virtual stage upon which the software itself can perform authentically. Emulation's intricate tapestry sometimes intertwines with threads of other technologies though. Notably, certain emulators leverage hypervisors for a more demanding it isefficient handling of resource allocation and isolation. IronicallyAdditionally, some emulators employ compatibility layers as subcomponents, acting as translators for specific libraries or APIs that aspect might at times otherwise be at odds incompatible with the host environment. Think of these layers as linguistic bridges, allowing the emulated software to converse fluently with how authentic the experience ismodern system hardware. By strategically merging these techniques and the help of skilled use of [[High/Low_level_emulation|HLE and LLE or Hybrid]], when it introduces [[Input lagDynamic_recompilation|compiler techniques]]and using specific features such as Fast Memory Access[https://github. A similar debate surrounds CRT shaders com/PCSX2/pcsx2/pull/5821][https://github.com/PCSX2/pcsx2/pull/7295][https://yuzu-emu.org/entry/yuzu-fastmem/#what-is-fastmem][https://dolphin-emu.org/blog/2016/09/06/booting-the-final-gc-game/] and instruction set support (such as well[https://whatcookie.github. Not to mention the hardware intensive nature of very accurate emulators io/posts/why-is-avx-512-useful-for-rpcs3/ AVX-512 for later consoles may be at odds RPCS3]) and other various optimizations[https://yuzu-emu.org/entry/yuzu-progress-report-dec-2023/#android-adventures-and-kernels-with the emulator's usability-benefits], especially with the recent collapse certain emulators achieve impressive levels of Moore's Law (in layman's termsperformance and compatibility, 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)further unlocking the doors to historical software [[Preservation_projects|preservation]].[https://youtu.be/cCXri4yDHmU]
So in summary, an accurate emulator is when an instruction given to both the program and the hardware results in both outputting the same result. That means accurate emulators produce much fewer audio and video glitches, usually at the cost of more processing power needed. It's often achieved by using tighter synchronization. The more accurate an emulator is, the lesser deviations there is from real hardware behavior but the more demanding it is. 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.
==Types==
===High accuracy===
High accuracy is a level of precision that emulator developers strive for when achieving [[#Cycle_accuracy|cycle accuracy]] or even [[#Partial cycle-accuracy|partial-cycle accuracy]] is not practical or necessary. This approach focuses on replicating the original system's components as accurately closely as possible, aiming to faithfully reproduce its behavior while staying mindful of hardware demands. Though it may demand more processing powercompared to lowly accurate emulators, pursuing a more accurate emulation experience can pay off in the form of fewer audio/visual glitches and better handling of niche scenarios that creative programmers often implement. Though they don't mimic every clock cycle as precisely as cycle-accuracy, highly accurate emulators capture the essence of the original hardware very well. Also achieving 100% compatibility with commercially released games is a common goal for emulators with high accuracy. Some of these emulators represent an even more meticulous level of precision in replicating the original system compared to other highly accurate emulators, this heightened level of accuracy often involves more sophisticated techniques, demanding increased computational resources.
===Cycle accuracy===
====Partial cycle-accuracy====
This focuses on replicating the timing of instructions and key internal operations, while simplifying or skipping some less critical details. This can lower the performance requirements compared to full cycle accuracy. Remember, just because an emulator is partially cycle-accurate doesn't necessarily make it more accurate than a highly accurate emulator. For example, CEN64 only emulates the CPU pipeline cycle-accurately and that's all, on the other hand Simple64 is more accurate in terms of timing for specific tasks like certain DMA transfers, even though it doesn't achieve partial partially cycle-accurate emulation.
:Examples of partially cycle-accurate emulators are [https://old.reddit.com/r/emulation/comments/vy8cg7/ares_v129_has_been_released_crossplatform/ig4da06/ bsnes] and [https://discord.com/channels/976404869386747954/976463759935696977/1106700321222299762 CEN64].
====Cycle-based accuracy====
This type of emulation accuracy aims to reproduce the system's functional behavior within a specified number of cycles without necessarily adhering to the exact
timing of each individual instructioncycle. Since this method doesn't go out of its way to mimic the precise timing and execution of each instructioncycle, it may not be able to handle all hardware edge cases.
:An example of a cycle-based emulator is jgnes with its cycle-based emulation of the Ricoh 2A03 and PPU.
==Perfection?==
While it may be theoretically possible to have a 100% perfect emulator, that feat is very rare (if not nearly impossible), even for some highly regarded emulators such as [[higan]] or kevtris's work on the various FPGA-based consoles by Analogue. Just because an emulator claims to be "cycle accurate" or "100% compatible" does not mean that said emulator is flawless. This even includes situations in which all emulator accuracy tests (iei.e. [[PS1 Tests]]) are passed, as these tests cannot cover every single edge case, and some of these tests may even fail on real hardware, leading to even more confusion. Some things are nearly impossible to perfectly emulate, such as some of the illegal opcodes of the [[wikipedia:MOS_Technology_6502|6502]], where the results are completely unpredictable on hardware, and different hardware revisions have different results and different illegal opcodes. The closest one could get to writing a perfect emulator would be if someone were to exactly copy an original ASIC map or a decap onto an FPGA, and even then, that isn't always a magic bullet.
While any given emulator may not be perfect, that does not mean that the emulator is bad by any means. Writing an accurate emulator is extremely hard work, and while perfection may be nearly impossible at the moment, that doesn't mean that games can't be enjoyed. Work on archival via emulation has come a very long way since the emulators of the 1990s, and things are only getting better from here, with excellent emulators such as the previously mentioned [[higan]] and kevtris's [[FPGA]] cores being available to use right now. In other words, "good enough" goes a long way.
The accuracy debate has very clearly split into two sides.
The ones that don't favor accuracy argue that emulators do not need to be as accurate as possible if it can play all the games they need. And because these games tend to be the most recognized alongside the console, there shouldn't really be an interest in making more games work since those ones do. A more compelling point is 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 doesn't matter how accurately it replicates the original hardware and its many quirks and functions. The faithfulness of the emulator to the console it's emulating comes second to its overall ability to play games.
The ones that favor accuracy explain their view in that when playing a game with inaccurate emulation the experience may sometimes be quite different to the real thing, particularly with games focused on split-second reactions. There is also an entirely different reason: archival. Emulator projects should ultimately strive to recreate the hardware as much as possible; that's the only way for it to be compatible, and that's the only way to preserve the hardware. Speed and scalability to most devices is a lower priority to accuracy to the real console, both for purposes of compatibility and preservation.
10,888
edits

Navigation menu