Skip to content

Releases: ptitSeb/box64

v0.3.0

09 Jul 09:06
Compare
Choose a tag to compare

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 using bext instruction if rex.w is not set by @Coekjan in #1653
  • [LA64_DYNAREC] Added more opcodes by @ksco in #1654
  • [LA64_DYNAREC] Added more opcodes by @ksco...
Read more

v0.2.8

21 May 15:47
Compare
Choose a tag to compare

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...
Read more

v0.2.6

15 Dec 18:33
Compare
Choose a tag to compare

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...
Read more

v0.2.4

19 Aug 15:28
Compare
Choose a tag to compare

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

Read more

v0.2.2

10 Mar 16:42
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.2.0...v0.2.2

v0.2.0

17 Nov 13:28
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.1.8...v0.2.0

v0.1.8

16 Apr 15:34
Compare
Choose a tag to compare

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

New Contributors

v0.1.6

19 Nov 21:22
Compare
Choose a tag to compare

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

New Contributors

v0.1.4

19 Nov 21:13
Compare
Choose a tag to compare

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 Contributors

v0.1.2

19 Nov 21:12
Compare
Choose a tag to compare
  • 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