CrossOver

From AppleGamingWiki, the wiki about gaming on M1 Apple silicon Macs

CrossOver is a proprietary Windows compatibility layer for macOS based on Wine made by developers CodeWeavers. CrossOver modifies Wine, adding compatibility patches, a user-friendly interface and technical support.

Availability

CrossOver is initially available with a 14-day trial. Remember to use the coupon code APPLEGAMINGWIKI for 25% off the cost of the purchase.

Then CrossOver can be purchased in two editions:

  • CrossOver + - which gives 12 months of upgrades and phone support with a discounted renewal price.
  • CrossOver Life - which gives lifetime access to all future versions and unlimited email and phone support.

Nightly builds are available for BetterTesters, CodeWeaver's beta testing program.

It is also possible to compile Wine games using other methods for free, for example PortingKit or Wineskin.

Game launchers

CrossOver is capable of running many Windows games installed via exe files (for example DRM-free installers downloaded from GOG.com). However the support for actual game library platforms is currently limited. These platforms are supported:

  • Steam
  • Ubisoft Connect

Epic Games Launcher

Legendary

  • Epic Games Launcher via Legendary : Epic games Launcher can be Installed via a command line tool called Legendary. This can be downloaded as a file from their GitHub Repository and can be added to path to invoke the CLI tool. Login to your Epic Games Account via legendary auth and use legendary list-games to view your library. After you install a game, add it to crossover via the "Run Command..." Option and navigating to /Users/<username>/legendary/<game folder> and locating the .exe file. The location may vary based on the game.

Heroic

Heroic is a GUI front-end for Legendary.
  1. Install Heroic Games Launcher macOS build
  2. Install CrossOver 21, created new Heroic Windows 7 x64 Bottle called Heroic
  3. Install dependencies into Heroic bottle:
    1. Microsoft Visual C++ 2010 (10.0) Redistributable (64 bit)
    2. Microsoft XML Parser (MSXML) 3.0
    3. DirectX for Modern Games
    4. Core Fonts
    5. Enable DXVK tick (Ctrl+click on Heroic bottle, go to Settings)
  4. Link the wine file within /Applications/CrossOver.app/Contents/SharedSupport/CrossOver/CrossOver-Hosted Application/wine
  5. In Heroic, 'Custom Wine/Proton Paths' and set Wine version to custom
  6. Blank out WinePrefix folder in Settings and within game settings
  7. Essential: Ctrl+click on Heroic bottle, rename to 'default' (this is due to hardcoded paths)

Origin

Download the CrossOver Origin install script.

  1. Create a new Windows 7 x64 bit bottle in CrossOver called 'Origin'
  2. Click Install a Windows Application and install Origin
  3. In the Origin installer set the path to the C:\Origin\ folder (do not press install yet)
  4. Download the script into the /Application Support/CrossOver/ folder
  5. Run the script by opening Terminal and navigating to /Application Support/CrossOver/ and starting the CrossOver_Origin.sh script
  6. Whilst the script is running, complete the Origin install
  7. This script must be re-run whenever Origin requires an update

Recommended settings

DirectX for Modern Games

This should be installed within the bottle for any DirectX 9 game.

DirectX 11

DirectX 11 support can be enabled by toggling DXVK.

Enable DXVK
  1. Click Bottles icon
  2. Ctrl + click Bottle
  3. Enable Settings - Enable DXVK Backend D3D11

Esync

Enable Esync
  1. Click Bottles icon
  2. Ctrl + click Bottle
  3. Enable Settings - Enable Performance Enhanced Synchronization (ESync)

Upgrading DXVK and MoltenVK

Stutters and performance can often be fixed by using a more up to date version of DXVK and MoltenVK than the one included in default CrossOver. This has a dramatic effect on many games including God of War (2018), The Witcher 3, Star Wars: Battlefront II. However, it can also cause instability in games like Battlefield 1. See this tutorial:

Upgrade MoltenVK[1]
Disclaimer: ADVANCED USRS ONLY - manually updating CrossOver comes at your own risk and may make it harder to get support from CodeWeavers** please see this thread on the CodeWeavers Forum.
IMPORTANT: As of 11th of April 2022, Gcenx has removed DXVK patches from his MoltenVK builds, a newly modified file for 1.1.9 is now hosted on PCGamingWiki.
  1. Visit the PCGamingWiki Files entry for MoltenVK 1.1.9 modified with DXVK patches for macOS 1.1.9.
  2. Download the latest macos_dxvk_patched-1.1.9.tar.xz (or later).
  3. In Finder, extract the folder.
  4. Copy libMoltenVK.dylib.
  5. In Finder, Ctrl+click on CrossOver and Show Package Contents.
  6. Navigate to /COntents/SharedSupport/CrossOver/lib64/.
  7. Rename your libMoltenVK.dylib and then paste your new libMolteVN.dylib
  8. Make sure to upgrade DXVK as well otherwise MoltenVK won't work.
