Box64 V02 Update

By

Good news! Box64 (and Box86) is getting another major update with its new 0.2 version. In this version the major new features:

  • Full DXVK 2.0 compatibility, thanks to more Vulkan functions wrapped!
  • Memory footprint improvement
  • It’s now possible to run shell scripts made for x86_64
  • Unity3D Games are now supported
  • AppImages are now supported
  • Discord works
  • Battlenet client works too

Here is the full changelog for both of them.

Box64 v0.2.0

  • Wrapped more Vulkan functions, DXVK 2.0 now works
  • Refactor Dynarec memory management, reducing memory footprint (from 20% to 40% of Dynarec size)
  • Improved elf loader
  • Improved dlsym handling with RTLD_NEXT
  • Added BOX64_DYNAREC_SAFEFLAGS to allow finetuning Dynarec generated code handling of flags accross function calls and returns.
  • Added BOX64_BASH to setup x86_64 bash binary, so shell script can be run in x86_64 world
  • Added BOX64_ROLLING_LOG to have details log only on crash
  • Work on alignment for some of pthread structures
  • More wrapped libraries in the gtk family
  • Some fixes on the Dynarec x87 code (fixing a bunch of games like ut2004 or Piczle Puzzle)
  • Improved TLS Size handling (Unity3D games now works)
  • More PageSize Compile options
  • Improved execv family of function to have better box64 integration
  • Added support for wrapped libfuse so AppImage works
  • Adjusted the binfmt integration so AppImage are automaticaly picked
  • Improved FAudio, SDL2, GL (and more) wrapping
  • More wrapped libs, like libEGL.so, to helps emulated Qt⅘ libs to load
  • Improved Signal Handling
  • Some signature fixes to some wrapped functions (in libc)
  • Added more syscalls
  • Added a lot of new opcodes to the ARM64 Dynarec

Box86 v0.2.8

  • Wrapped more vulkan function, dxvk 2.0 now works
  • Added support for overriden malloc/free functions
  • Improved elf loader
  • Improved dlsym handling with RTLD_NEXT
  • Added BOX86_DYNAREC_SAFEFLAGS to allow finetuning Dynarec generated code handling of flags accross function calls and returns.
  • Added BOX86_BASH to setup x86 bash binary, so shell script can be run in x86 world
  • Added BOX86_ROLLING_LOG to have details log only on crash
  • Improved TLS Size handling (Unity3D games now works)
  • Improved execv family of function to have better box86 integration
  • Added a few more wrapped libs, like FAudio
  • Improved gtk, SDL2, GL, Vulkan (and more) wrapping
  • Improved Signal Handling and memory protection traking
  • Added some basic support for statically linked program. Thread are not working yet, but memory allocation and file access does.

PtitSeb, the developer of Box86 and Box64, added some more comments:

With the use of the new SafeFlags, some C# Windows program now run fine (it’s forced when the Vara family of software is detected).

With the basic support of statically linked programs, old emulators like modeler for Linux works. Programs with threads like Mugen for Linux still do not, however.

The bash integration is useful for device with no binfmt integration or for script that check the machine it’s running on

What Progress Looks Like

Because of all the above improvements, a lot of games have now started to work:

  • Surviving Mars
  • Piczle Puzzle Game (using Proton experimental)
  • UT2004
  • Obduction
  • Machinarium
  • Silicon Zero
  • Hacknet
  • Absolute Drift
  • Art of Rally
  • Dota2

You can see some of them in the below video (footage provided by PtitSeb) running on a D2000 Phytium mini-PC from China, equipped with a AMD RX550 GPU (mobile version, 64 bits bus only, while most desktop GPU cards have a 128 bits bus). Some games are constrained by the CPU (DOTA2 for example), some others by the GPU (Doom 2016) but things should improve on the CPU front in future versions.

Here’s a few screenshots provided courtesy of PtitSeb:

DOTA2 running on the Phytium Mini ARM PC, with Vulkan:

DOOM, running faster than ever before:

Obduction (GoG client, using WINE 7.5 and DXVK 2.0):

Surviving Mars:

As for now, Steam for Linux is only supported in mini-mode, and Itch.io and GOG Galaxy clients are not working yet. The holy grail would be to get Steam to work in its full mode, but there’s still quite some work to get there and to understand why it does not work yet.

What about the Nintendo Switch?

In case you were wondering if Box86 and Box64 can run x86 games on the Nintendo Switch… well you would NOT be wrong! You can indeed run Ubuntu on the Switch, and since it’s an ARM device with a Tegra GPU from Nvidia you have everything that you need to run x86 and x86_64 software with Box64. Here’s a video from someone who tried it on a few games a few months back. The key bottleneck for the Switch is the lack of 32 bits GPU driver which makes performance drop significantly.

Performance should be better on the new version released today. PtitSeb is planning to spend more time on improving the support of 32bits code in Box64 at some point, so you might be closer to playing a lot more PC games on the Switch than you’d think!

Stay tuned on Boiling Steam for all the latest info related to Box86 and Box64.