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 build when DynaRec is available by @ksco in #1316
- [LA64_DYNAREC] Enable co-simulation and fixed an important issue by @ksco in #1317
- [LA64_DYNAREC] Added more opcodes and more fixes, SuperHexagon is working by @ksco in #1319
- [LA64_DYNAREC] Added more opcodes by @ksco in #1321
- [LA64_DYNAREC] Added more opcodes by @factfinding in #1322
- [WRAPPER] Fixed a typo in the signature of my___libc_start_main by @xctan in #1323
- [LA64_DYNAREC] Utilizing bitmanip instructions because they're great by @ksco in #1324
- [LA64] Detect the existence of LBT extension by @ksco in #1325
- [LA64_DYNAREC] Added more and more opcodes by @ksco in #1326
- [LA64_DYNAREC] Added more opcodes by @ksco in #1327
- [LA64_DYNAREC] Made eflags synchronization lazy by @ksco in #1329
- [LA64_DYNAREC] Added more opcodes and some fixes in the printer by @ksco in #1330
- [LA64_DYNAREC] Added more opcodes and some fixes too by @ksco in #1331
- [LA64_DYNAREC] Added more opcodes and more instructions in emitter and printer by @ksco in #1332
- Added 2 pthread wraps by @mcagabe19 in #1334
- [ARM64_DYNAREC] Fixed some typos by @ksco in #1336
- [RV64_DYNAREC] Added 66 0F 38 61 PCMPESTRI opcode and some refactors too by @ksco in #1337
- Fixed a warning by @ksco in #1335
- some gcrypt wrapping by @mcagabe19 in #1338
- [ARM] Added immediate encoding by @rajdakin in #1340
- [LA64_DYNAREC] Added C1 /4 and /6 opcodes and some fix by @factfinding in #1341
- [ARM64_DYNAREC] Fixed a falsy optimization on PSHUFHW by @ksco in #1344
- [DYNAREC] Made shift operations handle count==0 more uniformly by @ksco in #1345
- [DYNAREC] Revert some fasly changes to the shift opcodes by @ksco in #1346
- [LA64_DYNAREC] Added more opcodes by @ksco in #1354
- [LA64_DYNAREC] Added more opcodes and some fixes by @ksco in #1355
- [LA64_DYNAREC] Added more LBT instructions to the printer by @ksco in #1356
- Update GH-Actions workflows to remove Node.js deprecation warning. by @tristanmorgan in #1359
- [LA64_DYNAREC] Added some FP/LSX/LASX instructions to the emitter by @ksco in #1374
- [LA64_DYNAREC] Added CMOVcc opcodes and some fixes too by @ksco in #1375
- [REFACTOR] Refactor main.c by @Howard0o0 in #1362
- update clang-format for IFX and QUOTE by @f1yby in #1390
- [LA64_DYNAREC] Added basic SSE infra and 66 0F 6E MOVD opcode by @ksco in #1391
- Add BOX64_RCFILE variable by @olegos2 in #1392
- [LA64_DYNAREC] Fixed EBBACK by @ksco in #1399
- [LA64_DYNAREC] Added more SSE/SSE2 instructions by @ksco in #1400
- [RV64_DYNAREC] Fixed some issue with x87 stack managment (ported from ARM64) by @ksco in #1401
- Create libssl/libcrypto symlinks by @ksco in #1402
- Force the use of spaces in .clang-format by @ksco in #1406
- [RV64_DYNAREC] Add more opcodes by @LiZhuoheng-coder in #1405
- [RV64_DYNAREC] Add 1E/1F opcode by @LiZhuoheng-coder in #1407
- [RV64_DYNAREC] Added 0F 70 PSHUFW opcode by @ksco in #1408
- [LA64_DYNAREC] Added more SSE/SSE2 instructions by @factfinding in #1410
- [LA64_DYNAREC] Fixed SSE issues by @ksco in #1415
- [LA64_DYNAREC] Added more opcodes by @ksco in #1416
- [LA64_DYNAREC] Added more opcodes by @ksco in #1417
- [LA64_DYNAREC] Added more opcodes by @ksco in #1418
- [DYNAREC] Fixed REP opcodes for correct register state recovery by @ksco in #1420
- [LA64_DYNAREC] Fixed missing LBT path and more by @ksco in #1419
- [LA64_DYNAREC] Added more SSE/SSE2 instructions by @factfinding in #1421
- [LA64_DYNAREC] Added more opcodes by @ksco in #1422
- [LA64_DYNAREC] Added more opcode and fixes by @ksco in #1423
- [LA64_DYNAREC] Added more opcodes by @ksco in #1424
- [LA64_DYNAREC] Added more opcodes by @ksco in #1425
- [RV64_DYNAREC] Fixed various bugs in shift instructions by @xctan in #1426
- [LA64_DYNAREC] Fixed 0F A3 BT opcode by @ksco in #1427
- [LA64_DYNAREC] Refined MOV64 macros by @ksco in #1430
- Add Oxygen Not Included to box64rc by @sehraf in #1431
- [LA64_DYNAREC] Added more opcodes to the printer by @ksco in #1433
- [LA64_DYNAREC] Small fix on emit_or32c LBT path by @ksco in #1436
- [RV64_DYNAREC] Implementation of some CRC32 instructions by @kaixindeken in #1435
- [LA64_DYNAREC] Made the CALLRET optimization complete by @ksco in #1438
- [LA64_DYNAREC] Added more opcodes and fixed more issues by @ksco in #1439
- [RV64_DYNAREC] Fixed 66 C7 MOV opcode by @ksco in #1440
- [LA64_DYNAREC] Added more opcodes by @ksco in #1441
- [DYNAREC] Fixed shift xw macros by @ksco in #1443
- [LA64_DYNAREC] Added 1 more opcode and some fixes too by @ksco in #1444
- [LA64_DYNAREC] Added more opcodes by @ksco in #1447
- [RV64_DYNAREC] Added more opcodes by @LiZhuoheng-coder in #1451
- [DYNAREC] Fixed CF flag computation by @ksco in #1453
- Wrapped 1 more function for mpg123 by @ksco in #1454
- [RCFILE] Added Yandare Simulator Profile by @mcagabe19 in #1459
- [DYNAREC] Fixed emit_shift functions and more by @ksco in #1466
- [RCFILE] Update weixin profile by @ksco in #1467
- [LA64_DYNAREC] Added more opcodes by @ksco in #1468
- [LA64_DYNAREC] Added more useful extensions detection by @ksco in #1469
- [LA64_DYNAREC] Added more opcodes and fixes by @ksco in #1472
- [LA64_DYNAREC] Added more opcodes by @ksco in #1473
- Fixed my_prepare_thread in dynarec build by @ksco in #1474
- [RV64_DYNAREC] Fixed DIV and IDIV for zero divisor by @xctan in #1476
- [COSIM] Added thread-safe tests by @ksco in #1477
- [LA64_DYNAREC] Fixed dynarec infra by @ksco in #1479
- [LA64_DYNAREC] Added more opcodes by @ksco in #1480
- [LA64_DYNAREC] Added more opcodes by @ksco in #1481
- [LA64_DYNAREC] Added more opcodes by @ksco in #1482
- [RV64_DYNAREC] Added some missing fastnan handling by @ksco in #1483
- [RV64_DYNAREC] Remove useless code by @ksco in #1484
- [DYNAREC][32BITS] Fixed and improved 66 prefix opcodes by @ksco in #1485
- [LA64_DYNAREC] Added more opcodes by @ksco in #1486
- Added wrapping of libicuuc64 and libicui18n64 by @ksco in #1487
- [LA64_DYNAREC] Added more opcodes by @ksco in #1488
- [RV64_DYNAREC] Fixed OF flag computation by @ksco in #1489
- [LA64_DYNAREC] Added more opcodes by @ksco in #1490
- [LA64_DYNAREC] Added more opcodes by @ksco in #1491
- [DYNAREC] Small improvements to atomic functions by @ksco in #1492
- [DYNAREC_LA64] Added more opcodes by @ksco in #1496
- [RV64_DYNAREC] Fix SIGABRT handling in x87cache testing by @kaixindeken in #1498
- [LA64_DYNAREC] Added more opcodes by @ksco in #1503
- Added more symbols for libcrypto by @ksco in #1504
- [INTERPRETER] Fixed CMPXCHG16B opcode for la64 by @ksco in #1506
- [LA64_DYNAREC] Fixed LOCK ADD opcode by @ksco in #1507
- [LA64_DYNAREC] Fixed 66 0F 67 PACKUSWB opcode by @ksco in #1508
- [INTERPRETER] Added more opcodes and fixed some opcodes too by @ksco in #1511
- [ARM64_DYNAREC] Fixed PSLLD/PSLLQ opcodes by @ksco in #1512
- [RV64_DYNAREC] Fixed some MMX opcodes by @ksco in #1513
- [RV64] Made Zba and Xthead* detection mutually exclusive by @ksco in #1514
New Contributors
- @fbenkstein made their first contribution in #1192
- @leonpano2006 made their first contribution in #1219
- @factfinding made their first contribution in #1251
- @Coreforge made their first contribution in #1260
- @Howard0o0 made their first contribution in #1362
- @f1yby made their first contribution in #1390
- @olegos2 made their first contribution in #1392
- @sehraf made their first contribution in #1431
Full Changelog: v0.2.6...v0.2.8