BOX64(1)
๐ box64(1) โ Linux Userspace x86_64 Emulator with a twist ๐
okay bestie, sit DOWN, because this is the manual page for box64, from User Contributed Perl Documentation, section 1. It's giving "tiny emulator that could, and did, actually." No cap. ๐ฆ
โจ NAME โจ
box64 โ Linux Userspace x86_64 Emulator with a twist ๐
๐ธ SYNOPSIS ๐ธ
box64 [--help] [--version] executable
๐ DESCRIPTION ๐
So here's the tea. Box64 lets you run x86_64 Linux programs (yes, including games, the whole point ๐ฎ) on non-x86_64 Linux systems, like ARM โ and heads up, the host system needs to be 64-bit little-endian. That's the vibe check. โ
Since Box64 uses the native versions of some "system" libraries โ like libc, libm, SDL, and OpenGL โ it's genuinely easy to integrate and use with most applications, and performance can be surprisingly high in many cases. Like, actually. Not me hyping it up for no reason. ๐ฅ
And THEN. Box64 integrates with DynaRec (that's the dynamic recompiler, iykyk) for the ARM64 platform, which gives a speed boost of between 5 to 10 times faster than using only the interpreter. Five. To. Ten. Times. Periodt. ๐
โจ OPTIONS โจ
Short section, iconic behavior, we love a minimalist. ๐
-h,--helpโ Prints the box64 help and then dips out. โ๏ธ-v,--versionโ Prints the box64 version and then dips out. โ๏ธ
๐ BRIEF USAGE ๐
okay so there are many environment variables controlling how Box64 behaves โ like, a LOT, we're getting to them, breathe โ and on top of that, Box64 also looks in 2 places for an rcfile:
/etc/box64.box64rc~/.box64rc
Both in the format of .ini files. ๐
And the settings priority goes like this:
~/.box64rc(highest โ your personal one wins, main character energy)/etc/box64.box64rc- environment variables (lowest)
Example, because we're visual learners bestie:
[factorio]
BOX64_DYNAREC_SAFEFLAGS=0
BOX64_DYNAREC_BIGBLOCK=2
BOX64_DYNAREC_FORWARD=1024
BOX64_DYNAREC_CALLRET=1
๐ฆ ENVIRONMENT VARIABLES ๐ฆ
Okay this is the big one. Grab a snack. We're going in. ๐
BOX64_ADDLIBS = XXXX|XXXX:YYYY:ZZZZ
Add extras to the needed libraries list. Rarely needed, so don't stress unless something's being weird.
XXXX: Add libraryXXXXto the needed libraries list.XXXX:YYYY:ZZZZ: Add libraryXXXX,YYYYandZZZZto the needed libraries list.
BOX64_ALLOWMISSINGLIBS = 0|1
Allow missing libraries to just be ignored. Rude to the libraries, but okay. ๐
0: Do not allow missing libraries. [Default]1: Allow missing libraries.
BOX64_ARGS = XXXX|XXXX YYYY ZZZZ
Arguments to pass to the guest program โ only valid if there are no existing arguments, so it can't just butt in whenever.
XXXX: Pass argumentXXXXto the program.XXXX YYYY ZZZZ: Pass argumentsXXXX,YYYYandZZZZto the guest program.
BOX64_AVX = 0|1|2
Expose AVX extension to CPUID and the cpuinfo file. Default value is 2 on Arm64 because it's fully implemented in DynaRec, and 0 otherwise. Available in WowBox64.
0: Do not expose AVX capabilities.1: Expose AVX, BMI1, F16C and VAES extensions to CPUID and cpuinfo file.2: All in1, plus AVX2, BMI2, FMA, ADX, VPCLMULQDQ and RDRAND extensions.
BOX64_BASH = XXXX
Path to the bash executable. ๐
XXXX: Use bash executable at pathXXXX.
BOX64_CEFDISABLEGPU = 0|1
Add -cef-disable-gpu argument to the guest program.
0: Does nothing. [Default]1: Add-cef-disable-gpuargument to the guest program.
BOX64_CEFDISABLEGPUCOMPOSITOR = 0|1
Add -cef-disable-gpu-compositor argument to the guest program.
0: Does nothing. [Default]1: Add-cef-disable-gpu-compositorargument to the guest program.
BOX64_CPUTYPE = 0|1
Specify the CPU type to emulate. Available in WowBox64.
0: Emulate an Intel CPU Model. [Default]1: Emulate an AMD CPU Model.
BOX64_CRASHHANDLER = 0|1
Use a dummy crash handler or not. Dummy handler my beloved.
0: Use emulatedcrashhandler.solibrary if needed.1: Use an internal dummy (empty)crashhandler.solibrary. [Default]
BOX64_DLSYM_ERROR = 0|1
Enable or disable the logging of dlsym errors.
0: Disable the logging ofdlsymerrors. [Default]1: Enable the logging ofdlsymerrors.
BOX64_DUMP = 0|1
Dump elfloader debug information. Available in WowBox64.
0: Do not dump elfloader debug information. [Default]1: Dump elfloader debug information.
BOX64_DYNAREC = 0|1
Enable/disable the Dynamic Recompiler (a.k.a DynaRec). This option defaults to 1 if it's enabled in the build options for a supported architecture. Available in WowBox64.
0: Disable DynaRec.1: Enable DynaRec.
BOX64_DYNAREC_ALIGNED_ATOMICS = 0|1
Generate aligned atomics only (only available on Arm64 for now). Available in WowBox64.
0: Generate unaligned atomics handling code. [Default]1: Generate aligned atomics only, which is faster and smaller code size, but will cause SIGBUS for LOCK prefixed opcodes operating on aligned data addresses. ๐
careful bestie โ option 1 is faster and smaller, but that SIGBUS is not a drill.
BOX64_DYNAREC_BIGBLOCK = 0|1|2|3
Enable building bigger DynaRec code blocks for better performance. Available in WowBox64.
0: Do not try to build block as big as possible, suitable for programs using lots of threads and JIT, like Unity.1: Build Dynarec block as big as possible.2: Build Dynarec block bigger, do not stop when block overlaps, but only for blocks in elf memory. [Default]3: Build Dynarec block bigger, do not stop when block overlaps, for all type of memory, useful for wine programs.
BOX64_DYNAREC_BLEEDING_EDGE = 0|1
Detect MonoBleedingEdge and apply conservative settings. Yes, that's really what it's called.
0: Do not detect MonoBleedingEdge.1: Detect MonoBleedingEdge and applyBOX64_DYNAREC_BIGBLOCK=0BOX64_DYNAREC_STRONGMEM=1when detected. [Default]
BOX64_DYNAREC_CALLRET = 0|1|2
Optimize CALL/RET opcodes. Available in WowBox64.
0: Do not optimize CALL/RET, use jump table. [Default]1: Try to optimize CALL/RET, skipping the jump table when possible.2: Try to optimize CALL/RET, skipping the jump table when possible, adding code to handle return to dirty/modified block. Does not work on WowBox64.
BOX64_DYNAREC_DF = 0|1
Enable or disable the use of deferred flags. Available in WowBox64.
0: Disable the use of deferred flags.1: Enable the use of deferred flags. [Default]
BOX64_DYNAREC_DIRTY = 0|1|2
Allow continuing to run a block that is unprotected and potentially dirty. Living dangerously, respectfully.
0: Do not allow continue running a block that is unprotected and potentially dirty. [Default]1: Allow continue to run a dynablock that write data in the same page as code. It can gets faster in loading time of some game but can also get unexpected crashes.2: Will also, when it detect an HotPage, flag that page as NEVERCLEAN, and so it will not be write protected but Block build from that page will always be tested. It can be faster that way (but some SMC case might not be trapped).
BOX64_DYNAREC_DIV0 = 0|1
Enable or disable the generation of division-by-zero exception. Available in WowBox64.
0: Do not generate the division-by-zero exception. [Default]1: Generate the division-by-zero exception.
BOX64_DYNAREC_DUMP = 0|1|2
Enable DynaRec dump. Available in WowBox64.
0: Do not dump DynaRec blocks. [Default]1: Dump DynaRec blocks.2: Dump DynaRec blocks with some colors. ๐
BOX64_DYNAREC_DUMP_RANGE = 0xXXXXXXXX-0xYYYYYYYY
Dump DynaRec blocks in the specified range. Available in WowBox64.
0xXXXXXXXX-0xYYYYYYYY: Define the range where dynablock gets dumped (inclusive-exclusive).
BOX64_DYNAREC_FASTNAN = 0|1
Enable or disable fast NaN handling. Available in WowBox64.
0: Precisely emulate the-NaNgeneration like on x86.1: Do not do anything special with-NANgeneration, faster. [Default]
BOX64_DYNAREC_FASTROUND = 0|1|2
Enable or disable fast rounding. Available in WowBox64.
0: Generate float/double -> int rounding and use current rounding mode for float/double computation like on x86.1: Do not do anything special with edge case rounding, faster. [Default]2: Generate float/double -> int rounding using current rounding mode for float/double computation like on x86, but use fast int -> float/double conversion.
BOX64_DYNAREC_FORWARD = 0|128|XXXX
Define max allowed forward value when building block. Available in WowBox64.
0: No forward value. When current block ends, do not try to go further even if there are previous forward jumps.128: Allow up to128bytes of gap between end of the block and the next forward jump. [Default]XXXX: Allow up toXXXXbytes of gap between end of the block and the next forward jump.
BOX64_DYNAREC_GDBJIT = 0|1|2|3|0xXXXXXXX-0xYYYYYYY
The GDBJIT debugging support, only available on a build with -DGDBJIT=ON, enable it with the gdb command: jit-reader-load /usr/local/lib/libbox64gdbjitreader.so.
0: Dynarec will not generate GDBJIT debuginfo. [Default]1: Dynarec will generate GDBJIT debuginfo.2: Dynarec will generate detailed GDBJIT debuginfo with internal state.3: Dynarec will register detailed GDBJIT debuginfo only for dynablocks that the guest program trap into, greatly improving performance.0xXXXXXXX-0xYYYYYYY: Define the range where Dynarec will generate detailed GDBJIT debuginfo with internal state.
BOX64_DYNAREC_LOG = 0|1|2|3
Disable or enable DynaRec logs. Available in WowBox64.
0: Disable DynaRec logs. [Default]1: Enable minimal DynaRec logs.2: Enable debug level DynaRec logs.3: Enable verbose level DynaRec logs.
BOX64_DYNAREC_MISSING = 0|1|2
Print missing opcodes. Available in WowBox64.
0: Do not print the missing opcode. [Default]1: Print missing opcodes.2: Print the fallback to scalar opcodes, only valid on RISC-V.
BOX64_DYNAREC_NATIVEFLAGS = 0|1
Enable or disable the use of native flags. Available in WowBox64.
0: Do not use native flags.1: Use native flags when possible. [Default]
BOX64_DYNAREC_PAUSE = 0|1|2|3
Enable x86 PAUSE emulation, may help the performance of spinlocks. Available in WowBox64.
0: Ignore x86 PAUSE instruction. [Default]1: Use YIELD to emulate x86 PAUSE instruction.2: Use WFI to emulate x86 PAUSE instruction.3: Use SEVL+WFE to emulate x86 PAUSE instruction.
BOX64_DYNAREC_PERFMAP = 0|1
Generate map file for the Linux perf tool.
0: Dynarec will not generate perf map. [Default]1: Dynarec will generate perf map.
BOX64_DYNAREC_SAFEFLAGS = 0|1|2
Behaviour of flags emulation on CALL/RET opcodes. Available in WowBox64.
0: Treat CALL/RET as if it never needs any flags.1: Most of RETs will need flags, most of CALLs will not. [Default]2: All CALL/RET will need flags.
๐ธ BOX64_DYNAREC_STRONGMEM = 0|1|2|3
okay so this one turns on the emulation of the x86 strong memory model ๐ช available in WowBox64.
0โ don't try anything special. [Default]1โ enable some memory barriers when writing to memory, so we emulate the x86 strong memory model in a limited way.2โ everything in1, plus memory barriers on SIMD instructions.3โ everything in2, plus more memory barriers on a regular basis.
๐ BOX64_DYNAREC_TBB = 0|1
enable or disable libtbb detection.
0โ do not detect libtbb.1โ detect libtbb and apply conservative settings. [Default]
๐ BOX64_DYNAREC_TEST = 0|1|0xXXXXXXXX-0xYYYYYYYY
enable DynaRec execution comparison with the interpreter. bestie, this is so slow, like genuinely painful, only for testing. available in WowBox64.
0โ no comparison. [Default]1โ each opcode runs on interpreter and on Dynarec, regs and memory are compared and printed when they differ.0xXXXXXXXX-0xYYYYYYYYโ define the range where dynarec is tested (inclusive-exclusive).
๐
BOX64_DYNAREC_TRACE = 0|1
enable or disable DynaRec trace.
0โ do not trace DynaRec blocks. [Default]1โ trace DynaRec blocks, will slow down the program a lot and generates huge logs.
โ ๏ธ that 1 is not a vibe, it's a warning. huge logs. HUGE.
โจ BOX64_DYNAREC_VOLATILE_METADATA = 0|1
use volatile metadata parsed from PE files, only valid for 64bit Windows games.
0โ do not use volatile metadata.1โ use volatile metadata, which will guide Box64 for better strong memory emulation. [Default]
๐ฆ BOX64_DYNAREC_WAIT = 0|1
wait or not for the building of a DynaRec code block to be ready. available in WowBox64.
0โ do not wait and use interpreter instead, might speedup a bit on massive multithread or JIT programs.1โ wait for a DynaRec code block to be ready. [Default]
๐ BOX64_DYNAREC_WEAKBARRIER = 0|1|2
tweak the memory barriers to reduce the performance impact by strong memory emulation. available in WowBox64.
0โ use regular safe barrier.1โ use weak barriers to have more performance boost. [Default]2โ everything in1, plus disabled the last write barriers.
๐ BOX64_DYNAREC_X87DOUBLE = 0|1|2
force the use of float/double for x87 emulation. available in WowBox64.
0โ try to use float when possible for x87 emulation. [Default]1โ only use Double for x87 emulation.2โ check Precision Control low precision on x87 emulation.
๐ง BOX64_EMULATED_LIBS = XXXX|XXXX:YYYY:ZZZZ
force the use of emulated libraries. no cap, just tell it which ones.
XXXXโ force the use of emulated library XXXX.XXXX:YYYY:ZZZZโ force the use of emulated libraries XXXX, YYYY and ZZZZ.
๐ BOX64_ENV = XXXX=yyyy
add an environment variable. yes, from inside Box64 itself, iconic.
XXXX=yyyyโ add environment variable XXXX with value yyyy.
๐ธ BOX64_ENV[1-5] = XXXX=yyyy
add an environment variable. same energy, just more slots.
XXXX=yyyyโ add environment variable XXXX with value yyyy.
๐ BOX64_EXIT = 0|1
just exit, do not try to run the program. it's giving "i'm out" ๐
0โ does nothing. [Default]1โ just exit.
๐ฆ BOX64_FIX_64BIT_INODES = 0|1
fix 64bit inodes.
0โ do not fix 64bit inodes. [Default]1โ fix 64bit inodes.
โญ BOX64_IGNOREINT3 = 0|1
ignore INT3 instructions.
0โ trigger a TRAP signal if a handler is present. [Default]1โ skip the opcode silently.
๐ BOX64_INSERT_ARGS = XXXX|XXXX YYYY ZZZZ
prepend arguments to the command line.
XXXXโ prepend argument XXXX to the program.XXXX YYYY ZZZZโ prepend arguments XXXX, YYYY and ZZZZ to the guest program.
๐ BOX64_INPROCESSGPU = 0|1
add --in-process-gpu argument to the guest program.
0โ does nothing. [Default]1โ add--in-process-gpuargument to the guest program.
๐ซถ BOX64_JITGDB = 0|1|2|3
launch gdb or not for SIGSEGV, SIGILL, and SIGBUS. this is the debugger bestie, buckle up ๐ฅ
0โ just print the message when the signal is caught. [Default]1โ launch gdb when a SIGSEGV, SIGILL or SIGBUS signal is trapped, attached to the offending process and go in an endless loop, waiting. Inside gdb, you need to find the correct thread yourself (the one withmy_box64signalhandlerin its stack), then probably need tofinish1 or 2 functions (insideusleep(..)) and then you'll be inmy_box64signalhandler, just before the printf of the Segfault message. Thenset waiting=0to exit the infinite loop.2โ launch gdbserver when a SIGSEGV, SIGILL or SIGBUS signal is trapped, attached to the offending process, and go in an endless loop, waiting. Usegdb /PATH/TO/box64and thentarget remote 127.0.0.1: 1234to connect to the gdbserver (or use actual IP if not on the machine). After that, the procedure is the same as withBOX64_JITGDB=1.3โ launch lldb when a SIGSEGV, SIGILL or SIGBUS signal is trapped, attached to the offending process and go in an endless loop, waiting.
๐ BOX64_JVM = 0|1
detect libjvm and apply conservative settings.
0โ does nothing.1โ detect libjvm, and applyBOX64_DYNAREC_BIGBLOCK=0BOX64_DYNAREC_STRONGMEM=1BOX64_SSE42=0when detected. [Default]
๐ BOX64_LD_LIBRARY_PATH = XXXX
path to look for x86_64 libraries.
XXXXโ add path XXXX to the library path.
๐ง BOX64_LD_PRELOAD = XXXX|XXXX:YYYY
force loading libraries with the binary.
XXXXโ force the loading of library XXXX.XXXX:YYYYโ force the loading of libraries XXXX and YYYY.
๐
BOX64_LIBCEF = 0|1
detect libcef and apply BOX64_MALLOC_HACK settings.
0โ does nothing.1โ detect libcef, and applyBOX64_MALLOC_HACK=2if detected. [Default]
โจ BOX64_LIBGL = libXXXX|/path/to/libXXXX
set the name for libGL.
libXXXXโ set the name for libGL to libXXXX./path/to/libXXXXโ set the name and path for libGL to/path/to/libXXXX, you can also useSDL_VIDEO_GL_DRIVER.
๐ธ BOX64_LOAD_ADDR = 0xXXXXXXXX
set the address where the program is loaded, only active for PIE guest programs.
0xXXXXXXXXโ set the address where the program is loaded.
๐ฅ BOX64_LOG = 0|1|2|3
enable or disable Box64 logs, default value is 0 if stdout is not terminal, 1 otherwise. available in WowBox64.
0โ disable Box64 logs.1โ enable minimal Box64 logs.2โ enable debug level Box64 logs.3โ enable verbose level Box64 logs.
๐ BOX64_MALLOC_HACK = 0|1|2
behaviour when hooking malloc operators.
0โ don't allow malloc operator to be redirected, rewriting code to use regular function. [Default]1โ allow malloc operator to be redirected.2โ like0, but track special mmap/free (some redirected functions are inlined and cannot be redirected).
๐ฆ BOX64_MAXCPU = 0|XXXX
maximum CPU cores exposed. available in WowBox64.
0โ use the actual number of CPU cores. [Default]XXXXโ use XXXX CPU cores.
โญ BOX64_MMAP32 = 0|1
force 32-bit compatible memory mappings on 64-bit programs that run 32-bit code (like Wine WOW64), can improve performance.
0โ do not force 32-bit memory mappings.1โ force 32-bit memory mappings. [Default]
๐ BOX64_NOBANNER = 0|1
disable the Box64 banner. available in WowBox64.
0โ show the Box64 banner.1โ do not show the Box64 banner.
๐ BOX64_NODYNAREC = 0xXXXXXXXX-0xYYYYYYYY
forbid dynablock creation in the address range specified, helpful for debugging behaviour difference between Dynarec and Interpreter. available in WowBox64.
0xXXXXXXXX-0xYYYYYYYYโ define the range where dynablock creation is forbidden (inclusive-exclusive).
๐ซถ BOX64_NOGTK = 0|1
do not load wrapped GTK libraries.
0โ load wrapped GTK libraries. [Default]1โ do not load wrapped GTK libraries.
๐ BOX64_NOPULSE = 0|1
do not load PulseAudio libraries (both native and x86_64).
0โ load PulseAudio libraries. [Default]1โ do not load PulseAudio libraries.
๐ง BOX64_NORCFILES = 0|1
do not load any rc files.
0โ load rc files. [Default]1โ do not load any rc files.
๐ BOX64_NOSANDBOX = 0|1
add --no-sandbox argument to the guest program.
0โ does nothing. [Default]1โ add--no-sandboxargument to the guest program.
๐ BOX64_NOSIGSEGV = 0|1
disable the handling of SIGSEGV.
0โ let the x86 program set sighandler for SIGSEGV. [Default]1โ disable the handling of SIGSEGV.
๐ BOX64_NOSIGILL = 0|1
disable the handling of SIGILL.
0โ let the x86 program set sighandler for SIGILL. [Default]1โ disable the handling of SIGILL.
๐ฅ BOX64_NOVULKAN = 0|1
do not load Vulkan libraries.
0โ load Vulkan libraries. [Default]1โ do not load Vulkan libraries, both native and x86_64.
๐ BOX64_PATH = XXXX
path to look for x86_64 binaries.
XXXXโ add path XXXX to the binary path.
๐ธ BOX64_PREFER_EMULATED = 0|1
prefer emulated libraries over native ones.
0โ prefer native libraries over emulated ones. [Default]1โ prefer emulated libraries over native ones.
โจ BOX64_PREFER_WRAPPED = 0|1
prefer wrapped libs first even if the lib is specified with absolute path.
0โ prefer libs with absolute path over wrapped ones. [Default]1โ prefer wrapped libs first even if the lib is specified with absolute path.
๐ BOX64_RCFILE = XXXX
path to the rc file to load.
XXXXโ load the rc file XXXX, default rc files will not be loaded.
โญ BOX64_RDTSC_1GHZ = 0|1
use hardware counter for rdtsc if available.
0โ use hardware counter for rdtsc opcode if available. [Default]1โ use hardware counter for rdtsc if and only if precision is at least 1GHz.
๐ฆ BOX64_RESERVE_HIGH = 0|1
reserve high memory area for the program, always enabled on Box32.
0โ do not reserve high memory area for the program. [Default]1โ reserve high memory area for the program.
๐
BOX64_ROLLING_LOG = 0|1|XXXX
show last few wrapped function call when a signal is caught.
0โ does nothing. [Default]1โ show last 16 wrapped function call when a signal is caught.XXXXโ show last XXXX wrapped function call when a signal is caught.BOX64_SDL2_JGUID=0|1โ bestie, this one applies a lil workaround for theSDL_GetJoystickGUIDInfofunction when you're dealing with a wrapped SDL2. ๐ฎ0โ Does nothing. [Default]1โ Use a workaround forSDL_GetJoystickGUIDInfofunction for wrapped SDL2.
BOX64_SHAEXT=0|1โ exposes SHAEXT (a.k.a.SHA_NI) capabilities. Like, do we let the app see them or not.0โ Do not expose SHAEXT capabilities.1โ Expose SHAEXT capabilities. [Default]
BOX64_SHOWBT=0|1โ show native and emulated backtrace when a signal is caught. chef's kiss for debugging. ๐ฅ0โ Does nothing. [Default]1โ Show native and emulated backtrace when a signal is caught.
BOX64_SHOWSEGV=0|1โ always show SIGSEGV signal details. no more mystery segfaults, we're nosy now.0โ Does nothing. [Default]1โ Always show SIGSEGV signal details.
BOX64_SSE_FLUSHTO0=0|1โ controls the behaviour of SSE Flush to 0 flags. Available in WowBox64. ๐0โ Just track the flag. [Default]1โ Apply SSE Flush to 0 flag directly.
BOX64_SSE42=0|1โ expose SSE4.2 capabilities. Available in WowBox64.0โ Do not expose SSE4.2 capabilities.1โ Expose SSE4.2 capabilities. [Default]
BOX64_SYNC_ROUNDING=0|1โ synchronize rounding mode between x86 and native. math girlies stay winning. ๐งฎโจ0โ Do not synchronize rounding mode. [Default]1โ Synchronize rounding mode between x86 and native.
BOX64_TRACE_COLOR=0|1โ turn colored trace output on or off. aesthetics matter even in a register dump. ๐0โ Disable colored trace output. [Default]1โ Enable colored trace output.
BOX64_TRACE_EMM=0|1โ enable or disable EMM (i.e. MMX) trace output.0โ Disable EMM trace output. [Default]1โ Enable EMM trace output.
BOX64_TRACE_FILE=XXXX|XXXX%pid|stderrโ send all log and trace to a file instead ofstdout. so your terminal can breathe. ๐XXXXโ Send all log and trace to fileXXXX.XXXX%pidโ Send all log and trace to fileXXXXwith pid appended.stderrโ Send all log and trace tostderr.
BOX64_TRACE_INIT=0|1โ same asBOX64_TRACEbut it starts the trace immediately.0โ Disable trace output. [Default]1โ Enable trace output. Trace starts before the initialization of dependencies.
BOX64_TRACE_START=0|1|XXXXโ start trace after N opcodes executed.0โ Start trace immediately. [Default]1โ Start trace after 1 opcode executed.XXXXโ Start trace afterXXXXopcodes executed.
BOX64_TRACE_XMM=0|1โ enable or disable XMM (i.e. SSE) trace output.0โ Disable XMM trace output. [Default]1โ Enable XMM trace output.
BOX64_TRACE=0|1|symbolname|0xXXXXXXX-0xYYYYYYYโ only available on a box64 build with trace. adds a trace of every single instruction executed, plus a register dump. it's giving surveillance era. ๐0โ Disable trace output. [Default]1โ Enable trace output.symbolnameโ Enable trace output forsymbolnameonly.0xXXXXXXX-0xYYYYYYYโ Enable trace output for the range of address (inclusive-exclusive).
BOX64_UNITYPLAYER=0|1โ detect UnityPlayer and apply conservative settings. we're being gentle with it, ok?0โ Does nothing.1โ Detect UnityPlayer, and applyBOX64_DYNAREC_STRONGMEM=1when detected. [Default]
BOX64_WRAP_EGL=0|1โ prefer wrapped libs for EGL and GLESv2.0โ Prefer emulated libs for EGL and GLESv2. [Default]1โ Prefer wrapped libs for EGL and GLESv2.
BOX64_X11GLX=0|1โ force the Xorg GLX extension to be present. main character energy for your GLX. ๐0โ Do not force Xorg GLX extension to be present. [Default]1โ Require Xorg GLX extension when usingXQueryExtension.
BOX64_X11SYNC=0|1โ force synchronized operation on the X11 display.0โ Do not force synchronized operation on X11 display. [Default]1โ Force synchronized operation on X11 display.
BOX64_X11THREADS=0|1โ callXInitThreadswhen loading X11. this is mostly for old Loki games paired with theLoki_Compatlibrary. vintage, lowkey iconic. ๐0โ Do not callXInitThreads. [Default]1โ CallXInitThreadsas soon aslibX11is loaded.
BOX64_X87_NO80BITS=0|1โ the behaviour of x87 80bits long double. Available in WowBox64.0โ Try to handle 80bits long double as precise as possible. [Default]1โ Use 64bits double for x87.
and that's the whole page, bestie!! ๐ซถ you just read an entire manpage, periodt. this little masterpiece came out of perl v5.42.0, dated 2025-08-06, and it lives in section 1 as BOX64(1) โ go forth and emulate something slay โจ๐
๐ฆ where this page comes from
- fedora 43: box64-data 0.3.6-1.fc43 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms