Releases: ptitSeb/box64
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
v0.1.6
What's Changed
- Introduce "HotPage", to temporarily disable Dynarec on a page were writing is also occuring (can help speed up C# code)
- Some work on Dynarec to limit the number of mutex use, and also allow smaller block to be built (for JIT'd programs)
- Introduce BOX64_DYNAREC_STRONGMEM for the (Arm) dynarec to emulate StrngMemory Model (needed by some games, like RimWorld)
- More functions wrapped
- Improve speed of the custom allocator used by dynarec and Hash (speedup loading)
- Added a workaround for streamwebhelper to not load it
- More opcodes added
- More wrapped libraries, including gtk2
- Added a fix for linking box64 on system using glibc 2.34+
- Some residual fixes on thread attribute handling
- Better handling of app that want 32bits jumps, like unity3d/mono (thanks mogery)
- More ARM hardware option in CMake (Phytium, NX...)
- Added loongarch64 support (interpretor only)
- Some fixes to elfloader
- Added a mecanism to cancel a Dynarec block construction if it triggers a segfault (instead of a crash)
Contributions
- add loongarch cmake fix and chinese document by @shouhuanxiaoji in #117
- Fix small typo in README.md by @Jai-JAP in #118
- additional info for compilation document by @shouhuanxiaoji in #119
- Map bricks below first 2GB of address space by @mogery in #132
- Add Snapdragon 845 compilation by @Heasterian in #136
- Fixing typo by @Heasterian in #137
- Add alignment wrapper to pthread_getattr_np. by @mogery in #135
- Add a debug mode compilation with disabled compiler optimizations by @bbbruni in #147
- Minor changes to allow box64 to build and run on 64-bit PowerPC. by @eerykitty in #166
New Contributors
- @shouhuanxiaoji made their first contribution in #117
- @mogery made their first contribution in #132
- @bbbruni made their first contribution in #147
- @eerykitty made their first contribution in #166
v0.1.4
What's Changed
- Reworked README a bit
- Added some more wrapped libs
- Added some SSE4x opcodes
- Preliminary support for VSyscall (still missing VDSO)
- Added support for AES-NI cpu extension, also in Dynarec (and using ARM extension if present)
- Added some syscall
- Added some more wrapped functions
- Improvment to the handling of longjmp inside signal handlers
- Improved wrapper helpers (from rajdakin)
- Some fixes to opcodes (especially C2 flags for some x87 opcodes)
- Handling of some specific opcode as privileged instruction (instead of NOP)
- Fixed ELF signature detection
- Some fixes to a few env. var. handling
Contributions
- New Tegra X1 compilation target by @Heasterian in #16
- Fix broken link and a typo in Readme.md by @Jai-JAP in #19
- Fix missing CONFIG_64BIT kernel for older kernel by @Azkali in #35
- Update comment for binfmt conf by @Azkali in #36
- Moved documentation to "docs/" folder by @Jai-JAP in #49
- Create pkgbuilds in archlinux/ folder by @Jai-JAP in #68
- Rename archlinux/ to pkgbuilds/ by @Jai-JAP in #69
- Fixes by @rajdakin in #79
- Added syscall 82 (for #88) by @nniro in #89
New Contributors
v0.1.2
- OpenSource!
- A few more opcode added to the Interpretor and the Dynarec
- Improved Native Function calling
- Added some function to limit allocated memory to 47bits space (for Wine)
- Improved and Fixed the functions to limit allocated memory to 32bits space
- Wine is starting now, but not everything and every version works