Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 18:17
· 194 commits to main since this release

mtld3d now runs on an arm64 Wine. The bundle ships the unix library for both host architectures, wine/x86_64-unix/mtld3d.so and wine/aarch64-unix/mtld3d.so, and Wine loads the one matching its own build, so the same tree installs into either. Verified against an arm64 Wine rebundled from CrossOver with a 32-bit game: the end to end suite passes there, 154 tests across 18 binaries. The PE side is x86 either way, translated by Rosetta 2 under an x86_64 Wine and by FEX under an arm64 one.

The Direct3D DLLs are now built without BMI1, BMI2 and LZCNT. Those instructions abort module initialisation with an illegal instruction under an arm64 Wine, which surfaced in the game as ERROR #132 at startup. The ISA baseline is nehalem on 32-bit and x86-64-v2 on 64-bit.

The unix crash handler no longer terminates on memory faults raised outside mtld3d. It is installed process wide, and faults from elsewhere are now forwarded to the handler that owned the signal before it. Under an arm64 Wine the x86 translation faults as part of normal operation, so the previous behaviour killed the process on the first one. On x86_64 this also stops the handler swallowing guest faults that Wine translates into Windows exceptions for the game to handle.

Also in this release: crash reports from an arm64 build decode the faulting registers, and the debug archive carries symbols for both unix architectures.

Installing is unchanged, and covered in INSTALL.md inside the bundle.

Full changelog: v0.5.0...v0.6.0