Windows games

Wine allows you to play Windows games. Old and even recent games, 32-bit and 64-bit. Some open-source games are available in the free Batocera content store (from the EmulationStation menu, UPDATES & DOWNLOADSCONTENT DOWNLOADER)

The following links contain info about some games' compatibility with WINE:

It is also important to note that it is recommended to use btrfs or ext4 for /userdata/ as WINE explains on their FAQ that some games won't run on a non-Linux native file system. Steam games are notoriously known to be unusable under WINE.

  • /userdata/roms/windows : installed windows game (both 32 and 64 bits).
  • /userdata/roms/windows_installers : .iso, and setup.exe used to install games into /userdata/roms/windows

There are 2 types of formats for a Windows game installer:

  • CD-ROM images: An *.iso file created from a game on a CD-ROM
  • Executable Installers: A *.exe or *.msi file, that usually contains “setup” or “install” in the name (in some cases, other files may be bundled with them)

In both cases, those files need to be put into the /userdata/roms/windows_installers folder. Once this is done, refresh the gamelist in EmulationStation, then go into the “Windows” system, select “Install a new game”, and run the installer.

After a screen telling you the configuration is being made, the installer should open up, it'll look the same way it does inside Windows.

Proceed to install the game as you normally would, as for the installation path, leave it to the default: The virtual C:\ Drive will be located at /userdata/roms/windows/<game_name>.wine/drive_c.

Once the installation is done, head over to the /userdata/roms/windows/<game_name>.wine folder, and edit the autorun.cmd accordingly.

Example:

DIR=drive_c/Program Files/xmoto 0.6.1
CMD=xmoto.exe --fullscreen

or if you have some spaces in the name of the game

DIR=drive_c/Program Files (x86)/Ubisoft/Rayman Origins
CMD="Rayman Origins.exe"

This .wine folder is called the wineprefix.

Those games usually come as a game folder containing a *.exe file (or several) as well as other files and subfolders. They may also come as a *.zip file, if that is the case, unzip them first.

For those, there are two easy ways to handle them:

  • The EXE method: Just put the game folder into the /userdata/roms/windows, and refresh the gamelist in EmulationStation
  • The PC folder method (recommended): Rename the game folder as <game name>.pc (eg. Windlands.pc), put it into the /userdata/roms/windows, create a file named autorun.cmd directly into it, edit it so it points to the game executable.

Example:

If the *.exe of the game is directly in the .pc folder, and is called Windlands_Win_x64.exe, the autorun.cmd file should contain:

CMD=Windlands_Win_x64.exe

If the name of the executable contains specials characters or spaces however, be sure to put quotes around it, like so:

CMD="launch game.exe"

The first time you run the game, a .wine folder will be created at /userdata/saves/windows.

This .wine folder is called the wineprefix.

Installed games can be converted into two other formats: TGZ and SquashFS. Batocera requires changing the extensions to *.wtgz and *.wsquashfs respectively. This conversion is doable via the command line. For TGZ:

batocera-wine windows wine2winetgz xmoto.wine

or for SquashFS:

batocera-wine windows wine2squashfs xmoto.wine

TGZ and SquashFS files cannot be written too (they are read-only). To work around this:

  • When a TGZ is detected, it is fully unzipped to the saves directory and a copy is created
  • If a SquashFS is detected instead, Batocera will create a new directory in saves/windows/<game>/ which saves the difference in files between the read-only SquashFS and what the game writes to its directory during execution.

Ordinarily, Batocera would just let the game directly write data to the roms/windows/<game>.wine/ folder when it wants to.

To reiterate, you would want to use:

  • wtgz for small games that make large writes (at least proportionally) where it makes more sense to just quickly repackage the game in order to keep things portable
  • wsquashfs for larger games that make small writes (such as save files only) where it doesn't make sense to rapidly duplicate it, as that would take too long/wear down the storage hardware too quickly

