Skip to content

Instantly share code, notes, and snippets.

@Siarkowy
Last active March 25, 2024 14:31
Show Gist options
  • Save Siarkowy/f834658f4903058992f4a1247ec0a6d6 to your computer and use it in GitHub Desktop.
Save Siarkowy/f834658f4903058992f4a1247ec0a6d6 to your computer and use it in GitHub Desktop.
Rocksmith 2014 on Steam Deck - installation script
#!/bin/bash
# Usage: ./rocksmith-install.sh
set -xeuo pipefail
STEAMLIBRARY="/home/deck/.local/share/Steam"
STEAMLIBRARY_GAME="/run/media/mmcblk0p1/SteamLibrary"
PROTON="$STEAMLIBRARY/steamapps/common/Proton 7.0/dist"
# PROTON="$STEAMLIBRARY/steamapps/common/Proton - Experimental/files"
# PROTON="$STEAMLIBRARY/compatibilitytools.d/GE-Proton7-50/files"
_deps() {
sudo steamos-readonly disable
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -S realtime-privileges wine-staging
}
_groups() {
# /etc persists between OS upgrades, this is optional
groups
sudo groupadd audio
sudo groupadd realtime
sudo usermod -aG audio $USER
sudo usermod -aG realtime $USER
}
_build() {
# change base-devel to only gcc & make (?)
sudo pacman -S base-devel glibc linux-headers linux-api-headers libtool binutils lib32-glibc
# drop pipewire for now (why is pipewire XOR with jack in Arch? who knows)
sudo pacman -S lib32-jack2 jack2
git clone --recursive https://github.com/wineasio/wineasio.git || true
pushd wineasio/
git pull
rm -rf build32/ build64/
make 32
make 64
popd
# :: lib32-pipewire-jack and lib32-jack2 are in conflict (lib32-jack). Remove lib32-jack2? [y/N] y
# :: pipewire-jack and jack2 are in conflict (jack). Remove jack2? [y/N] y
sudo pacman -S lib32-pipewire-jack pipewire-jack
}
_install() {
pushd wineasio/
sudo cp build32/wineasio.dll /usr/lib32/wine/i386-windows/wineasio.dll
sudo cp build32/wineasio.dll.so /usr/lib32/wine/i386-unix/wineasio.dll.so
sudo cp build64/wineasio.dll /usr/lib/wine/x86_64-windows/wineasio.dll
sudo cp build64/wineasio.dll.so /usr/lib/wine/x86_64-unix/wineasio.dll.so
cp build32/wineasio.dll "$PROTON/lib/wine/i386-windows/"
cp build32/wineasio.dll.so "$PROTON/lib/wine/i386-unix/"
cp build64/wineasio.dll "$PROTON/lib64/wine/x86_64-windows/"
cp build64/wineasio.dll.so "$PROTON/lib64/wine/x86_64-unix/"
popd
}
_register() {
WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll
WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio.dll
}
_run() {
echo >&2 "Use Proton script generated with PROTON_DUMP_DEBUG_COMMANDS=1 instead."
exit 1
# cd "$STEAMLIBRARY_GAME/steamapps/common/Rocksmith2014"
# export PIPEWIRE_LATENCY=256/48000
# export WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx
# exec "$PROTON/bin/wine" Rocksmith2014.exe
# PROTON_LOG=1 PROTON_DUMP_DEBUG_COMMANDS=1 PROTON_DEBUG_DIR=~/.rocksmith2014 %command%
# PIPEWIRE_LATENCY=256/48000 %command%
}
_reinstall() {
_deps
_build
_install
_register
}
for _action in "${@:-_reinstall}"; do
$_action
done
@NaMLiM
Copy link

NaMLiM commented Mar 13, 2024

is this script work with rs_asio?

@Siarkowy
Copy link
Author

Yeah, it was written for compatibility with rs_asio. However, since then I moved to Flatpak setup. You might have a look at https://github.com/Siarkowy/com.valvesoftware.Steam.CompatibilityTool.WineASIO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment