Releases: ptitSeb/box64
v0.3.6
What's Changed
- This version introduces wowbox64.dll for Hangover; the ability to use the Volatile Metadata of Windows executables for x64 wine; and some better x87/SSE/AVX handling
=> WowBox64 can be built directly from Box64 repo, and can be found in the CI artifacts also
=> it also supports a subset of BOX64_XXXX settings, which can be set from command line or via a setting file ".box64rc" in the Wine prefix home
=> Volatile Metadata, when present, allows only applying strong memory ordering when needed, as marked by the compiler, giving overall better performances
=> The precision control bit of x87 is now handled, allowing some older games to run correctly
=> More work has been done in the handling of precise NaN and Round handling in SSE & AVX opcodes - Added/fixed some Syscalls, helping Go programs
- Wrapper: more functions added, and some fixes too. Vulkan is 1.4 now, among other things
- Wrapper: Added a few more wrapped libs (like some avcodec and friends)
- Improve internal memory allocator (with a dedicated allocator for small memory allocations), and fixed some issues around it
- Improve internal mmaped file tracking
- Box32: Some small refactoring around memory management and internal memory allocations
- Box32: More functions wrapped
- Box32: More libraries wrapped
- ARM64: Added support for Atomic extension in many internal functions (not related to Dynarec).
- ARM64: Added support for CRC2 extension for internal CRC functions
- Interp: A few fixes to some opcodes, and better NAN handling on some selected SSE/AVX opcodes
- Interp: Added a few opcodes with exotic prefixes
- Dynarec: Introcude BOX64_DYNAREC_ROUND=2 to handle x87 precision control bit (ARM64 and RV64, LA64 still doesn't handle x87 yet)
- Dynarec: Some small optimizations on Strongmem emulation, making it more efficient
- Dynarec: Some speed optimizations on code that do SMC and waiting slot
- Dynarec: Added CALLRET=2 to improve call/ret optimization compatibility with SMC code
- Dynarec: ARM64: Various optimizations and fixes on some opcodes, especially AVX ones
- Dynarec: ARM64: Added missing FASTNAN=0 handling on some SSE/AVX opcodes
- Dynarec: ARM64: Added some exotic prefixed opcodes
- Dynarec: ARM64: Avoid purging XMM/YMM register on intra-block loop if possible
- Dynarec: RV64: Many fixes and improvments around x87 emulation
- Dynarec: RV64: Added some more missing opcodes, especially some LOCK prefixed ones and many MMX ones
- Dynarec: RV64: Various fixes on some existing opcodes
- Dynarec: RV64: Improved nativeflags handling, allowing for more cases to use it
- Dynarec: LA64: Added some more opcodes and MMX handling
- Dynarec: LA64: Various fixes to some existing opcodes
- Android: Improved signal handling, structure alignment, and transformation
- WowBox64: Created the dll, with RcFile, Env. Var. handling and log printout (both ARM64 Dynarec and Interpreter available)
- Cosim: Various fixes and improvements to limit false negatives and improve readability of logs
- RcFile: A few fixes for some values that would be ignored
More details in New release blog
Contributors
- [WRAPPER] missing functions and features by @airidosas252 in #2434
- Bundle more libs by @LukeShortCloud in #2419
- [COSIM] Show hex values in STx diff logs by @ksco in #2436
- [RV64_DYNAREC] Fixed some x87 rounding cases for fastround=0 by @ksco in #2437
- [DOCS] Added ranged gdbjit documentation by @ksco in #2440
- [RV64_DYNAREC] Minor x87 changes to enable test31 by @ksco in #2441
- [RV64_DYNAREC] Minor D8..DF opcodes refactor by @ksco in #2442
- [RV64_DYNAREC] More minor changes and fixes to x87 opcodes by @ksco in #2443
- Note about binfmt_misc by @FZXO11 in #2445
- [RV64_DYNAREC] Added 66 F0 0F B1 LOCK CMPXCHG opcode by @ksco in #2447
- [DYNAREC] Fixed minor issues for F0 0F B0/B1 LOCK CMPXCHG opcodes by @ksco in #2448
- [RCFILE] Added profile for HSR Game by @shenmo7192 in #2450
- [RV64_DYNAREC] Fixed many minor issues by @ksco in #2451
- [RCFILE] Update steamwebhelper profile by @ksco in #2452
- Fixed a bug in the wrapper helper due to variadic arguments by @rajdakin in #2455
- [RV64_DYNAREC] Fixed some DD prefixed x87 opcodes by @ksco in #2463
- [RV64_DYNAREC] Fixed scratch conflicts with fastround=0 in some x87 opcodes by @ksco in #2464
- [RV64_DYNAREC] Small optim to vsetvli usage by @ksco in #2465
- [RV64_DYNAREC] Fixed D9 E5 FXAM opcode by @ksco in #2466
- [RV64_DYNAREC] Minor improvement to DD /7 FNSTSW opcode by @ksco in #2467
- [RV64_DYNAREC] Fixed 66 0F 6A PUNPCKHDQ opcodes by @ksco in #2468
- [INTERP] Fixed Interpreter to have new test30 running on RISC-V by @ksco in #2470
- [LA64_DYNAREC] Added more opcodes by @ksco in #2472
- [LA64_DYNAREC] Added more opcodes by @ksco in #2473
- [LA64_DYNAREC] Added more opcodes by @ksco in #2475
- [LA64_DYNAREC] Added preliminary MMX support by @ksco in #2476
- [LA64_DYNAREC] Added more MMX opcodes by @ksco in #2477
- [LA64_DYNAREC] Added more MMX opcodes by @ksco in #2479
- Some cosmetic changes to C header files by @ksco in #2487
- Added os.h for future usage by @ksco in #2488
- [LA64_DYNAREC] Fix f0.80.1 LOCK OR, LoongArch ANDI is zero-extended. by @phorcys in #2489
- Introduced box64cpu.h for exported interpreter and dynarec functions by @ksco in #2490
- Moved more OS-dependent functions to os.h by @ksco in #2491
- Moved some emit functions to os.h by @ksco in #2494
- [LA64_DYNAREC] Add more sse ops by @phorcys in #2493
- [CI] Enable cppThreads_32bits in the CI by @ksco in #2496
- Moved more functions to os.h by @ksco in #2497
- [INTERP] Fixed a nan propagation issue on RISC-V by @ksco in #2498
- Decoupled alternate functions from bridge by @ksco in #2500
- [LA64_DYNAREC] Optimize la64 MAXPD/MAXPS. by @phorcys in #2499
- Corrected arguments of my_epoll_pwait2 by @kpyrkosz in #2501
- Add __localtime64 and __time64 in box32 mode by @kpyrkosz in #2502
- [CMAKE]: Fix arm64 build by @cjy880927 in #2507
- [WOW64] Add wow64 PE build scaffolding by @ksco in #2513
- [ARM64_DYNAREC] Fixed some dangling else warnings by @ksco in #2514
- Added backtrace.h for holding backtrace-related functions by @ksco in #2515
- Moved emit functions to seperate files from signals.h by @ksco in #2516
- Made custommem OS-independent by @ksco in #2517
- [WOW64] More work on the PE wow64 build by @ksco in #2518
- [WOW64] More tweaks towards PE build by @ksco in #2519
- [WOW64] Splitted freq and cleanup functions from x64emu by @ksco in #2521
- [LA64_DYNAREC] Update la64 mmx infra. by @phorcys in #2524
- [LA64_DYNAREC] Add mmx related mov op by @phorcys in #2526
- [LA64_DYNAREC] Optimize sse_setround by @phorcys in #2527
- [WOW64] More tweaks for PE build by @ksco in #2528
- [LA64_DYNAREC] Add mmx shift ops. by @phorcys in #2529
- [LA64_DYNAREC] Add mmx arith ops. by @phorcys in #2530
- [RV64_DYNAREC] fix MASKMOVQ by @phorcys in #2531
- [WOW64] Added non-functional PE build by @ksco in #2532
- [LA64_DYNAREC] Add mmx cmp ops. by @phorcys in #2533
- Eliminated many compilation warnings by @ksco in #2535
- [WOW64] Added PE build to the build system by @ksco in #2537
- [LA64_DYNAREC] Add mmx pack/unpack ops. by @phorcys in #2536
- [WOW64] More tweaks to CMake PE build by @ksco in #2541
- [LA64_DYNAREC] Add SSE1/SSE2's cvt mmx ops. by @phorcys in #2538
- [WOW64] Finished skeleton code for PE build by @ksco in #2542
- [LA64_DYNAREC]Add/Fix more SSE/...
v0.3.4
What's Changed
- This version is Faster and more compatible:
- => The RV64 backend got faster and more stable, with lots of RVV 1.0 / xThreadVector support to emulate SSE/SSE2+ opcode (no AVX yet)
- => On ARM64, Box64 now support more DRM types than before.
- => BOX32 can run steam now. At least on ARM64 backend, it's still not working on RV64 and LA64 for now.
- Added support to emulate Windows Syscall (needs Proton and a 48bits address space for now)
- Added BOX64_DYNAREC_DIRTY to have a faster (but less safe) way to handle code that write in it's current page
- Added a few rarely used opcodes
- Added experimental support for GDBJIT, that allow an x86/x86_64 program to be debugged on ARM/RV64/LA64 platform with x86 regs and opcode view (might generate a lot of file tho)
- Added support for Perf tools in a similar way if GDBJIT, to have an x86 fine view of the performances
- Reworked undefined flags for common operations, to be similar to real CPU
- Reworked cpuid handling, adding BOX64_CPUTYPE support to select Intel/AMD emulation (no 3DNow! support on AMD for now)
- Reworked ucontext link to be closer to the real thing (and make it more simple)
- Improved memory traking, file descriptor backed memory map, and detect wine loaded dll
- Introduced settings per library and dll (mostly for Dynarec)
- Wrapper: More functions addes, and some fixes too
- BOX32: Many fixes around pthreads wrapping
- BOX32: More functions wrapped.
- BOX32: More libraies wrapped.
- BOX32: Some reworks on how high memory (higher than 32bits) is masked, and can be used for Dynarec blocks.
- Dynarec: The usual batch of fixes, improvments and opcodes additions on all 3 supported backend
- Dynarec: Some fixes to NativeFlags handling, both on ARM64 and RV64
- Dynarec: Added optimized REP MOVSB (expected for default CPUTYPE=0, according to new cpuid return)
- Dynarec: LA64: more opcoded addes, using hardware extensions like AES
- Dynarec: RV64: More work on using RVV 1.0 and xTheadVector extension to emulate SSE/SSE2+ opcodes
- Dynarec: RV64: Added informations on flags when building blocks, to be used when a signal happens to rebuild a x86 context more accurate
- Dynarec: ARM64: Reworked undefined flags for common operations, to be similar to real CPU
- Dynarec: ARM64: Added informations on flags and xmm/ymm/x87 register when building blocks, to be used when a signal happens to rebuild a x86 context 100% accurate
- TRACE: Reworked how trace for wrapped function call is printed.
- TRACE: Reworked logs to prefix each line with a (optionaly colored) BOX32 or BOX64
- COSIM: Some rework on cosim to limit false negative, especialy when handling x87 operations
- LA64: Added limited support for ABI 1.0
- CI: github CI now also generate MiceWine .rat archive, along with Winlator .wcp archive and regular linux builds.
- RCFile: Added many new games profiles (both for speed improvment or for compatibilty)
More details in New release blog
Contributors
- [LA64_DYNAREC] Added AES opcodes by @xiangzhai in #2122
- [CORE] Refine runtime messages by @jserv in #2125
- [LA64_DYNAREC] Added more 660F opcodes by @xiangzhai in #2127
- [LA64] SIGRTMAX is 127 for ABI 1.0 by @xiangzhai in #2134
- [WRAPPER] Added libcairo.so.2 as one of NEEDED_LIBS for gtk3 (#2136) by @xiangzhai in #2137
- [LA64_DYNAREC] Added more opcodes by @xiangzhai in #2145
- [RV64_DYNAREC] New register mapping by @ksco in #2139
- [RV64_DYNAREC] Reworked ZEROUP and freed t0 by @xctan in #2147
- [RV64_DYNAREC] Reinitialize sew after callret by @ksco in #2148
- [RV64_DYNAREC] Fixed some TO_NAT usages by @ksco in #2149
- [RV64_DYNAREC] Optimize push/pop with xtheadmemidx by @ksco in #2150
- [WRAPPER] Made gtkclass.c less likely to be recompiled by @ksco in #2153
- [RV64_DYNAREC] Fixed more regressions by @ksco in #2157
- [LA64_DYNAREC] Added PTEST opcode by @xiangzhai in #2158
- [CMAKE] Fixed linking issue with mold by @xctan in #2159
- [RV64_DYNAREC] Extended simple wrapper for more int types by @xctan in #2160
- Added initial GDBJIT support by @ksco in #2162
- [GDBJIT] Show x64pc in gdb, also added documentation by @ksco in #2163
- [LA64_DYNAREC] Added POPCNT opcode and fixed an issue too by @ksco in #2164
- [GDBJIT] Refined RV64 and LA64 support by @ksco in #2165
- [RV64_DYNAREC] Added unaligned support to CMPXCHG8B opcode by @ksco in #2166
- [RV64_DYNAREC] Fixed CMPXCHG8B by @ksco in #2167
- [RV64_DYNAREC] Fixed 32bit ADDIz by @ksco in #2168
- [RV64_DYNAREC] Added more LOCK prefix opcodes by @ksco in #2169
- [RV64_DYNAREC] Fixed 32bits SUBz by @ksco in #2170
- [LA64_DYNAREC] Fix VPICKVE2GR_WU typo by @xiangzhai in #2171
- [LA64_DYNAREC] Added CLC and PMOVZXBW opcodes by @xiangzhai in #2172
- [LA64_DYNAREC] A few minor optimizations by @ksco in #2174
- [GDBJIT] Display DynaRec info in source file by @ksco in #2179
- [LA64_DYNAREC] Added ROUNDSD and CVTDQ2PD opcodes by @xiangzhai in #2173
- [GDBJIT] Unified the experience for all the backends by @ksco in #2183
- [GDBJIT] Display register mapping annotations by @ksco in #2185
- [RV64_DYNAREC] Made nativeflags works with 8/16bit fast path by @ksco in #2187
- [RV64_DYNAREC] Added a fast path to SHR Ew, Ib by @ksco in #2188
- [RV64_DYNAREC] Small optim to emit_and32c by @ksco in #2189
- [LA64_DYNAREC] Fixed 32bit ADDIz and SUBz by @ksco in #2191
- [LA64_DYNAREC] Optimized some 16bit shift opcodes by @ksco in #2192
- [LA64_DYNAREC] Fixed some LBT path issues by @ksco in #2193
- [WRAPPED][BOX32] Redirected a few old symbols by @ksco in #2194
- [LA64_DYNAREC] Fixed various issues in LBT path by @ksco in #2197
- Add SDL_RenderGeometryRaw wrapped function to SDL2 by @DragonSWDev in #2195
- [RV64_DYNAREC] Fixed nativeflags tmp register usage by @ksco in #2199
- [LA64_DYNAREC] Small optim to MOVHPS by @ksco in #2200
- [LA64_DYNAREC] Fixed 66 0F PTEST opcode by @ksco in #2201
- [LA64_DYNAREC] Added nativeflags support by @ksco in #2202
- [RV64_DYNAREC] Fixed a regression in #2187 by @ksco in #2203
- [WRAPPED] Always return ENOSYS in the deprecated sysctl by @ksco in #2204
- [RCFILE] Added sekiro.exe entry by @ksco in #2206
- [RV64_DYNAREC] Fixed various lock usage in geted ([LA64_DYNAREC] too) by @ksco in #2207
- [RV64_DYNAREC] Added more opcodes ([LA64_DYNAREC] too) by @ksco in #2205
- [LA64_DYNAREC] Added more opcodes by @ksco in #2208
- [LA64_DYNAREC] Added MOVLPD and MOVHPD opcodes by @xiangzhai in #2198
- [DYNAREC] Cleanup modreg by @ksco in #2209
- [LA64_DYNAREC] Added IRET opcode by @ksco in #2210
- [LA64_DYNAREC] Added more opcodes and fixed CVTTPD2DQ by @ksco in #2211
- [LA64_DYNAREC] Added more opcodes by @ksco in #2213
- [LA64_DYNAREC] Added more opcodes by @ksco in #2214
- [LA64_DYNAREC] Added more opcodes by @ksco in #2215
- [LA64_DYNAREC] Added hardware wall-clock support by @ksco in #2216
- [DYNAREC] Implement perf map by @xiangzhai in #2212
- [LA64_DYNAREC] Fixed some minor issues on LBT path by @ksco in #2218
- [LA64_DYNAREC] Some minor fixes on bad variable usage by @ksco in #2221
- Use uname -m to get CPU architecture by @4Darmygeometry in #2222
- [DOCS] Improve cross-build instructions by @devarajabc in #2196
- Spelling/typo fixes in code and documentation updates by @olegos2 in #2223
- [ANDROID] Add a few ALTNAMEs and unwrap ifdefs for lib names by @olegos2 in #2224
- [WRAPPED][ANDROID] Add libGL ALTNAME by @olegos2 in #2225
- [DYNAR...
v0.3.2
What's Changed
- Introduced Box32 to run 32bits apps on 64bits OS
- => Box32 is a build option for Box64, and is disabled by default
- => Optionnal binfmt integration available for Box32 => Wrapped some basics libs, including graphics and sounds so a few games already works
- => Work In Progress, many issues remain to be fixed, but some Linux games are playable
- Introduced Native Flags. Can be controled with BOX64_DYNAREC_NATIVEFLAGS, but enabled by default
- => Available on the 3 Dynarec backend, with different implementations
- => ARM64 Dynarec build have all AVX/AVX2 extensions enabled by default
- => Can lead to large speedup on certain cases
- Improved Strong Memory Model emulation, with better default options and a more efficiant emulation
- Dynarec: RV64: using RVV (and XThreadVector) to implement SSEx opcodes, with some massive speedup when used!
- Some bugfix and improvment in the Signal handler and internal memory tracking
- Improvment to TRAP signal generation and Handling
- Improved CPUID opcodes again, and the various virtual file in /proc that represent those data
- Improved some x87 operations, like long double handling and infinity comparisons...
- Dynarec: ARM64 fixes to a few opcodes
- Dynarec: RV64 fixes to many opcodes
- Dynarec: LA64 fixes to a few opcodes
- Dynarec: RV64 fixes and improvments on LOCK prefixes opcodes
- Dynarec: Many optimisation on some individual opcodes, an all 3 backends
- WRAPPING: More libs and functions wrapped. Some wrapping fixes too
- WREPPING: New wrapperhelper to help coding new wrapping & fixing/enhancing existing one
- ElfLoader: Improved object fetching
- New build profile for SD865 and ORYON
- Changed the installation folder of x86 libs to avoid conflict with linux distro
- Added a few syscalls
- Some more Vulkan extensions wrapped
- More work on build system, and github CI (generating WCP archive), with some fixes on the Android version (still not 100% operational)
More details in New release blog
Contributors
- [LA64_DYNAREC] Added more opcodes and a minor fix too by @ksco in #1662
- Remove the flags adjustment in
GO_TRACE
for RISC-V 64 by @Coekjan in #1663 - [DYNAREC] Fixed
ymm0_purge
for some instructions by @rajdakin in #1664 - fix some spelling mistakes by @josch in #1668
- [RV64_DYNAREC] Cleanup for removed rv64_lock_cas_dq by @iv-m in #1670
- [Wrapped] Added sqlite3_exec by @kaixindeken in #1671
- Revert "[Wrapped] Added sqlite3_exec" by @ptitSeb in #1673
- Wrap
sqlite3_exec
for libsqlite3 by @Coekjan in #1674 - Wrapped libtiff5 and libltdl7 by @kaixindeken in #1677
- Fix hidden error in PR 1677 by @kaixindeken in #1678
- [LA64_DYNAREC] Added 2 more opcodes by @ksco in #1680
- build: fix PKGBUILD-rk3xxx pkgname was set to box86 by @Rippanda12 in #1681
- [RV64_DYNAREC] Fixed some bugs for VMP by @xctan in #1679
- [ARM64_DYNAREC] Fixed OR Ew, Gw by @ksco in #1682
- [LA64_DYNAREC] Remove xMASK and fixed 86 XCHG opcode by @ksco in #1683
- [RV64_DYNAREC] Clear high 32bits when write back as single by @ksco in #1684
- [RV64_DYNAREC] Fixed GETGXSS_empty on upper bits handling by @ksco in #1685
- [LA64_DYNAREC] Fixed some opcodes by @ksco in #1686
- [LA64_DYNAREC] Fixed CMPSD by @ksco in #1687
- [LA64_DYNAREC] Added more opcodes by @ksco in #1688
- [LA64_DYNAREC] Added more opcodes and fixed SHUFPD opcode by @ksco in #1690
- [LA64_DYNAREC] Added more opcodes and fixed more issues by @ksco in #1692
- [RV64_DYNAREC] Added vlen detection by @ksco in #1694
- [RV64_DYNAREC] Show missing opcodes in vector implementation by @ksco in #1695
- [RV64_DYNAREC] Added more 66 0F opcodes for vector by @ksco in #1696
- [RV64_DYNAREC] Added 66 0F 38 00 PSHUFB for vector by @ksco in #1697
- [RV64_DYNAREC] Added vector SEW cache by @ksco in #1698
- [RV64_DYNAREC] Added more 66 0F 38 opcodes for vector by @ksco in #1699
- [LA64_DYNAREC] Added more opcodes by @ksco in #1700
- [LA64_DYNAREC] Added more opcodes by @ksco in #1701
- [DYNAREC] Fixed CI failures for RV64 and LA64 by @ksco in #1702
- [RV64_DYNAREC] Fixed vector infra by @ksco in #1705
- [RV64_DYNAREC] Fixed more issues in the vector infrastructure by @ksco in #1706
- Update README_UK.md by @Ilya114 in #1709
- [RV64_DYNAREC] Fixed flag generation in IMUL/MUL opcode by @xctan in #1715
- [LA64_DYNAREC] Fixed flag generation in IMUL/MUL opcode by @ksco in #1716
- [INTERP] Fixed some undefined behaviour by @ksco in #1717
- [RV64_DYNAREC] Fixed register conflict with GETEB macro by @xctan in #1718
- [RV64_DYNAREC] Fixed register conflict in the GETSEB marco by @xctan in #1719
- [RV64_DYNAREC] Removed TODOs on GETEX and GETEM macros by @ksco in #1720
- [RV64_DYNAREC] Fixed FNSTSW opcode by @ksco in #1721
- [RV64_DYNAREC] Fixed misused BNE_NEXT in emit_ro{l,r}32 by @xctan in #1723
- [RV64_DYNAREC] Fixed fpu_flags handling and enabled cosim in CI by @ksco in #1722
- [RV64_DYNAREC] Fixed OF generation in emit_sar16c by @xctan in #1724
- [RV64_DYNAREC] Fixed more register conflicts by @ksco in #1726
- [RV64_DYNAREC] Fixed pending flags for large 8 & 16 bit const shifts by @xctan in #1728
- [RV64_DYNAREC] Fixed ROL/ROR RCX, CL by @xctan in #1729
- [RV64_DYNAREC] Fixed flags for shrd/shld with constant 0 shift by @ksco in #1730
- [RV64_DYNAREC] More fixes by @xctan in #1732
- [RV64_DYNAREC] Fixed 0F BA /5 BTS opcode by @ksco in #1733
- [RV64_DYNAREC] Fixed extcacheUnwind regression by @ksco in #1734
- [RV64,LA64_DYNAREC] Small change when handling long CC INT 3 opcode by @ksco in #1736
- Added 1 more gtk3 function wrapper by @ksco in #1737
- [RV64_DYNAREC] Added 66 0F 3A 63 PCMPISTRI opcode and fixed some issues by @ksco in #1735
- Added more curl function wrapper by @ksco in #1738
- [LA64_DYNAREC] Port recent RV64 fixes by @ksco in #1739
- [RV64_DYNAREC] Added more opcodes by @ksco in #1740
- Udate upstream by @ptitSeb in #1741
- [RV64_DYNAREC] Slightly improved LOCK CMPXCHG16B opcode by @ksco in #1743
- Update upstream by @ptitSeb in #1744
- [RV64_DYNAREC] Disable vector extension by default until it's ready by @ksco in #1746
- [RV64_DYNAREC] Fixed various issues in vector infra by @ksco 10000 in #1750
- [RV64_DYNAREC] Fixed more issues in the vector infrastructure by @ksco in #1755
- [ANDROID] Not use 'libbsd.so' as needed lib and don't define NEEDED_LIBS_234 for Android Too, Use BOX64_LD_LIBRARY_PATH instead of LD_LIBRARY_PATH on CTEST by @KreitinnSoftware in #1754
- [EMU] [ARM64_DYNAREC] Fix Some Warnings on Clang Compilers by @KreitinnSoftware in #1757
- [RV64_DYNAREC] Fix some typos in docs and dynarec/rv64 by @wangguidong1999 in #1758
- Added preliminary Box32 support by @ptitSeb in #1760
- Revert "[ANDROID] Not use 'libbsd.so' as needed lib and don't define NEEDED_LIBS_234 for Android Too, Use BOX64_LD_LIBRARY_PATH instead of LD_LIBRARY_PATH on CTEST" by @KreitinnSoftware in #1762
- [CTEST] Use BOX64_LD_LIBRARY_PATH instead of default LD_LIBRARY_PATH by @KreitinnSoftware in #1764
- [RV64_DYNAREC] Added a fast path for some 8bit opcodes by @ksco in #1763
- [RV64_DYNAREC] Added a fast path for some 16bit opcodes by @ksco in #1765
- [BOX32][RV64_DYNAREC] Added preliminary box32 support to RV64 by @ksco in #1766
- [BOX3...
v0.3.0
What's Changed
- AVX and AVX2 implemented, along with BMI1, BMI2, ADX, FMA, F16C and RDANDR extension!
- Introduced BOX64_AVX env. var. to enable/disable AVX extension:
=> BOX64_AVX=1 enable AVX, BMI1, F16C and VAES extension
=> BOX64_AVX=2 also enable AVX2, BMI2, FMA, ADX,VPCLMULQDQ and RDRAND - Dynarec: Implemented most AVX/AVX2 and friends in ARM64 Dynarec (using only NEON, so available on all ARM64 CPU)
=> ARM64 Dynarec build have all AVX/AVX2 extensions enabled by default - Improved CPUID opcodes, adding a few leaf, fixing same. Returnning an Haswell type of CPU now (was Pentium IV before)
- Dynarec: Small optim in the emit_pf helper, on all 3 backends
- Dynarec: ARM64 some fixes to a few opcodes
- Dynarec: LA64 many new opcodes added, and fixes.
- Dynarec: RV64 some new opcodes added, many fixes.
- Dynarec: RV64 Adding some infrastructure to use RVV (if available) for SIMD emulation.
- Dynarec: Many small changes and fixes around handling of x87, registers and internal jump.
- WRAPPING: Added a workaround on SDL_GetThreadID to fix a race condition that was happening mostly on LA64 and broke many SDL games
- WRAPPING: More libs and functions wrapped. Some wrapping fixes too (including a nasty error on some rare libGL functions)
- WRAPPING: Wayland is now supported. Wine-wayland at least works now
- Dynarec: LA64 improved LOCK CMPXCHG handling, and better 16Byte LOCK handling too (fixes many Unity3D games)
- Dynarec: RV64 improved LOCK CMPXCHG handling
- COSIM: Many fixes and improvment, to make BOX64_DYNAREC_TEST more usable
- Detect when a Wine program use UnityPlayer.dll to atumaticaly use BOX64_DYNAREC_STRONGMEM=1 (unless it's already set), so more games just work
- ElfLoader: Added a new type of relocation
Contributions
- [DYNAREC] Simplified emit_pf helper by @ksco in #1518
- [LA64_DYNAREC] Fixed LOCK XCHG byte opcode fallback path by @ksco in #1519
- [LA64_DYNAREC] Fixed some non-lbt flags comutation issues by @ksco in #1520
- [LA64_DYNAREC] Fixed more issues here and there by @ksco in #1521
- Wrapped libpsl5 by @zohanzephyr in #1523
- [LA64_DYNAREC] Added more opcodes by @ksco in #1525
- [RV64_DYNAREC] Fixed LOCK XCHG byte opcode by @ksco in #1526
- [LA64_DYNAREC] Added CMPXCHG8B and CMPXCHG16B opcodes by @ksco in #1527
- [LA64_DYNAREC] Added more opcodes and some fixes too by @ksco in #1528
- Redirect pthread_yield to sched_yield by @ksco in #1529
- Workaround on a race condition on SDL_GetThreadID by @ksco in #1530
- Fix unclosed item list by @Coekjan in #1532
- Fix typo on box64 config file by @Coekjan in #1533
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1535
- Added more MMX opcodes and some optimizations too by @xctan in #1537
- Wrapped libssh2 by @zohanzephyr in #1538
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1539
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1542
- [LA64_DYNAREC] Fixed 0F C2 CMPPS opcode by @ksco in #1543
- [RV64_DYNAREC] Fixed LOCK CMPXCHG unaligned version by @ksco in #1544
- [LA64_DYNAREC] Added LOCK CMPXCHG unaligned version by @ksco in #1545
- Detects extensions even if dynarec is disabled at runtime by @ksco in #1546
- [INTERP] Rework on the 16b emulation for LA64 by @ksco in #1547
- [LA64_DYNAREC] Added more opcodes and fixed ADC opcode by @ksco in #1548
- [LA64_DYNAREC] Added more opcodes by @ksco in #1549
- Try to fix mmap64 already defined error in custommem.c by @rtissera in #1552
- [RV64_DYNAREC] Added more MMX opcodes and some optimizations too by @xctan in #1557
- [LA64_DYNAREC] Fixed emit_or16 by @ksco in #1559
- [LA64_DYNAREC] Added more opcodes by @ksco in #1558
- [LA64_DYNAREC] Fixed LOCK DEC opcode by @ksco in #1560
- Wrapped libp11-kit by @zohanzephyr in #1562
- Wrapped libtasn1-6 by @zohanzephyr in #1563
- [RV64_DYNAREC] Fixed some opcodes caught by cosim by @xctan in #1561
- Wrapped libnettle8 by @zohanzephyr in #1567
- [RV64_DYNAREC] Fixed sign extension of 8-bit immediate in 66 opcodes by @xctan in #1568
- Update README.md by @Pro42good in #1572
- Update README.md by @Pro42good in #1573
- Wrapped libunistring2 by @zohanzephyr in #1577
- Wrapped libhogweed6 by @zohanzephyr in #1579
- Added more wrapped function to libunistring2 by @zohanzephyr in #1582
- Fixed some vulkan wrapper functions by @ksco in #1585
- [DYNAREC_RV64] Fixed 16bit LOCK ADD issue by @ksco in #1584
- [LA64_DYNAREC] Added more opcodes by @ksco in #1590
- Fixed some symbols not found error for libc and libresolv wrapping by @ksco in #1591
- Added more wrapped functions by @zohanzephyr in #1593
- [RV64_DYNAREC] Fixed and refined F0 81,83 LOCK prefix opcodes by @ksco in #1595
- [LA64_DYNAREC] Added more opcodes by @ksco in #1597
- [RV64_DYNAREC] Improved 0F AE opcodes by @ksco in #1596
- Added more wrapped functions to gmp and idn2 by @zohanzephyr in #1598
- [RV64_DYNAREC] Fixed potential issue of jump_to_next by @ksco in #1600
- Update arm64_immenc.c by @salt431 in #1602
- switch to maintained Pi-Apps-Coders apt repo by @theofficialgman in #1605
- Add missing wrappings for winewayland.so by @strobo5 in #1599
- [RV64_DYNAREC] Added unaligned support for F0 /5 LOCK SUB opcode by @ksco in #1607
- Wrapped pthread_cond_signal with aligned cond like others by @ksco in #1608
- [RCFILE] Added Goat Simulator profile by @ksco in #1609
- [RV64_DYNAREC] Fixed regression on D9 E5 FXAM opcode by @ksco in #1616
- Compile Dynarec With ARMv8-A ASM Flags without Hardware Profile on Android Builds Too by @KreitinnSoftware in #1617
- small fix for ROR and ROL by @liuli0217 in #1618
- [RV64_DYNAREC] Detect vector extension by @ksco in #1619
- [RV64_DYNAREC] Added vector instructions emitter by @ksco in #1621
- Wrapped more functions by @ksco in #1624
- Wrapped libsqlite3 by @ksco in #1625
- Handle
.relr.dyn
section by @Coekjan in #1626 - Add missing func declaration:
get_first_jump_addr
by @Coekjan in #1627 - Updated box64.box64rc by @Pro42good in #1630
- [RV64_DYNAREC] Added DF default /4 opcode by @zohanzephyr in #1631
- [RV64_DYNAREC] modify DF default /4 opcode by @zohanzephyr in #1633
- [RV64_DYNAREC] Added preliminary RVV infra and PXOR opcode for demonstration by @ksco in #1632
- [LA64_DYNAREC] Fixed F2 0F 70 PSHUFLW opcode by @ksco in #1634
- Wrap some functions for libc by @Coekjan in #1635
- Impl
sys_getpgrp
&sys_getpgid
by @Coekjan in #1637 - [DYNAREC] Fixed IMUL sign extension issue by @ksco in #1639
- [VULKAN] Add Wrapped VK_KHR_android_surface by @KreitinnSoftware in #1643
- Should not follow symlinks on
argv[0]
path resolution by @Coekjan in #1644 - [INTERPRETER] Added 64 66 8D opcode and fix 66 8D opcode by @factfinding in #1648
- Set last_ip to an unclean state at the end of CALL by @ksco in #1650
- Mask
rs2
when usingbext
instruction ifrex.w
is not set by @Coekjan in #1653 - [LA64_DYNAREC] Added more opcodes by @ksco in #1654
- [LA64_DYNAREC] Added more opcodes by @ksco...
v0.2.8
What's Changed
=> Linux Games can now load even on a 16K pagesize machine like a mac M1, and games (including Unity3D ones) can be played with no issues.
=> Hack to enable Vulkan driver on Wine/WOW64 games to allocate 32bits compatible memory, allowing dxvk on 32bits games.
=> RiSC-V can run more linux games. Game on Wine are still a bit slow, and dxvk still have issues
=> Loongarch dynarec! Linux games are running, and with good speed, especialy on 3A6000 platforms. Games on Wine are not working yet due to 16k pagesize limitation
=> BIGBLOCK 2 and 3 combined with CALLRET can be used on more software now and can gives some good speed boosts.
- Wrapping: More libs and function wrapping (gtk3, vulkan...)
- Reworked X11 Callback handling, for better stability
- Reworked exit and the load/unload of libs and symbol resolution
- Some more profiles in box64rc
- Better way to rename executable (including wine ones) so driver like mesa can apply the correct profile
- Reworked memory managment in the Dynarec, limiting amount of dynamic allocation
- Improved memory tracking and managment. Also introduce BOX64_MMAP32 to force 32bits compatible mmap for external libs (like mesa)
- Reworked memory managment in the Dynarec, limiting amount of dynamic allocation
- Lots of improvments in x87 handling (virtual stack, rounding, ffree, etc.)
- Dynarec: ARM64 some opcodes optimisation, especialy shift and rotation ones
- Dynarec: RV64 lots of opcoded added. =>
- Dynarec: Added Loogarch backend! Note that Loongarch are 16K pagesize platform by default.
- Dynarec: Better handling of large block in the dynarec
- Dynarec: Lots of improvments and fixes to BOX86_DYNAREC_CALLRET optimisation.
More details in New release blog
Contributions
- [DYNAREC_RV64] Fixed some bugs in x87 infra by @ksco in #1143
- [DYNAREC_RV64] Added FILD/FISTP i64 optimization by @ksco in #1145
- [RCFILE] Added FL64 Profile by @mcagabe19 in #1149
- [WRAPPER] add dbus_message_iter_get_element_count auto wrapper by @liuli0217 in #1153
- [DYNAREC_RV64] Added more opcodes and fixes by @ksco in #1154
- [DYNAREC_RV64] Fixed some bugs in the dynarec for ETS2 by @ksco in #1155
- Cleanup some code by @xctan in #1157
- [DYNAREC_RV64] Added more opcodes for ets2 by @ksco in #1158
- [DYNAREC_RV64] Fixed shift masks for GI by @xctan in #1160
- [DYNAREC_RV64] Ported INT 3/29 from arm by @xctan in #1161
- [DYNAREC_RV64] Added more opcodes for ets2 by @ksco in #1162
- [INTERP] Added 64 66 39 CMP opcode (for #1156) by @ksco in #1166
- [DYNAREC_RV64] Added more opcodes for VMP-protected GI by @xctan in #1164
- [DYNAREC_RV64] Added more opcodes for VMP-protected GI by @xctan in #1168
- [RCFILE] Disable CALL/RET optimization for zoom (#1170) by @ksco in #1174
- [CMakelist] Remove a "#" by @Creeper-xie in #1173
- [WRAPPER] Added 4 more wrapped glib2 functions (for #1175) by @ksco in #1176
- [DYNAREC_RV64] Fixed a nasty bug in GETEX, but left optim opportunity for later by @ksco in #1178
- [MEMORY] Switched from a sparse array to a red-black tree by @rajdakin in #1180
- Remove FASTPAGE/HOTPAGE docs by @tristanmorgan in #1181
- [WRAPPERS] Add a
isSimpleWrapper
function for RV64 by @rajdakin in #1185 - [DYNAREC_RV64] Added CALL/RET optimization by @ksco in #1183
- expose minimal libxcb-xinput wrapper by @fbenkstein in #1192
- [DYNAREC_RV64] Fixed a wrong Zba optimization by @ksco in #1193
- [DYNAREC_RV64] Added more opcodes and fixed X87_PUSH/POP macros by @ksco in #1194
- [RV64_DYNAREC] Fixed 66 0F B6 MOVZX opcode by @xctan in #1196
- [RBTREE] Reverted memory tracking to 32 bits by @rajdakin in #1201
- [RV64_DYNAREC] Fixed 66 87 XCHG opcode by @xctan in #1198
- Fixes by @rajdakin in #1207
- [DYNAREC_RV64] Enable basic simple wrapper optimization by @ksco in #1215
- add optimize build flag for Jetson orin and xavier by @leonpano2006 in #1219
- Add 'BOX64_MMAP32' to help info by @KreitinnSoftware in #1220
- [WRAPPERS] Fixed some typos in rebuild_wrappers.py by @xctan in #1227
- [X64LIBS] mbedtls libs by @mcagabe19 in #1232
- system/box64.conf.cmake: change rule name to be box64 specific by @josch in #1233
- Added mknod syscall by @ksco in #1236
- When BOX64_VERSION is set, just print the version and exit by @josch in #1238
- [DOCS] Fix a typo in temrux building by @mcagabe19 in #1240
- [WRAPPER] Regenerated the wrapper files by @rajdakin in #1241
- [X64EMU] Fix for linux clang by @mcagabe19 in #1243
- [ANDROID] Fix GLib and GObject Library Names by @KreitinnSoftware in #1247
- [DYNAREC_RV64] f23 and f24 are save in a same place by @factfinding in #1251
- Wrapped libraries refactor by @rajdakin in #1257
- [ANDROID] BOX64_SHOWBT Now show Emulated BT on Android by @KreitinnSoftware in #1258
- more wrapped functions in libxcb-randr and libcap by @Coreforge in #1260
- [CI] Add Android Tests by @KreitinnSoftware in #1263
- [ANDROID] Fix Build When Compiling with NDK 26b, [CI] Download Basic Android Libs from 'termux-docker' and update NDK to 26b by @KreitinnSoftware in #1270
- [DYNAREC_RV64] Added more opcodes and some minor optimizations by @ksco in #1272
- [LIBTOOL] Fixed my_pthread_attr_init by @ksco in #1274
- [DYNAREC_RV64] Minor OF flag fixes and optimizations for emit shift utils by @ksco in #1275
- [RV64_DYNAREC] Added more opcodes by @ksco in #1276
- [RV64_DYNAREC] Added more opcodes by @ksco in #1277
- [RV64_DYNAREC] Added 2 more 66 0F opcodes for test17 by @ksco in #1278
- [RV64_DYNAREC] Added all missing 66 0F opcodes for test17 by @ksco in #1281
- [RV64_DYNAREC] Added missing 0F 38 00 PSHUFB opcode for test23 by @ksco in #1282
- [RV64_INTERP] Comply CMPXCHG16B with dynarec by @ksco in #1288
- [RV64_DYNAREC] Optimized XOR Ew, Gw when Ew == Gw by @xctan in #1289
- [RV64_DYNAREC] Fixed RDTSC handling by @ksco in #1291
- [CI] Repeat until-pass for unstable platform by @ksco in #1292
- [RV64_INTERP] Added TSC freq support by @ksco in #1293
- LARCH64 dynarec by @factfinding in #1295
- [LONGAARCH_DYNAREC] Added 00...05 and 28...2D opcodes by @factfinding in #1297
- [CI] Added loongarch64 by @ksco in #1298
- [LA64_DYNAREC] Added some LBT instructions by @ksco in #1299
- [LA64_DYNAREC] Removed F_OF2 trick as it's unnecessary by @ksco in #1300
- [LA64_DYNAREC] Added basic LBT support, setup xMASK by @ksco in #1302
- [LA64_DYNAREC] Added LBT support to all implemented emit functions and fixed some typos by @ksco in #1303
- [LA64_DYNAREC] Added more opcodes and fixed more things by @ksco in #1304
- [LA64_DYNAREC] Added 1 more opcode and more fixes by @ksco in #1305
- [LA64_DYNAREC] Added 70-7F Jcc opcodes, refine printer and some fixes too by @ksco in #1307
- [LA64_DYNAREC] Adopt to ARM64 way of CALL/RET optim since there is a dedicated register by @ksco in #1309
- [LA64_DYNAREC] Added more opcodes with CALL/RET optimization by @ksco in #1310
- [LA64_DYNAREC] Added CC native call support, fixed call_c by @ksco in #1312
- [LA64_DYNAREC] Added more opcodes by @ksco in #1313
- [LA64_DYNAREC] Added more and more opcodes by @ksco in #1314
- Added a warning on interpreter only bui...
v0.2.6
What's Changed
=> More hadware support, more functions wrapped for an improve compatibity
=> More CPU extension, with ARM64 hardware support when possible, and improved CALLRET optimisation for an improved speed of emulation
=> Some work also to reduce the memory footprint
- X64Libs: Updated libstdc++ & libgcc_s
- X64Libs: Use x86_64 version of libunwind (it's needed by wine)
- Dynarec: More opcodes on ARM64 & RV64
- Dynarec: Fixed some flags propagation issues inside blocks
- Dynarec: Improved Strong Memory Model emulation, introducing a 3rd level
- Dynarec: ARM64: reworked shift and bit opcodes flags handling
- Dynarec: RV64: Many fixes, making Wow64 apps running
- Dynarec: ARM64: Added support for SSE4.2 (with CRC32 if supported by CPU)
- Dynarec: ARM64: Added support for SHA (with hardware support if CPU allows it)
- Dynarec: ARM64: The CALLRET optimisation has been improved and is now default
- CPU: Remoworked how INT, priviliged opcodes and teh Trace flags works
- CPU: Added full support for SSE4.2
- CPU: Added full support for SHA extension
- ElfLoader: rework how elf memory is handled
- Emulation: Added some more syscalls
- Emulation: Better handling of Signal (also handling SIGMAX correctly)
- Emulation: Better support for POKEUSER/PEEKUSER (helps Windows Unity games)
- Wrapping: More libs and some fixes in function wrapping (gtk3, vulkan...)
- Wrapping: Removed faked libunwind wrapping
- Hardware: Added more profile, with support ADLink Ampere Altra, Qualcomm 8Gen3, and Pi5 machines
- OS: Added profile to build for Android and Termux.
- OS: New option to use mold for a high speed link
Contributions
- Update my_posix_spawnp() by @liuli0217 in #942
- [ARM64_DYNAREC] Added 0F F1/F3/F7 opcodes by @wannacu in #941
- Allow running at NULL, and trigger a segfault (backport from box86 5cdc1b9fa2238938e49176fcd937a1294c55a03d ) by @rafael2k in #948
- Added (66) 0F 2A/2C/2D opcodes by @wannacu in #951
- [ARM64_DYNAREC] Added some opcodes by @wannacu in #959
- [ANDROID] Try to create an Android build, porting box86 Android build by @ptitSeb in #962
- [ARM64_DYNAREC] Added some opcodes by @wannacu in #964
- Update README_CN.md by @shenmo7192 in #968
- [RV64_DYNAREC] Added thead vendor extension detection by @ksco in #969
- [DYNAREC_RV64] Added support for xtheadba by @ksco in #970
- [CI] Test RISCV with bit-manipulation extensions on by @ksco in #972
- [CI] Upgrade QEMU to 8.1.0 by @ksco in #973
- [RV64_DYNAREC] Added some support for XTheadBb extension by @ksco in #977
- Fixed a typo in README.md by @Jai-JAP in #983
- [CI] Use qemu snapshots from archlinux archive by @ksco in #987
- [CI] Run tests w/ and w/o DynaRec by @ksco in #988
- [RV64_DYNAREC] Added more support for XTheadBb extension by @ksco in #989
- Add SDL_RenderWindowToLogical and SDL_SetSurfaceColorMod wrapped functions for #939 by @seeschloss in #991
- [RV64_DYNAREC] Added more support for XTheadBs extension by @ksco in #993
- Update dynarec_arm64_emit_math.c by @liuli0217 in #994
- [RV64_DYNAREC] Added more support for XTheadMemPair extension by @ksco in #995
- [ANDROID] Remove PreInit Array Warning and Fix libdl name by @KreitinnSoftware in #1001
- Add mbrtoc32 wrapped function for dfhack (fixes a dfhack crash, see #939) by @seeschloss in #1003
- Add __sF, __assert2 Symbol and set PThread Symbols on libc by @KreitinnSoftware in #1004
- [ANDROID] Fix Most Library Names by @KreitinnSoftware in #1005
- Add c32rtomb wrapped function for dfhack (fixes console, part of issue #939) by @seeschloss in #1008
- Added Snapdragon 8 Gen 2 profile by @strongtz in #1009
- [ARM64_DYNAREC] Take dynarec64_DA into account by @AndreRH in #1014
- [RV64_DYNAREC] Fix a build warning by @ksco in #1020
- Add a new vulkan extension: VK_KHR_maintenance5 by @strongtz in #1021
- [WRAPPER] Added missing function signature by @ksco in #1024
- [DYNAREC] Fix x87cache issues by @ksco in #1025
- [CI] Do not regenerate functions list when running in CI by @ksco in #1028
- [COSIM] Fix x87 testing by @ksco in #1029
- fix emit_sar32c() ZF maybe set error. by @liuli0217 in #1034
- [INTERP] Fix fpu_round by @ksco in #1030
- [WRAPPER] Fixed my_mmap64 on MAP_FIXED handling, helps wine 8.18 by @ksco in #1039
- [DYNAREC_RV64] Fixed opcode DB /5 FLD tbyte (for #871) by @ksco in #1040
- [DYNAREC_RV64] Fixed x87 FCOMI opcodes (for #872) by @ksco in #1041
- [WRAPPER] Fixed my_execl by @wannacu in #1044
- [ELFLOADER] Fixed align issue (may help #1057) by @ksco in #1058
- [COSIM] Fix GO_TRACE by @ksco in #1059
- [RV64_DYNAREC] Added a few opcodes for minipad2.exe by @ksco in #1061
- [RV64_DYNAREC] [32BITS] Added more opcodes for minipad2.exe by @ksco in #1062
- ADLINK with Ampere by @joespeed in #1069
- Change blokc size to 64kb by @Raezroth in #1071
- [RV64_DYNAREC] Fixed zbb andn optimization by @ksco in #1074
- [RV64_DYNAREC] Added FD STD, fixed FC CLD and F3 A4 REP MOVSB (for minipad2) by @ksco in #1075
- [RV64_DYNAREC] Added 64 8F POP & 67 66 89 MOV opcodes (for minipad2.exe) by @ksco in #1076
- [DYNAREC_RV64] Fixed FCOMP opcode by @ksco in #1080
- [DYNAREC_RV64] Added more opcode for minipad2.exe by @ksco in #1081
- [DYNAREC_RV64] Fixed BTS BTR BTC for zbs extension by @ksco in #1084
- [CMAKE] Add WITH_MOLD option by @ksco in #1085
- [SIGNAL] Fixed copyUCTXreg2Emu by @ksco in #1086
- [DYNAREC_RV64] Fixed emit_ror32 by @ksco in #1087
- [ANDROID] Added missing wrappedandroidshmem def headers by @mcagabe19 in #1088
- [DOCS] Add mold usage to COMPILE.md by @kaixindeken in #1089
- [DYNAREC_RV64] Fixed BTS BTR BTC again by @ksco in #1090
- [ANDROID] Fix Compiling by @mcagabe19 in #1091
- [ANDROID] Use TERMUX Define Instead ANDROID by @mcagabe19 in #1093
- [WRAPPERS] Added fallback glXSwapIntervalEXT function if not present by @ksco in #1092
- [ANDROID] Fix Clang Compiling by @mcagabe19 in #1094
- [ANDROID]Fix Termux installation path by @Creeper-xie in #1095
- [DYNAREC_RV64] Added missing fallbacks in x87 opcodes by @ksco in #1096
- [DYNAREC][INTERPRETER] Rework on 6C/6D/6E/6F opcodes by @ksco in #1098
- [DYNAREC_RV64] Added more opcodes for flatout.exe by @ksco in #1099
- [DYNAREC_RV64] Added more opcodes for flatout.exe by @ksco in #1100
- Fix spelling in README.md by @JulianGro in #1101
- [DOCS] Termux Compiling by @mcagabe19 in #1102
- [TERMUX] Added faked wrapped termux-exec and simplified output by @mcagabe19 in #1103
- [TERMUX] Fix make install by @mcagabe19 in #1106
- [TERMUX] Fix debian packaging by @mcagabe19 in #1107
- [DOCS] Added missing library for #1108 by @mcagabe19 in #1109
- [TERMUX] Fix loading box64rc and lib x86_64-linux-gnu path on termux by @Creeper-xie in #1110
- [DOCS] Updated termux building instructions by @mcagabe19 in #1113
- [DYNAREC_RV64] Refine printer and add support for Zb* extensions by @ksco in #1115
- [DYNAREC_RV64] Added more dasm support for thead extensions by @ksco in #1118
- [DOCS] Updated TERMUX Building by @mcagabe19 in #1121
- [DYNAREC_RV64] Use a temporary solution to get things to work by @ksco in https...
v0.2.4
What's Changed
=> Dynarec now support RISC-V, large speedup on RISC-V 64, were games are now playable (like Stardew Valley on a Vision Five 2)
=> Improved compatibility with more fixes in elf handling, more wrapped libs and functiond, more fixed opcodes and refined profile
=> Support for 32bits process in Wine with experimental WOW64
- Added Dynarec for RISC-V
- Added partial 32 bits support (WoW64 works)
- Changed cpuid to display box64
- Fixed steam, again
- Improved hacked version for overridden malloc/free functions
- More wrapped libs
- More wrapped functions and syscalls
- Reduced memory footprint
- Added support for the BIND_NOW flags in ELF files
- Added RTLD_NOLOAD support
- Fixed some typos and general cleanup, again
- Added a cosimulation mode (to compare the behaviour of the dynarec with the interpreter)
- Added FASTNAN/FASTROUND handling for more opcodes
- Better float/double/long double handling
- Better dlopen/dlclose handling
- More games in the rc file
- Added BOX64_DYNAREC_MISSING to show only missing opcode, independantly of the log level
- Added BOX64_RESERVE_HIGH to reserve addresses above 47bits
- Improved multitreading support
- Ukrainian translation of the README
Contributions
- add -dnogit=1 flag to debian rules by @ryanfortner in #547
- Rv64 dynarec by @ptitSeb in #550
- [RV64_DYNAREC] Added 29 SUB opcode by @ksco in #553
- [RV64_DYNAREC] Added (81/83) SUB opcode by @ksco in #554
- [RV64_DYNAREC] Added 8B MOV opcode by @xctan in #555
- [RV64_DYNAREC] Fixed scratch register conflict for SUB by @ksco in #556
- [RV64_DYNAREC] Added 31 XOR opcode by @ksco in #560
- [RV64_DYNAREC] Small optimization for 31 XOR opcode by @ksco in #561
- [RV64_DYNAREC] Added C1 /7 SAR opcode by @xctan in #559
- [RV64_DYNAREC] many many more commit by @ksco & @xctan
- docs/COMPILE.md: Use trusted.gpg.d by @sevan in #620
- [RV64_DYNAREC] Fixed register name of float load/store in printer by @xctan in #621
- [RV64_DYNAREC] Added A5 REP MOVSD opcode by @ksco in #622
- [ARM64_DYNAREC] Fixed UFLAG_OP12 helper macro by @ksco in #623
- [RV64_DYNAREC] Fixed F7 /6 DIV opcode by @ksco in #624
- [RV64_DYNAREC] Added more opcodes by @ksco in #625
- Update README by @ksco in #626
- Latest batch of PKGBUILD updates by @Jai-JAP in #637
- [RV64_DYNAREC] Fixes and some optims by @ksco in #638
- fix some spelling mistakes by @josch in #640
- add manual page in pod format by @josch in #641
- Add wrapperhelper from box86 by @Jai-JAP in #657
- First pass toward a better wrapper helper by @rajdakin in #658
- CMakeLists: Allow installation without any config files by @fredldotme in #670
- add missing \ to debian rules by @ryanfortner in #681
- exclude libstdc++.so.5 in dh_shlibdeps by @amazingfate in #692
- [TESTS] Make test09 deterministic by @ksco in #698
- [WRAPPER] Fixed a libFLAC func wrapper (for #701) by @ksco in #702
- [WRAPPER] Fixed mpg123 wrapper by @ksco in #704
- [WRAPPER] Added more fontconfig wrapped functions by @ksco in #708
- [ELF] Fixed a use-after-free issue by @ksco in #709
- Fixed a broken link in README by @ksco in #713
- Added more gtk3 wrapped functions by @LiZhuoheng-coder in #720
- [WRAPPER] Fix my___vsnprintf_chk by @xctan in #722
- Added more gtk3 wrapped functions by @LiZhuoheng-coder in #727
- Added more gtk3 wrapped functions by @LiZhuoheng-coder in #731
- Added support for builtin type distinction (long/long long) by @rajdakin in #735
- Added some mpg123 wrapped functions by @ksco in #762
- Added link to Wine guide, fixed link to Chinese readme by @Ilya114 in #773
- [DYNAREC] Fix jump table not free on exit by @kaixindeken in #781
- [WRAPPER] Added 1 more symbol for libc (for #787) by @ksco in #788
- [WRAPPER] Fixed stack align on varargs (for #789) by @ksco in #790
- [WRAPPER] Added vwprintf (for #793) by @ksco in #794
- [WRAPPER] Added 4 more libc dprintf wrappers by @ksco in #798
- [WRAPPER] Added some wayland function wrappers by @ksco in #807
- [ARM64_DYNAREC] Fixed PUSH rsp when double pushing by @ksco in #821
- [DYNAREC] Fixed native_fprem by @ksco in #822
- [DYNAREC] Fixed call_c issues by @ksco in #823
- [DYNAREC_RV64] Fixed 9x SETcc opcodes by @ksco in #824
- [WRAPPER] Added some more libc wrappers by @ksco in #826
- [INTERPRETER] Added 66 0F 38 37 PCMPGTQ opcode by @ksco in #827
- [WRAPPER] Added more libicu wrapped functions (for #829) by @ksco in #831
- ryanfortner's package now has a different name by @mio-19 in #834
- [WRAPPER] Rework on libharfbuzz wrapper by @ksco in #836
- Reduce duplication of compile instructions by @xDoge26 in #837
- [WRAPPER] Added more symbols for openssl wrapper by @ksco in #847
- [WRAPPER] Added more gtk functions by @ksco in #849
- [32BITS] Use 32-bit types to compute 32-bit addresses. by @julliard in #851
- [INTERP] Added more opcodes by @ksco in #852
- [WRAPPER] Added more symbols for nss3 by @ksco in #853
- [32BITS][DYNAREC] Added basic 32 bits RV64 support by @ksco in #856
- A few cosmetic fixes by @julliard in #858
- [32BTIS][DYNAREC_RV64] Added support for 32bits by @ksco in #861
- [DYNAREC_RV64] Fixed A0 MOV AL,Ob by @ksco in #866
- [32BITS][RV64_DYNAREC] Hanlding of STll struct in FILD/FISTP by @ksco in #868
- [DYNAREC] Fix push rsp instruction by @julliard in #875
- A few Push/Pop fixes and cleanups by @julliard in #878
- [WRAPPER HELPER] Improve Record Parsing by @wannacu in #880
- Cleaner wrapper generator script by @rajdakin in #889
- Update package name in COMPILE.md by @ryanfortner in #894
- remove executable bits by @josch in #896
- add /usr/x86_64-linux-gnu/lib to the shared library search path by @josch in #901
- Use CMAKE_SYSTEM_PROCESSOR instead of CMAKE_HOST_SYSTEM_PROCESSOR by @josch in #902
- Ukrainian translate of README by @Ilya114 in #908
- Little fixes by @Ilya114 in #909
- [RV64_DYNAREC] Added more opcodes for Yuzu by @xctan in #911
- Add missing curly brackets by @AndreRH in #919
- Spelling fixes by @AndreRH in #920
- [ARM64_DYNAREC] Fixed BT/BTC/BTR/BTS opcodes by @wannacu in #922
- Add a new vulkan extension: VK_EXT_descriptor_buffer by @strongtz in #923
- [RV64_DYNAREC] Added movbe opcode by @wannacu in #926
- [ARM64_DYNAREC] Correct PF caculation by @wannacu in #928
- Added some opcode by @wannacu in #929
- [RV64_DYNAREC] Added E0/E1/E2/E3 opcodes by @wannacu in #934
- Fixed wild pointer error for my_context->elfs while calling my___libc_start_main by @kaixindeken in #937
- Added some opcodes by @wannacu in #936
New Contributors
v0.2.2
What's Changed
- Added a hacked version for overriden malloc/free functions, enabling libcef (and derivative) to work.
=> Steam Large mode and new BigPicture are working
=> Heroic Launcher is working - Added rcfile handling: box64 now read
/etc/box64.box64rc
and~/.box64rc
and apply per process parameters
=> Every program can be finetuned, for speed or just to make them work - Added BOX64_DYNAREC_CALLRET to optimized CALL/RET opcode using semi-direct native CALL/RET (get more than 10% speedup)
- Added BOX64_DYNAREC_FORWARD to allow bigger Dynarec block to be build (can get more then 30% of Speedup!)
- Improved memory protection tracking and signal handling, again
- Box64 now return a custom name for the CPU instal of P4, build with Box64 and the cpu name it's running on
- Simplified mutex handling (faster, cleaner)
- Reduce memory used by the memory tracking (memory almost divide by 4 is some critical use case)
- Added d3dadapter9 wrapping
=> gallium nine is now supported on box64 too - More wrapped libs (especially on the gtk familly)
- Improved/fixed some Syscall handling
- Refactored Strong Memory Model emulation (faster and more accurate)
- Added some more opcode to ARM64 Dynarec, and fixed some other
- Some fixes to flags handling in the Dynarec on some special cases
- Refactor library loading/unloading, with refcount.
- Some special cases fixes for dlopen (fixes deadcells, maybe others too)
- Improved mmap mapping, espcially with MAP_32BITS flag
- More wrapped functions and syscalls
- Lots of improvment in the Rounding of float & double (Dynarec and Interpretor), and proper handling of denormals when converting to/from 80 bits long double
- Added specific suppport for RK3588 board (needed some hack in signal handling, probably due to the use of a non mainlined kernel)
- More support on the RV64 port
- More support to build under musl environment
Contributions
- update debian changelog for 0.2.0 release by @ryanfortner in #474
- Add support for Rpi3 on 64-bit ARM (aarch64) by @neildavis in #494
- more swap for rpi3 by @colin-i in #499
- use sighandler_t instead of __sighandler_t so it compiles for musl by @stevenvandenbrandenstift in #500
- [BOX64RC] add EMULATED_LIBS for dontstarve_steam_x64 by @q4a in #502
- Update x64emu.c by @RainbowC0 in #507
- Changes for Alpine by @RainbowC0 in #508
- Fixed parameter order for BOX64_DYNAREC_HOTPAGE env parsing. by @tristanmorgan in #511
- D3dadapter9 support (Galliumnine) by @ptitSeb in #515
- wrapped: Wrap two more gsettings functions by @fredldotme in #518
- wrap _XAsyncErrorHandler by @alyssarosenzweig in #521
- [DYNAREC] Fix a couple of typos by @julliard in #526
- Steamwebhelper compatibility by @ptitSeb in #534
- [RISCV] Get pc from ucontext_t for RV64 by @ksco in #536
- [ARM64] Fixed a typo in arm64_lock_incif0 by @ksco in #543
- [DYNAREC] Simplify arm64 lock file by @ksco in #544
New Contributors
- @neildavis made their first contribution in #494
- @colin-i made their first contribution in #499
- @stevenvandenbrandenstift made their first contribution in #500
- @q4a made their first contribution in #502
- @RainbowC0 made their first contribution in #507
- @tristanmorgan made their first contribution in #511
- @alyssarosenzweig made their first contribution in #521
- @julliard made their first contribution in #526
- @ksco made their first contribution in #536
Full Changelog: v0.2.0...v0.2.2
v0.2.0
What's Changed
- Wrapped more vulkan function, dxvk 2.0 now works
- Added support for overriden malloc/free functions
- 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 Qt4/5 libs to load
- Improved Signal Handling and memory protection traking
- Some signature fixes to some wrapped functions (in libc)
- Added more syscalls
- Added a lot of new opcodes to the ARM64 Dynarec
- Highlights:
=> Lot's of new games stat working, to name a few: Surviving Mars, Piczle Cross Adventure (using Proton experimental), UT2004, Obduction, Machinarium, Silicon Zero, Hacknet, Absolute Drift, Art of Rally, Dota2
=> Some apps also runs now, like TeamSpeak 3 Client and Server or Discord
=> The bash integration is usefull for device with no binfmt integration or for script that check the machine it's running on
Contributions
- docs: add instructions for Debian-based Linux by @ryanfortner in #306
- Fix typos and arch type string by @archanox in #321
- Fix grammar by @Jai-JAP in #326
- Enable 64k page size by @martinmanyhats in #334
- Align address when call mprotect by @wannacu in #336
- Add wrapped functions needed for 'ls -l'. by @stiltr in #294
- add 18.04 tegra X1 github actions by @theofficialgman in #345
- change order of matrix (to preview better under checkmark dropdown by @theofficialgman in #346
- Backport SDL_DYNAPI_entry wrapper from box86. by @JohnnyonFlame in #374
- Add SW64 base support by @wannacu in #382
- fix overzealous replace in wrappers pathnames by @NobodyNada in #415
- Create X64WINE.md by @WheezyE in #423
- src: asm: Rename lr & fp registers to their x-equivalents by @fredldotme in #426
- Malloc override by @ptitSeb in #437
- Remove dynablocklist by @ptitSeb in #438
- Fix Pkgbuilds by @Jai-JAP in #452
New Contributors
- @archanox made their first contribution in #321
- @martinmanyhats made their first contribution in #334
- @stiltr made their first contribution in #294
- @theofficialgman made their first contribution in #345
- @JohnnyonFlame made their first contribution in #374
- @NobodyNada made their first contribution in #415
- @WheezyE made their first contribution in #423
- @fredldotme made their first contribution in #426
Full Changelog: v0.1.8...v0.2.0
v0.1.8
What's Changed
- Added an option to get generated -NAN on SSE2 operation
- Many small fixes and improvement to get SteamPlay (i.e. proton) working (along with box86)
- Added some workaround for program calling uname to mimic x86_64 system
- Added some granularity to mmap, and generic memory protection tracking improvment, to mimic x86 system (for wine stagging and proton)
- Better clone syscall and libc implementation
- Improved wrapping of GTK libs
- More wrapped libs (more gtk libs, like gstreamer-1.0 among other non-gtk libs too)
- More wrapped functions(with some tricky one, like dladdr1)
- Some fixes and improvment to some wrapped functions
- Refactor Dynarec:
- better handling of SSE/x87 registers
- optimisation to limit float/double conversion
- better handling of "internal" jump inside a dynablock
- make adding new architecture easier, by sharing as much infrastructure as possible
- Improved elfloader
- Improved some tests
- Improved a bit the "Hotpage" handling and messages
- Added more dynarec opcodes
- A few fixes in some Dynarec opcodes
- A bit more optimisation in some Dynarec opcodes
- Don't quit on unsupported syscall, return -1 / ENOSYS error
- Added some more Syscall
- Wrapped Vulkan library. Vulkan and dxvk now supported!
- Support building on PPC64LE (interpretor only)
- Added support for Risc-V (interpretor only)
Contributions
- Fix typo in release.yml [box86 -> box64] by @Jai-JAP in #168
- Fix some typos by @Moldytzu in #169
- Improve README by @ryanfortner in #176
- Add support for LX2160A based devices by @mikptz in #177
- [WIP] solves libssl problem related to Minecraft Bedrock Dedicated Server by @ohayoyogi in #192
- Fix the typo of CMakeLists.txt by @Seas0 in #201
- Sync configuration from box86 by @Seas0 in #204
- Add Debian packaging files by @ryanfortner in #214
- Correct package name in Debian changelog by @CalcProgrammer1 in #223
- ensure uc_link is properly initialized in getcontext(), fixes ppc64le by @classilla in #226
- Fixed the CVTPD2DQ dynarec opcode by @rajdakin in #235
- Fixed the backtrace wrapper by @rajdakin in #236
- Add initial RISCV support by @Alexmitter in #199
- Patch 1 by @Mzed3D in #243
- Add some function wrapper of libx11 by @wannacu in #253
- Added remaining __strto*_internal libc wrapped functions by @mhavu in #264
- Added some libfontconfig and libX11 wrappings by @mhavu in #267
- Fix grammar and spelling mistakes in COMPILE.md by @Radiicall in #268
- Update PKGBUILDS by @Jai-JAP in #270
- Added new wrappings for libx11 by @mhavu in #274
- Added wrapping for gtk_tree_view_column_set_cell_data_func() by @mhavu in #275
- Added wrapping for gtk_tree_selection_selected_foreach() by @mhavu in #276
- Added wrapping for g_object_weak_ref() by @mhavu in #277
- Fix pkgver in PKGBUILDS by @Jai-JAP in #281
New Contributors
- @Moldytzu made their first contribution in #169
- @ryanfortner made their first contribution in #176
- @mikptz made their first contribution in #177
- @ohayoyogi made their first contribution in #192
- @Seas0 made their first contribution in #201
- @CalcProgrammer1 made their first contribution in #223
- @classilla made their first contribution in #226
- @Alexmitter made their first contribution in #199
- @Mzed3D made their first contribution in #243
- @wannacu made their first contribution in #253
- @mhavu made their first contribution in #264
- @Radiicall made their first contribution in #268