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
- [DYNAREC] Appended instruction name to symbol by @xiangzhai in #2228
- Document
BOX64_ARG0
argv[0] rewriting variable by @ValdikSS in #2234 - Fix crash with incorrect argv[0]: rewrite it only if "box64" is present by @ValdikSS in #2233
- [WRAPPED] Added xdr_string and xdr_free by @xiangzhai in #2235
- [WRAPPED] Added monstartup by @xiangzhai in #2241
- Port rounding of some x87 instructions from Box86 by @Hagb in #2242
- [RV64_DYNAREC] Fixed some typos by @xctan in #2244
- [RV64_DYNAREC] Fixed MOVMSKPS RVV 1.0 path by @ksco in #2246
- [SIGNAL][RV64] Added special unaligned cases handling by @ksco in #2248
- [RV64_DYNAREC] Disabled dynamic sew on MOVDQA as a workaround by @ksco in #2249
- [RV64_DYNAREC] Fixed a 16bit SHR pastpath edge case by @ksco in #2251
- [SIGNAL][RV64] Supported more opcodes for special cases by @ksco in #2253
- [CI] Create Box64 Packages for MiceWine (.rat) by @KreitinnSoftware in #2256
- [RV64_DYNAREC] Fixed SET_ELEMENT_WIDTH by @ksco in #2260
- [CORE] Simplified xhead* detection and standardized extension display by @ksco in #2261
- [RV64_DYNAREC] Fixed offsetof(x64emu_t, scratch) usage overflow ([LA64_DYNAREC] too) by @ksco in #2262
- [RV64_DYNAREC] Fixed stack out of sync in native call by @ksco in #2263
- [RV64_DYNAREC] Fixed simm12 overflow in some places ([LA64_DYNAREC] too) by @ksco in #2264
- [ARM64_DYNAREC] Removed an unused arg in SET_DFNONE by @ksco in #2266
- [RV64_DYNAREC] Optimized 16bit constant ROL opcodes by @ksco in #2267
- [RV64_DYNAREC] Optimized 16bit constant ROR opcodes by @ksco in #2268
- [RV64_DYNAREC] Optimized 16bit constant RCL/RCR opcodes by @ksco in #2270
- [RV64_DYNAREC] Refined printer for more thead instructions by @ksco in #2272
- [RCFILE] Add MiSide Profile by @KreitinnSoftware in #2276
- [ENV] Initial refactor of env variables infrastructure by @ksco in #2274
- [ENV] Optimized BOX64ENV log a bit by @ksco in #2277
- Changed some functions name and visibility by @ksco in #2278
- Added [BOX64] prefix for all the stdout logs by @ksco in #2279
- Fixed various issues introduced in the env infra refactor by @ksco in #2281
- [DOCS] Auto-generated USAGE.md and box64.pod by @ksco in #2283
- [RV64_DYNAREC] Added fastnan handling to more 0F opcodes (fixes CI) by @ksco in #2284
- [LA64_DYNAREC] Added fastnan handling to more 0F opcodes (fixes CI) by @ksco in #2285
- Clean up UnityPlayer.dll detection from my_mmap64 by @ksco in #2286
- [ENV] Fixed zydis initialization regression by @ksco in #2287
- [DYNAREC] Added preliminary per-file settings by @ksco in #2288
- [RV64_DYNAREC] Added codegen for unaligned stores by @xctan in #2289
- [RV64_DYNAREC] Restricted add/sub RSP optimization ([LA64_DYNAREC] too) by @ksco in #2292
- [RV64_DYNAREC] Force priv opcode flags to be at least defered if safeflags=2 ([LA64_DYNREC] too) by @ksco in #2293
- [RV64_DYNAREC] Removed some TABLE64 usage by @ksco in #2291
- [RV64_DYNAREC] Optimized GETIP by @ksco in #2294
- [RV64_DYNAREC] Added unaligned codegen for MOVSW by @xctan in #2296
- [ENV] Fixed the type of BOX64_DYNAREC_STRONGMEM by @xctan in #2298
- [RV64_DYNAREC] Fixed lui/auipc immediate in the printer by @xctan in #2299
- [CI] Fixed xuantie-qemu build by @ksco in #2306
- [ENV] Fixed crash when rcfile does not exist (for #2295) by @ksco in #2307
- [RV64_DYNAREC] Fixed F2 0F E6 opcode for vector by @ksco in #2310
- [ENV] More tweaks on recoding env mapping by @ksco in #2309
- Added auto-generated x64Int3 printer by @ksco in #2311
- [DOCS] Added per-file settings documentation by @ksco in #2317
- [LA64_DYNAREC] Added 64 88 MOV opcode by @ksco in #2318
- [DYNAREC] Optimized grab_segdata calls on MODREG by @ksco in #2319
- [RV64_DYNAREC] Small optim to 64 A1/A3 opcodes by @ksco in #2320
- [LA64_DYNAREC] Fixed F3 0F MOVSLDUP opcode by @ksco in #2321
- [LA64_DYNAREC] Added more 66 0F 38 opcodes by @ksco in #2322
- [LA64_DYNAREC] Added more opcodes by @ksco in #2323
- [LA64_DYNAREC] Added more opcodes by @ksco in #2324
- [ARM64_DYNAREC] Added more aligned optim cases for REP MOVSB by @ksco in #2326
- [RV64_DYNAREC] Added aligned optim case for REP MOVSB by @ksco in #2327
- [LA64_DYNAREC] Added more opcodes by @ksco in #2328
- [LA64_DYNAREC] Added more opcodes by @ksco in #2330
- [RV64_DYNAREC] Minor fixes and improvements on various opcodes by @ksco in #2331
- [ARM64_DYNAREC] Minor simplifications with the usage of GETEX by @ksco in #2332
- [LA64_DYNAREC] Added more opcodes by @ksco in #2333
- [LA64_DYNAREC] Fixed newly added 66 0F BA /4 BT opcode by @ksco in #2336
- [DYNAREC] Fixed diff logging prefix of pass2&3 by @ksco in #2337
- [LA64_DYNREC] Added more opcodes by @ksco in #2338
- [LA64_DYNAREC] Added more opcodes by @ksco in #2339
- [LA64_DYNAREC] Added preliminary optimization for REP MOVSB by @ksco in #2340
- [LA64_DYNAREC] Added F2 0F 7D HSUBPS opcode by @ksco in #2341
- [LA64_DYNAREC] Added F3 0F 52 RSQRTSS opcode by @ksco in #2343
- [ARM64_DYNAREC] Fixed wrong COUNT operand in VPSLL{W,D,Q} by @wannacu in #2344
- fix VPMASKMOV and VMASKMOVP by @ye-yeshun in #2342
- [RV64_DYNAREC] Minor fixes and improvements to TEST opcodes by @ksco in #2352
- [ARM64_DYNAREC] Added some BMI.0F38 opcodes by @wannacu in #2347
- [RV64_DYNAREC] Minor fixes and improvements to CMP opcodes by @ksco in #2353
- [RV64_DYNAREC] Minor optimization to CMOV opcodes by @ksco in #2354
- [RV64_DYNAREC] Added a fastpath to SHL/SHR CL opcodes by @ksco in #2355
- [RV64_DYNAREC] Fixed F3 0F 11,12 opcodes for vector by @ksco in #2356
- [COSIM] Print decoded instruction mnemonics if trace enabled by @ksco in #2357
- [ARM64_DYNAREC] Add some opcodes by @wannacu in #2358
- [BOX64RC] Add Zenless Zone Zero Config by @mcagabe19 in #2363
- [LA64_DYNAREC] Added more opcodes by @ksco in #2366
- [LA64_DYNAREC] Added more SSE4 opcodes by @ksco in #2370
- [LA64_DYNAREC] Minor optims and fixes to some opcodes by @ksco in #2371
- [ARM64_DYNAREC] Added more AVX opcodes by @wannacu in #2372
- [DYNAREC] Print decoded instruction mnemonics for missing opcodes if trace enabled by @ksco in #2373
- [LA64_DYNAREC] Added more opcodes by @ksco in #2374
- [INTERP] Added 66 0F 19 NOP opcode ([DYNAREC] too) by @ksco in #2375
- [INTERP] Added 0F 19 NOP opcode ([DYNAREC] too) by @ksco in #2376
- [INTERP] Added more nops ([DYNAREC] too) by @ksco in #2377
- [INTERP] Added more nops ([DYNAREC] too) by @ksco in #2378
- [BUNDLE] Add script to bundle x86 libraries by @LukeShortCloud in #2380
- [RV64_DYNAREC] Optimized unaligned path for REP MOVSB by @ksco in #2381
- [RV64_DYNAREC] Small changes to SET_DFNONE to make it safer ([LA64_DYNAREC] too) by @ksco in #2382
- Fixed dlsym_error logs prefix by @ksco in #2383
- [RV64_DYNAREC] Fixed a regression introduced recently ([LA64_DYNAREC] too) by @ksco in #2384
- [WRAPPER] Display Box64 version in Vulkan driver info by @xctan in #2385
- [CORE] Display Box64 version info in mangohud by @ksco in #2386
- [CORE] Rework on function hookMangoHud by @ksco in #2387
- [DYNAREC] Minor optimizations to SHL/SHR Ed, CL fastpath by @ksco in #2392
- [RCFILE] Added support for perfile dynarec dump by @ksco in #2393
- [ARM64_DYNAREC] Fixed a regression in LOCK XADD opcode by @ksco in #2394
- Made error logs prefix has red color by @ksco in #2396
- Made some tweaks to banner and help message by @ksco in #2397
- [RV64_DYNAREC] Added more MMX opcodes for vector and fixes too by @ksco in #2399
- [RV64_DYNAREC] Added more opcodes by @ksco in #2400
- Debian shlibdeps exclude fixes by @sigmaris in #2403
- [RV64_DYNAREC] Fixed swapCache scratch register usage by @ksco in #2405
- [RV64_DYNAREC] Fixed some minor typos by @ksco in #2406
- Fixed Box32 for Winlator Glibc by @alexvorxx in #2404
- [CORE] Limited some syscalls for Android build by @ksco in #2412
- [RCFILE] Fixed load addr parse issue by @ksco in #2413
- [RCFILE] Added range gdbjit support by @ksco in #2414
- [RV64_DYNAREC] Minor optimizations to sign mask extraction instructions for vector by @ksco in #2416
- [WRAPPER] add gnutls_fips140_set_mode by @liuli0217 in #2417
- Fix undefined reference to `epoll_pwait2' for LA64 ABI 1.0 by @xiangzhai in #2422
- [RV64_DYNAREC] Rollback some falsy optimization in the xtheadvector path by @ksco in #2426
- [RV64_DYNAREC] Optimized PMOVZX and PMOVSX opcodes for vector 1.0 by @ksco in #2430
New Contributors
- @DragonSWDev made their first contribution in #2195
- @4Darmygeometry made their first contribution in #2222
- @ValdikSS made their first contribution in #2234
- @Hagb made their first contribution in #2242
- @ye-yeshun made their first contribution in #2342
- @LukeShortCloud made their first contribution in #2380
- @sigmaris made their first contribution in #2403
- @alexvorxx made their first contribution in #2404
Full Changelog: v0.3.2...v0.3.4