Upgrade DXVK[2]
  1. In CrossOver, ensure your bottle has enabled DXVK (Ctrl+click on bottle and enable DXVK Backend for D3D11) - if you do not do this then the upgraded files will be overwritten.
  2. Visit Marzent's DXVK Github - this is a modified version of DXVK built for macOS.
  3. Download the latest dxvk-1.10-mac-async.tar.xz (or later).
  4. In Finder, extract the folder.
  5. Navigate to /dxvk-1.10-mac-async/x64/ and copy the contents.
  6. In Finder hold Alt and click Go, Library.
  7. Go into /Application Support/CrossOver/Bottles/Steam (or bottle name)/windows/system32/
  8. Paste and overwrite all files in this folder.
  9. Toggling DXVK Backend for D3D11 will re-overwrite the modified files with the original files.
Semaphore fix[3]
MoltenVK 1.1.7+ has disabled Semaphore, it should be re-enabled to dramatically improve performance in games.
  1. Navigate to: ~/Library/Application Support/CrossOver/Bottles/bottle/cxbottle.conf
  2. Open cxbottle.conf using TextEdit.

Add: [EnvironmentVariables] "MVK_ALLOW_METAL_FENCES" = "1"

Framerate tracking

Steam overlay

Steam overlay is part of Steam preferences and some games launches through Steam can display the game's framerate. However many games run through Steam do not necessarily correctly launch the Steam overlay.

DXVK HUD

  • Only works when DXVK is enabled and a DirectX 10 or 11 game is running.
  • Can cause graphical issues in some games, e.g. Dishonored 2.
  1. Navigate to ~/Library/Application Support/CrossOver/Bottles/<bottle name>
  2. Ctrl+click cxbottle.conf and open with TextEdit or another text editor
  3. At the bottom of the file add "DXVK_HUD"="devinfo,gpuload,memory,fps,frametimes" and save

Trdrop

It is possible to take raw footage and analyse using the application. Download It from here

Recommendations

Vsync is forced on macOS, so is best to disable vsync and framecap in-game. Practically every game benefits from disabling frame-limiting, making them much more fluid, but without tearing.

Codeweavers usually recommends to install different programs on different bottles, in order to avoid interference between such programs. This is because multiple pieces of software installed within a bottle can cause instabilty and unexpected crashes.

One the other hand, almost all games use the same dependencies, so your bottle becomes more compatible every time a game installs another dependencies.

32-bit Games

32-bit games run slowly, and will probably function better on Parallels. Wine 7.0 support will introduce much faster 32-bit support in CrossOver 22.

Unreal Engine 4

Unreal Engine 4 games often displays a black background, this is due to lack of geometry shader support.[4]

DirectX 12

DirectX 12 support may be available On CrossOver 23 For Mac.

Anti-cheat support

Anti-cheat support is not available using CrossOver, despite the fact that some exceptions have been made for Proton, a similar compatibility layer that functions on Linux operating systems.

References

  1. https://www.reddit.com/r/macgaming/comments/qt4e1b/you_can_run_the_latest_dxvk_with_crossover_on_mac/
  2. https://www.reddit.com/r/macgaming/comments/qt4e1b/you_can_run_the_latest_dxvk_with_crossover_on_mac/
  3. Verified by User:Andytizer on 2022-03-23
    From 'nas': Using MTLFence for VkSemaphore has issues of its own: https://github.com/KhronosGroup/MoltenVK/issues/796
    VkSemaphore is still emulated, but it uses software by default to try to "guess" the state of the semaphore, instead of the Metal API, when running under Rosetta or on NVIDIA. This is intentional. (it's for GPU synchronization) Basically, MTLFence doesn't map perfectly to VkSemaphore like MTLEvent. But it works most of the time, at least on macOS (I haven't had any issues with it yet), and the performance boost is significant. Here's why it is now disabled by default: https://github.com/KhronosGroup/MoltenVK/issues/1482#issuecomment-983853680 "On those platforms, we will fallback to CPU callbacks, under the premise that accuracy and consistency is important." "Platforms that have demonstrated issues with MTLEvent now include Rosetta2 on M1, and NVIDIA. On these platforms, apps that prefer to prioritize performance and screen tearing over accuracy and consistency, will be able to opt to use MTLFence by using the MVK_ALLOW_METAL_FENCES=1 environment variable or build setting."
  4. Unreal Engine 4 Games on Macbook pro m1… - last accessed on 2022-03-23