The DRM-free version of the game available at GOG.com and on the GOG Galaxy client.
At 98% complete, you may notice, as I did, that the textures start disappearing. For example, you might not be able to see the fat bad guys with little wings that the devils picks up and aims at you. In the console, I see many errors from Cuphead that I am out of Video RAM. I'm not sure what's wrong as Cuphead is supposed to use only 512MB of Graphics RAM, but my machine has much more than that.
What does not
(All of the above have workarounds).
Create an AppDefaults override for Cuphead.exe to disable DirectX 11:
wine reg add 'HKEY_CURRENT_USER\Software\Wine\AppDefaults\Cuphead.exe\DllOverrides' /v 'd3d11' /t 'REG_SZ' /d '' /f
This will ensure that Cuphead falls back to DirectX 9.0c, which works great.
To play Cuphead with controllers instead of the keyboard, I used github.com/KoKuToru/koku-xinput-wine. This also adds SDL2's gamecontrollerdb support for recognizing and configuring different gamepads and joysticks. Note that koku-xinput did no seem to work for newer versions of Wine, for example wine-4.9.
Koku-xinput-wine is a little bit tricky to compile, but works flawlessly once installed. Personally, I copied mine into ~/.local/lib/koko-xinput-wine.so and then made a cuphead.sh script for wine:
cd ~/.wine/drive_c/GOG\ Games/Cuphead [ -r gamecontrollerdb.txt ] || cp ~/.local/share/gamecontrollerdb.txt LD_PRELOAD=~/.local/lib/koku-xinput-wine.so wine Cuphead.exe xrefresh
You probably don't need to copy gamecontrollerdb.txt. I did it because the absolute best controllers for a retro run-and-gun game like Cuphead are the SNES (Super Nintendo) controllers. I have my own homebuilt device to convert SNES to USB, so I had to have my own modified version of the gamecontrollerdb.txt.
I recommend the following gamepad mapping:
That mapping makes it more natural to hold down fire (right trigger) while jumping and dashing to dodge the bad guys.
One problem, with Wine 4.0.1, that did not exist in Wine 2.x is that when exiting Cuphead, the screen doesn't get refreshed. So it looks like Wine has frozen.
A workaround is to run xrefresh, immediately after wine. I do this in my cuphead script, see above.
What was not tested
If you don't want to hassle with the workarounds, use an older version of Wine.
The Wine 2.x series, for example, required only the koku-xinput kludge.
The framerate and freezing problems did not exist.
|Operating system||Test date||Wine version||Installs?||Runs?||Used|
|Show||Debian GNU/Linux 10.x "Buster" x86_64||Dec 15 2019||4.21-staging||Yes||Yes||Yes||Gold||B Wong|
|Show||Debian 9 (Stretch)||May 30 2019||4.9||Yes||Yes||Yes||Bronze||B Wong|
|Current||Debian 9 (Stretch)||Jun 09 2019||4.0.1||Yes||Yes||Yes||Gold||B Wong|
|Show||Debian 9 (Stretch)||May 30 2019||4.0.1||Yes||Yes||Yes||Garbage||B Wong|
|Show||Debian 9 (Stretch)||May 30 2019||3.0.5||Yes||Yes||Yes||Silver||B Wong|
Please when submit results add hardware specs like as: cpu - mount of ram - videocard and videocard driver used
Remember another versions different to vanilla wine or wine staging dont accepted by wine in submited results