This makes it easier to remove and restore a game, as it won't be modified with every launch. Remember to keep track of your save directory as well!

For debugging purposes, if you want to launch a windows game from SSH, use the following commands:

export DISPLAY=:0.0
batocera-wine windows play /userdata/roms/windows/Windlands.pc

Where /userdata/roms/windows/Windlands.pc is the path to your game

Recommended options for most games:

These options need AMD/NVIDIA/INTEL GPU with Vulkan support!

DXVK = TRUE
DXVK HUD = FALSE
ESYNC = TRUE
FSYNC = TRUE
PBA = FALSE
MF = AUTO
VIRTUAL DESKTOP = FALSE

* **DXVK** - converts the D3D (DirectX) calls from 9 to 12 in Vulkan.
* **DXVK HUD** - to see your FPS and version of Vulkan API and Driver.
* **ESYNC** - removes wineserver overhead for synchronization objects. This can increase performance for some games, especially ones that rely heavily on the CPU.
* **FSYNC** - improving frame rates and responsiveness with scheduling policies.
* **PBA** - implements a GL-free GPU heap allocator, vastly improving the speed of buffer maps.
* **MF** - install Media Fondation, that help somes games for run.
* **VIRTUAL DESKTOP** - is an option to define the resolution and a new dedicated window.

Some games require tricks to run. For example, Age of King requires directplay if you want to play on network (https://appdb.winehq.org/objectManager.php?sClass=version&iId=147). It can be installed automatically thanks to the tricks command.

export DISPLAY=:0.0
batocera-wine windows tricks /userdata/roms/windows/aok.wine directplay

You can find a list of WINEtricks commands and also read a bit more about winetricks and Batocera right here.

The other way to install dependencies inside a WINEprefix is by creating a folder in /userdata/system/wine/exe, and then putting the required executables inside, if you are on a 32-bits arch, install the 32-bits version, on a 64-bits arch, install both the 32 and 64 bits versions, for each one, a download SSH command will be given, the related licences for those is https://webpifeed.blob.core.windows.net/webpifeed/eula/aspnetcomponent_rtw_ENU.htm :

    • wget -P /userdata/system/wine/exe https://batocera.org/users/liberodark/wine/directx.7z && 7zr x /userdata/system/wine/exe/directx.7z -o/userdata/system/wine/exe && rm /userdata/system/wine/exe/directx.7z

Once you have put the required .exe for the game, you can launch the game, and the dependencies will install themselves silently, once you closed the game, you need to rename the /userdata/system/wine/exe folder into something else, otherwise batocera will try to reinstall them each time you start a game.

To apply specific registry values for a given game, you can create a folder in /userdata/system/wine/regs and put the registry files (.reg) inside. Once the game is launched, it'll import the values contained in this file. Once you closed the game, you need to rename the /userdata/system/wine/regs folder into something else, otherwise Batocera will try to re-apply those changes each time you start a game.

Very hard to troubleshoot what exactly is going wrong for games that are failing to run in WINE. First check that it's on the spreadsheet as confirmed working before continuing troubleshooting, it might just be “borked” and will never work no matter what you try. You could also check the WineHQ application database.

Next, try launching the game via SSH, as that will give you some output in regards to the error it's encountering. This could lead you to discovering which WINEtrick you might need to employ.

As above, but here you occasionally have more options. Check if the distributor/creator of the program offers a “portable” version, one that doesn't require writing files to the system directories and keeps everything self-contained. Some programs can be told to behave in a portable-like manner by having a portable.txt file present in their directory. Of course, for programs set up like this, you should not be using SquashFS as they require being able to write into their installed directory instead.

Sophisticated applications such as ones that require low-level access to hardware (such as drivers, patchers, kernels, complicated professional production software like compilers, etc.) may just not work due to the nature of WINE.

  • systems/windows.txt
  • Last modified: 2 weeks ago
  • by liberodark