Release of Box64 0.4.0, an emulator for running x86 games on ARM64, RISC-V, and Loongarch64 systems

The release of the Box64 emulator version 0.4.0 has been published, designed to run Linux programs compiled for the x86_64 architecture on hardware with ARM64, RISC-V, and Loongarch64 processors. The project places great emphasis on the organization of launching gaming applications and provides the capability to run Windows builds through Wine and Proton. The project's source code is written in C and is distributed under the MIT license.

A feature of the project is the use of a hybrid execution model, where emulation is applied only to the machine code of the application and specific libraries. Typical system libraries, including libc, libm, GTK, SDL, Vulkan, and OpenGL, are replaced with versions native to the target platforms. This allows library calls to be executed without emulation, resulting in a significant increase in performance.

Code emulation, for which there are no native replacements for the target platform, is performed using dynamic recompilation (DynaRec) techniques from one set of machine instructions to another. Compared to interpreting machine instructions, dynamic recompilation demonstrates performance improvements of 5 to 10 times. high performance.

In the new version:

  • A unified prefix opcode decoder has been introduced, utilized in the interpreter and across all DynaRec dynamic recompilation backends. The new decoder more universally handles rare combinations of opcode prefixes, eliminating the need for specific 'hacks' and code duplication in the interpreter and DynaRec backends. The redesign of the decoder led to the removal of excess code, simplifying maintenance of the codebase and enabling DynaRec to work with atypical combinations of opcode prefixes.
  • Work has begun on a mechanism to remove from memory blocks of code that have been converted to native code but are no longer in use. Such optimization allows for reduced memory consumption when launching applications that perform a large number of operations at startup, such as Steam and applications using libcef.
  • Support for the ARM64 architecture has been improved: An assembly profile for the NVIDIA GB10 CPU has been implemented. In the DynaRec backend, the implementation of optimization techniques for loops has continued, such as moving XMM/YMM register setup operations out of the loop body.
  • Stability and performance of the DynaRec backend for the RISC-V architecture have been enhanced. Correct operation of Steam, Proton, and Wine has been ensured; however, working with DRM-protected content that requires emulation of Windows system calls necessitates hardware with support for 48-bit address space (SV48) or the use of modified Wine and Proton builds.
  • The development of the backend for the Loongarch architecture has made significant progress, reaching the point where it can run Steam, Wine, and Proton, but it still lags behind in functionality compared to the backend for ARM64 systems. Currently, it requires the use of 4K memory page sizes in the kernel (by default, Loongarch is usually set to 16K). The performance is already sufficient for running games on the Loongarch 3A6000 CPU (2.5 GHz with 4 physical cores).
    Play video
  • The stability of Box32 mode, which provides support for 32-bit executables in Box64, has been improved. In this mode, an increase in the stability of Steam on all architectures has been noted, along with the ability to use in-game overlays in some OpenGL games.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster