Changes

Jump to navigation Jump to search

Emulation accuracy

12 bytes added, 1 June
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.
;In the world of computing, terms like "[[Hypervisors|hypervisors]]", "[[Simulators|simulators]]", "[[Compatibility_layer|compatibility /translation layers]]", "[[Wrappers|wrappers]]", "[[FPGA|FPGA-based hardware cloning]]", "Docker", "Sandboxing/OS-level virtualization" and "[[:Category:Emulators|software emulators]]" 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. 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 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. 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 efficient handling of resource allocation and isolation. Additionally, some emulators employ compatibility layers as subcomponents, acting as translators for specific libraries or APIs that might otherwise be incompatible with the host environment. Think of these layers as linguistic bridges, allowing the emulated software to converse fluently with the modern system hardware. By strategically merging these techniques and the help of skilled use of [[High/Low_level_emulation|HLE and LLE or Hybrid]], [[Dynamic_recompilation|compiler techniques]] and using specific features such as Fast Memory Access[https://github.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 [https://whatcookie.github.io/posts/why-is-avx-512-useful-for-rpcs3/ AVX-512 for RPCS3]) and other various optimizations[https://yuzu-emu.org/entry/yuzu-progress-report-dec-2023/#android-adventures-and-kernels-with-benefits], certain emulators achieve impressive levels of performance and compatibility, further unlocking the doors to historical software [[Preservation_projects|preservation]].[https://youtu.be/cCXri4yDHmU] Sandboxing is 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.
11,787
edits

Navigation menu