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/MMX ops by @phorcys in #2543
- Merge
mmapmem
intomapallmem
by @devarajabc in #2550 - [RV64_DYNAREC] Added X87DOUBLE=2 support by @ksco in #2553
- [ENV][COSIM] Enable x87double only if it's off by @ksco in #2554
- [RV64_DYNAREC][TRACE][COSIM] Improve x87 fiability in dynarec trace and cosim scenario by @ksco in #2555
- [DYNAREC] More handling of low precision x87 flag change by @ksco in #2556
- [RV64_DYNAREC] Better handling of x87double=2 by @ksco in #2560
- [RBTREE] Cache boundary nodes and remove
add_range()
by @devarajabc in #2557 - [LA64_DYNAREC] Add SSSE3's mmx ops. by @phorcys in #2559
- [DYNAREC] Added a x87pc test and some cosmetic changes too by @ksco in #2561
- Fixed an edge case in
rb_unset
by @rajdakin in #2562 - Added some missing newlines by @ksco in #2567
- [ARM64_DYNAREC] Minor optim to MOVNTDQA by @ksco in #2568
- [DYNAREC] Added ranged Dynablock dump by @ksco in #2570
- [LA64_DYNAREC] Add POPCNT/TZCNT/LZCNT ops. by @phorcys in #2566
- [LA64_DYNAREC] Add/Opt more mmx/sse ops by @phorcys in #2565
- [RV64_DYNAREC] Fixed x87 cache swapping by @ksco in #2571
- [SIGNAL] Better signal logging when trace enabled by @ksco in #2572
- [RV64_DYNAREC] Minor adjustment to dynarec_missing=2 by @ksco in #2578
- Show Dynarec architecture in version string by @ksco in #2580
- [RV64_DYNAREC] Optimized rv64 printer for pseudo and jump instructions by @ksco in #2581
- [RV64_DYNAREC] Small optimization to LEA opcode by @ksco in #2582
- [RV64_DYNAREC] Minor optim to 8 bit TEST opcode by @ksco in #2583
- Fixed 02423c2 by @rajdakin in #2584
- Use
setProtection_mmap
inNewBrick
by @devarajabc in #2599 - Added a simple PE loaded dedicated for volatileMetadata by @ksco in #2607
- [NON4KPAGE] Fix AllocLoadElfMemory multiblocks wrong alignment (#2608) by @xiangzhai in #2609
- [DYNAREC] Use PE volatile metadata in dynarec by @ksco in #2610
- [ENV] Refactored file-mapping handling by @ksco in #2612
- [GDBJIT] Added a new option to register debuginfo only after trapped into signalhandler by @ksco in #2614
- [WOW64] Initial implementation patches by @AndreRH in #2619
- [DOCS] Include RV64 and LARCH64 DynaRec options by @devarajabc in #2621
- [Docs] Fix the format of Commit 816c4bd by @devarajabc in #2622
- [CI] Check WOW64 build in the CI by @ksco in #2623
- wow64 part2 (dont squash) by @AndreRH in #2624
- [RV64_DYNAREC] Added more mmx opcodes by @ksco in #2626
- [RV64_DYNAREC] Added more mmx opcodes by @ksco in #2627
- [RV64_DYNAREC] Added more mmx opcodes by @ksco in #2630
- [DOCS] improve consistency between documentation and code by @sehraf in #2631
- [RV64_DYNAREC] Added more mmx opcodes by @ksco in #2629
- [DOCS] Align usage.json and env.h by @ksco in #2633
- [RV64_DYNAREC] Fixed a typo introduced lately by @ksco in #2634
- [RV64_DYNAREC] Added and optimized some SSE/MMX opcodes by @ksco in #2635
- [DYNAREC] More minor changes to missing VEX prefixed opcodes by @ksco in #2636
- [RV64_DYNAREC] Added more opcodes for vector by @ksco in #2637
- [DYNAREC] Fixed alternate address testing when retrieving dynablock by @ksco in #2638
- [RV64_DYNAREC] Added F2 0F F0 LDDQU opcode for vector by @ksco in #2639
- [RV64_DYNAREC] Enabled native flags optimization for SETcc opcodes by @ksco in #2640
- wow64 part3 (dont squash) by @AndreRH in #2647
- [RV64] Improved vendor extension detection to avoid conflicts (for #2645) by @ksco in #2648
- [RV64_DYNAREC] Improved POPCNT and fixed some scratch conflicts by @ksco in #2651
- [RV64_DYNAREC] Fixed more potential scratch register conflicts by @ksco in #2652
- [DYNAREC] Removed unnecessary volatile metadata barriers by @ksco in #2653
- [RV64_DYNAREC] Implemented unaligned path for LOCK INC/DEC opcodes by @ksco in #2656
- Reprint env configs when special libraries detected by @ksco in #2657
- [RV64_DYNAREC] Fixed a typo in 66 F0 0F LOCK CMPXCHG opcode by @ksco in #2658
- [RV64_DYNAREC] Enable nativeflags optimization for more patterns by @ksco in #2659
- wow64 part4 (dont squash) by @AndreRH in #2660
- [CMAKE] Removed the hard dependency between dynarec and main executable to speed up build by @ksco in #2662
- Added -k option to kill all box64 instances by @ksco in #2661
- [RV64_DYNAREC] Optimized some opcodes with xtheadbb by @ksco in #2663
- [RV64_DYNAREC] Optimized CLZ macro with xtheadbb by @ksco in #2664
- [RV64_DYNAREC] Improved emit_pf with Zbb by @ksco in #2665
- wow64 part5(dont squash) by @AndreRH in #2667
- [RV64_DYNAREC] Minor nativeflags optim to LEA and CMOVcc opcodes by @ksco in #2669
- [RV64_DYNAREC] Improved ret_to_epilog with xtheadmemidx by @ksco in #2670
- [RV64_DYNAREC] Added more opcodes to printer by @ksco in #2671
- [CMAKE] Fixed dependency issues introduced recently by @ksco in #2673
- [RV64_DYNAREC] Removed useless zero-ups in some emit_* functions by @ksco in #2672
- wow64 final (dont squash) by @AndreRH in #2675
- [RV64_DYNAREC] Fixed regression introduced in #2669 by @ksco in #2676
- [DYNAREC] Fixed expected return address in bridged native call by @ksco in #2677
- [ARM64_DYNAREC] Fixed a warning by @ksco in #2678
- [WOW64] Supported logging to stdout by @ksco in #2679
- [ARM64_DYNAREC] Small optim to modreg CMPXCHG by @ksco in #2680
- [WOW64][ENV] Clean up a bit by @ksco in #2681
- [WOW64] Added more missing pieces and the interpreter works by @ksco in #2682
- [WOW64] Print banner at startup by @ksco in #2685
- fix: env BOX64_EMULATED_LIBS triggers sigsegv by @liuli0217 in #2686
- [WRAPPER] Implement myStackAlignGVariantNew for g_variant_new by @xiangzhai in #2687
- [WOW64] Added support for cosim by @ksco in #2683
- [DYNAREC] Ported 37ed49c to RV64 and LA64 by @ksco in #2690
- [DYNAREC] Fixed a prefix typo in dynarec dump by @ksco in #2693
- [WOW64] Improved RIP handling on INT n by @ksco in #2692
- [CI] Upload libwowbox64.dll to CI artifacts by @ksco in #2696
- [WRAPPER] Fixed some xcb-image wrappings by @ksco in #2697
- [WOW64] Override DOS stub to Wine builtin DLL by @ksco in #2698
- [RBTREE] Update comments on red-black tree usage by @devarajabc in #2694
- [WOW64] The name is WowBox64 by @ksco in #2699
- [ENV][WOW64] Not every env var applies to WowBox64 by @ksco in #2700
- [DOCS] Updated COMPILE.md about WowBox64 by @ksco in #2701
- [WOW64] More cleanups and implemented a few more BTCpu functions by @ksco in #2702
- [WOW64] Added rcfile support by @ksco in #2708
- [WOW64] The official file name is wowbox64.dll by @ksco in #2709
New Contributors
- @airidosas252 made their first contribution in #2434
- @FZXO11 made their first contribution in #2445
- @phorcys made their first contribution in #2489
- @kpyrkosz made their first contribution in #2501
- @cjy880927 made their first contribution in #2507
Full Changelog: v0.3.4...v0.3.6