github ptitSeb/box64 v0.4.0

6 days ago

What's Changed

This version added many important refactors: the opcode prefix decoder for Dynarec, libGL and Vulkan, the FSGSBASE support, making segments handling easier and faster.
=> Improved compatibility across all architecture, allowing more DRM protected game to run
=> the prefix refactor helped removed lots of redundant source file, simplifying maintenance
=> BOX32 is getting more and more stable, even if still not 100% ok. But Steam is more stable than before, runs on all architecture. And some gameoverlay UI works, on OpenGL games.

More details in New release blog

Contributions

  • Added preliminary unit test runner by @ksco in #3045
  • [LA64_DYNAREC] Fix SSE CMPPD, wrong reg operand for cUN cOR. by @phorcys in #3068
  • Bundle OpenSSL by @LukeShortCloud in #3069
  • [BUNDLE] Add libgcc by @LukeShortCloud in #3070
  • [TEST] Some minor fixes to the test runner by @ksco in #3072
  • [BOX32] Enlarged xcb connects size again for Linux Steam by @ksco in #3074
  • [WRAPPER] Fix no more slot for glib2 GSourceFunc callback by @xiangzhai in #3075
  • [ENV] Added a new BOX64_ARCH option by @ksco in #3076
  • [RCFILE] Added steamwebhelper entry for RISC-V by @ksco in #3077
  • [LA64_DYNAREC] Added x87 support by @ksco in #3078
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3079
  • [LA64] Fixed LBT signal handling, also refined la64noext support by @ksco in #3080
  • [LA64_DYNAREC] Added a few more opcodes by @ksco in #3081
  • [RV64_DYNAREC] Added DB /2 FIST opcode by @ksco in #3082
  • [DYNAREC] Fixed native_fprem/native_fprem1 (fixed the camera issue of FlatOut/FlatOut2) by @ksco in #3083
  • [LA64_DYNAREC] Added unaligned F0 81/83 /0,5 LOCK ADD/SUB opcodes by @ksco in #3084
  • [DYNAREC] Fixed getX64Address empty block handling by @ksco in #3085
  • [ENV] Introduced BOX64_PCLMULQDQ by @ksco in #3086
  • [RCFILE] Optimized Windows Steam download speed for LA64 and RV64 by @ksco in #3087
  • [TRACE] Fix flags output for better parsing by @ckrinitsin in #3090
  • [LA64_DYNAREC] Add more base ops. by @phorcys in #3091
  • [LA64] Fixed LBT signal handling for ABI 1.0 by @ksco in #3088
  • [LA64_DYNAREC] Add more 00 opcodes. by @phorcys in #3092
  • [WRAPPER] Add some wrappers for libm by @xiangzhai in #3094
  • [WRAPPER] Add wrapper for rintl by @xiangzhai in #3097
  • [LA64_DYNAREC] Add more ops. by @phorcys in #3096
  • [LA64_DYNAREC] Replaced the ADDSL macro from RV64 to ALSL_D by @ksco in #3098
  • [LA64_DYNAREC] Fixed a typo in last commit by @ksco in #3099
  • [LA64_DYNAREC] Add LOCK BTS/BTR. by @phorcys in #3093
  • [STEAM] Added docs and some tweaks for Linux Steam, also added a new env var for it by @ksco in #3101
  • [LA64_DYNAREC] Add more 64 opcodes. by @phorcys in #3100
  • [TEST] Added cputype option by @ksco in #3102
  • [LA64_DYNAREC] Add more opcodes for steam. by @phorcys in #3104
  • [TEST] Added flags checking by @ksco in #3105
  • [LA64_DYNAREC] Add ADX opcodes. by @phorcys in #3103
  • [RV64_DYNAREC] Refined SHL/SHR opcodes OF handling by @ksco in #3106
  • [RV64_DYNAREC] Refined ROL/ROR opcodes OF handling by @ksco in #3109
  • [LA64_DYNAREC] Add rol16/rol16c opcodes. by @phorcys in #3110
  • [RV64_DYNAREC] Refined SHLD/SHRD flags emulation by @ksco in #3111
  • [RV64_DYNAREC] Refined MUL/DIV flags emulation by @ksco in #3112
  • [RV64_DYNAREC] Refined LZCNT/TZCNT flags emulation by @ksco in #3113
  • [LA64_DYNAREC] Add macros help unaligned lock opcodes. by @phorcys in #3107
  • [RV64_DYNAREC] Refined BSF/BSR opcodes flags emulation by @ksco in #3114
  • [INTERP] Refined BSF/BSR ud value by @ksco in #3115
  • [INTERP] Refined UD behaviour of 16bit ROL/ROR opcodes by @ksco in #3116
  • [ARM64_DYNAREC] Refined UD behaviour of 16bit ROL/ROR opcodes by @ksco in #3117
  • [CMAKE] Fix typo by @Red54 in #3122
  • [BOX32][WRAPPER] Added a missing 32bits function to libc by @Azkali in #3124
  • [LA64_DYNAREC] Add more 32/64 bits arith lock opcodes. by @phorcys in #3118
  • [LA64_DYNAREC] Add rol8 opcodes. by @phorcys in #3120
  • [LA64_DYNAREC] Fix avx V{/P}GATHER{DD/DQ/DPD/DPS/QD/QPS}. by @phorcys in #3121
  • [LA64_DYNAREC] Add more 32/64 lock opcodes. by @phorcys in #3126
  • [RV64_DYNAREC] Refined more flags computation by @ksco in #3129
  • [DOCS] fix typos by @Red54 in #3131
  • [RV64_DYNAREC] Refined some more flags computation by @ksco in #3133
  • [RV64_DYNAREC] Small improvments on some invalid opcodes handling by @ksco in #3134
  • [LA64_DYNAREC] Opt rol with LBT insts. by @phorcys in #3130
  • [LA64_DYNAREC] Add 8bits lock op macros. by @phorcys in #3127
  • [ARM64_DYNAREC] Refined BSR/BSF undefined behaviour by @ksco in #3135
  • [RV64_DYNAREC] Refined BSR/BSF undefined behaviour by @ksco in #3136
  • [CORE] Print logs to stderr by default by @ksco in #3137
  • [LA64_DYNAREC] Update lock 32/64 macro. by @phorcys in #3139
  • [LA64_DYNAREC] Refined register names by @ksco in #3140
  • [LA64_DYNAREC] Refined BSF/BSR opcodes and fixed some typos by @ksco in #3141
  • [LA64_DYNAREC] Refined some more flags computation by @ksco in #3142
  • [DYNAREC] Fixed some safeflags testing code by @ksco in #3143
  • [LA64_DYNAREC] Refined more flags computation by @ksco in #3144
  • [LA64_DYNAREC] Refined more flags computation by @ksco in #3145
  • [LA64_DYNAREC] Fixed more regressions introduced in 14e3d05 and 44822bb by @ksco in #3147
  • [RCFILE] Removed some obsolete hacks on Linux Steam by @ksco in #3148
  • [LA64_DYNAREC] Refined more flags computation by @ksco in #3151
  • [RV64_DYNAREC] Fixed some minor issues for 16bit SHLD/SHRD opcodes by @ksco in #3150
  • [LA64_DYNAREC] Refined more flags computation by @ksco in #3152
  • [RV64_DYNAREC] Fixed some typos for nativeflags by @ksco in #3153
  • [INTERP] Refined BSF/BSR undefined behaviour by @ksco in #3154
  • [LA64_DYNAREC] Add 66 F0 0F B1 LOCK CMPXCHG Ew, Gw. by @phorcys in #3149
  • [LA64_DYNAREC] Refined more flags computation by @ksco in #3156
  • [LA64_DYNAREC] Add 66 8C MOV Ew, Seg. by @phorcys in #3155
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3158
  • [LA64_DYNAREC] Add 66 87 (LOCK) XCHG Ew, Gw. by @phorcys in #3157
  • Add block lookup cache to optimize findBlock() by @devarajabc in #3160
  • [LA64_DYNAREC] Added a few more opcodes by @ksco in #3161
  • [LA64] Optimized CRC chksum with native instructions by @ksco in #3163
  • [LA64] Fixed a typo in last PR by @ksco in #3164
  • [RV64_DYNAREC][LA64_DYNAREC] Fixed a wrong modreg test in nativeflags by @ksco in #3165
  • [CORE] Added back the logging prefix by @ksco in #3166
  • [TRACE][BOX32] Fixed a crash in nanosleep tracing by @ksco in #3167
  • [BOX32] Silence a false warning by @ksco in #3169
  • [BOX32] Implemented getdents syscall by @ksco in #3168
  • [Docs] Update outdated information in rbtree.h by @devarajabc in #3170
  • [RV64_DYNAREC] Added more lock opcodes by @ksco in #3171
  • [WRAPPER] Wrap libicu76 by @a9ix in #3172
  • [RV64_DYNAREC] Added a few more 16bit opcodes and some fixes too by @ksco in #3173
  • [LA64_DYNAREC] Optimized some emit functions by @ksco in #3174
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3175
  • [DOCS] Refined usage documentation with recent changes by @ksco in #3176
  • [WRAPPER] Wrapped 1 more glib2 function by @ksco in #3177
  • [LA64_DYNAREC] Fixed a regression introduced in 14e3d05 by @ksco in #3178
  • [INTERP] Fixed 67 prefix handling for LEA opcode by @ksco in #3179
  • [LA64_DYNAREC] Refined IMUL opcodes flags computation by @ksco in #3180
  • [WRAPPER] Wrapped 2 more symbols by @ksco in #3181
  • [LA64_DYNAREC] Fix incorrect stack alignment by @xiangzhai in #3183
  • [DYNAREC_PURGE] Decrement in_used before longjmp by @devarajabc in #3184
  • [LA64_DYNAREC] Fix avx V{P,}GATHER{DD,DPD,QPS,QD}. by @phorcys in #3185
  • [LA64_DYNAREC] Fix avx VAES{IMC,INC,INCLAST,DEC,DECLAST}. by @phorcys in #3186
  • [LA64_DYNAREC] Fix avx VCVTPH2PS,VCVTDQ2PD. by @phorcys in #3187
  • [BOX32] Slient some warnings on padding fields by @ksco in #3189
  • [LA64_DYNAREC] Fix 8-bit lock macros, Add F0 08 LOCK OR Eb, Gb. by @phorcys in #3188
  • Add support for NVIDIA GB10/DGX Spark platform by @leonpano2006 in #3191
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3194
  • [WRAPPER] Wrapped more symbols by @ksco in #3195
  • [CI] Removed os from the matrix by @ksco in #3196
  • [CMAKE] Fixed git_head dependencies by @ksco in #3197
  • Fixed a typo introduced in last block optimisation by @ksco in #3198
  • Implemented a few more libc syscalls by @ksco in #3199
  • [RCFILE] Updated an obsolete steam option by @ksco in #3201
  • Fixed my___tls_get_addr by @ksco in #3202
  • [RCFILE] Added a new option BOX64_STEAM_VULKAN by @ksco in #3203
  • [CMAKE] Fixed a typo by @ksco in #3204
  • [CMake] Fix typo 'Snapragon' by @docgalaxyblock in #3205
  • Reverted some commits by @ksco in #3206
  • Small optimization to steam_vulkan hack by @ksco in #3207
  • [WRAPPER] Fixed a regression in myStackAlignGVariantNew by @ksco in #3208
  • [RCFILE] Disabled libcef detection by default by @ksco in #3209
  • [STEAM] Enabled x86_64 python workaround only for Arm by @ksco in #3211
  • [RV64_DYNAREC] Fixed some scratch register conflictions, [LA64_DYNAREC] too by @ksco in #3213
  • [LA64_DYNAREC] Some small fixes. by @phorcys in #3212
  • [LA64_DYNAREC] Added a few more 66 opcodes by @ksco in #3214
  • [SYSCALL] Added io_uring syscalls by @ksco in #3215
  • [RCFILE] Added discord profile by @ksco in #3216
  • [WRAPPER] Re-wrapped libtasn1 by @ksco in #3217
  • [LA64_DYNAREC] Added an unaligned path to 16bit XCHG opcode by @ksco in #3218
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3219
  • [WRAPPER][LA64] Added basic simple wrapper support by @ksco in #3221
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3223
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3224
  • [CORE] Slightly better help message by @ksco in #3225
  • [LA64_DYNAREC] Fixed an incomplete macro by @ksco in #3226
  • [LA64_DYNAREC] Enabled native flags optimization for SETcc opcodes by @ksco in #3229
  • [LA64_DYNAREC] Enable nativeflags optimization for more patterns by @ksco in #3230
  • Reimplement my32_mkstemps64 by @Buggem in #3231
  • [INTERP][DYNAREC] Added F3 0F 4X CMOVcc opcodes by @ksco in #3232
  • [LA64_DYNAREC] Added more opcodes by @ksco in #3233
  • [BOX32] Wrapped more symbols for libc by @ksco in #3234
  • [WRAPPER] Silent garbage dlerrors when nogtk is used by @ksco in #3236
  • [BOX32] Fixed some inplace shrink/enlarge functions for libxrandr by @ksco in #3239
  • [ARM_DYNAREC] Fixed a regression introduced in commit c64a431 by @ksco in #3241
  • Add lookup cache for customMalloc by @devarajabc in #3244
  • [RV64_DYNAREC] Better handling for invalid lock opcodes by @ksco in #3246
  • [LA64_DYNAREC] Refactored opcode prefix decoding by @ksco in #3247
  • [RCFILE] Refined BOX64_STEAM_VULKAN to support more cases by @ksco in #3248
  • [DYNAREC_PURGE] Tick-Based Cache Purge System by @devarajabc in #3249
  • [LA64_DYNAREC] Opt REP STOSB for withcher3. by @phorcys in #3250
  • [INTERP] Small fix to F0 0F B1 CMPXCHG opcode by @ksco in #3251
  • [LA64_DYNAREC] Fixed a regression in IMUL opcodes flags computation by @ksco in #3252
  • [LA64_DYNAREC] Added more push/pop opcodes by @ksco in #3254
  • [LA64_DYNAREC] Refined prefetch opcodes by @ksco in #3255
  • [DOCS] Add BOX64_DYNAREC_PURGE_AGE documentation by @devarajabc in #3253
  • [ARM64_DYNAREC] Refined CLFLUSH family opcodes by @ksco in #3257
  • [WRAPPER] Wrapped 1 more vulkan extension by @ksco in #3258
  • [LA64_DYNAREC] Refined CLFLUSH family opcodes ([RV64_DYNAREC] too) by @ksco in #3259
  • [INTERP] Refined CLFLUSH family opcodes by @ksco in #3260
  • [WRAPPER] Added 1 more extension to libGL by @ksco in #3261
  • [LA64_DYNAREC] Fixed 1 more UD behaviour ([RV64_DYNAREC] too) by @ksco in #3262
  • [LA64_DYNAREC] Refined more flags computation for LBT path by @ksco in #3263
  • [DYNAREC] Fixed uninitlized lock flag for 16-bit opcodes by @ksco in #3264
  • [LA64_DYNAREC] Fixed 1 more regression intoduced by the prefix refactor by @ksco in #3265
  • [CORE] Removed BOX64_ARG0 env var after use, fixed Heroic with Proton on LoongArch by @ksco in #3266
  • [CPUID] Refined the CPU branding display by @ksco in #3267
  • [Box32] Check allocation end address by @devarajabc in #3268
  • [WRAPPER] Added 2 more listeners to waylandclient for wine-wayland and HDR support by @ksco in #3269
  • [WRAPPER] Reworked libxkbcommon wrapping, added a few new symbols too by @ksco in #3270
  • [CI] Added nocosim label to longjumpInSignals test by @ksco in #3271
  • [LA64_DYNAREC] Small improvements to strongmem emulation by @ksco in #3272
  • [LA64_DYNAREC] Some improvements to safeflags=2, more to expect by @ksco in #3273
  • [SYSCALL] Added 1 more syscall epoll_pwait2 by @ksco in #3276
  • [LA64_DYNAREC] Ported the BARRIER_FLOAT refactor from Arm64 by @ksco in #3278
  • [LA64_DYNAREC] Add F0 FE /{0,1} LOCK {INC,DEC} Eb. by @phorcys in #3279
  • [RCFILE] Added a new option BOX64_PROFILE by @ksco in #3280
  • [RV64_DYNAREC] Refactored opcode prefix decoding by @ksco in #3282
  • [BOX64][INTERP] Fixed idiv boundary tests by @luoqiaoling in #3283
  • [LA64_DYNAREC] Fixed a potential issue of the ADDxREGy macro ([RV64_DYNAREC] too) by @ksco in #3284
  • [DYNACHCHE] correct dynacache typo by @luoqiaoling in #3286
  • [LA64_DYNAREC] Fixed various typos ([RV64_DYNAREC] too) by @ksco in #3287
  • [LA64_DYNAREC] Refacfored the handling of deferred flags by @ksco in #3288
  • [ENV] Fixed race condition of init/uninit of rolling logs by @ksco in #3289
  • [WRAPPER] Wrapped more symbols for libfreetype by @ksco in #3290
  • [LA64_DYNAREC] Fixed some minor typos of SQRTSD and XCHG opcodes by @ksco in #3291
  • [BOX64] Fixed my_box64signalhandler, convert native signal to x64 by @luoqiaoling in #3292
  • [LA64_DYNAREC] Fixed a regression in emit_sub32c by @ksco in #3294
  • [WRAPPER] Wrapped 1 more glib2 symbol by @ksco in #3296
  • [WRAPPER] Wrapped more gtk3 and related symbols by @ksco in #3295
  • [CORE] Refined tracing file header info by @ksco in #3298
  • [LA64_DYNAREC] Optimized RCR opcodes by @ksco in #3299
  • [RCFILE][LA64] Added Risk of Rain 2 profile by @ksco in #3300
  • [LA64_DYNAREC] Small improvments to ALSL printer by @ksco in #3303
  • More wrapped symbols for SDL2 by @Neltharion01 in #3297
  • Make sure managed memory blocks are always aligned to 16 bytes by @ksco in #3305
  • [WRAPPER][BOX32] Minor fix and improvement to XGetICValues by @ksco in #3306
  • Fix a lot of GCC warnings by @rajdakin in #3309
  • [LA64_DYNAREC] Some refactor and cleanups on rotate opcodes by @ksco in #3310
  • [RCFILE] Removed some obsolete env. var. by @ksco in #3311
  • [RCFILE] A small improvement for Battle.net client by @ksco in #3312
  • [RCFILE] Added a profile for StarCraft II by @ksco in #3313
  • [LA64_DYNAREC] Added some missing SM=2 store hints by @ksco in #3314
  • [RCFILE] Enable callret for gb6 by @ksco in #3315
  • [LA64_DYNAREC] Refined rcr8/16 /imm opcodes by @ksco in #3316
  • [LA64_DYNAREC] Micro-optimization for emit_shr32c by @ksco in #3317
  • [LA64_DYNAREC] Micro-optimization for emit_test32c by @ksco in #3318
  • [STEAM] Minor refactoring by @Buggem in #3320
  • [CMAKE] Fixed an uninstall script warning by @ksco in #3323
  • [LA64_DYNAREC] Refined RCL8/16/32/64 /imm opcodes by @ksco in #3324
  • Fixed non-dynarec build on dynarec available platforms by @ksco in #3325
  • [LA64_DYNAREC] Small fix to geted and micro-optimization to LEA opcode by @ksco in #3326
  • [LA64_DYNAREC] Refined more rotate opcodes flags computation by @ksco in #3327
  • [RCFILE] Added a profile for Total War: Three Kingdoms by @ksco in #3328
  • [BOX32][WRAPPER] Fixed XPeekIfEvent wrapping by @ksco in #3329

New Contributors

Full Changelog: v0.3.8...v0.4.0

Don't miss a new box64 release

NewReleases is sending notifications on new releases.