Installation

For the foreseeable future, installation will require Linux in some form.

Update

Third party dependencies have been merged into the source tree as submodules! If you previously installed RPCSX when you needed spirv-cross, gslang, or xbyak, you should run:

git pull
git submodule update --recursive --remote

Install

We provide two installation methods:

Method 1: Linux

Install dependencies

  • .deb-based (Ubuntu etc.) Note: git is only needed for Ubuntu 22.04
sudo apt install build-essential cmake libunwind-dev libglfw3-dev libvulkan-dev vulkan-validationlayers-dev libsox-dev git libasound2-dev nasm g++-14

go to Continued Install.

  • .rpm-based (Fedora etc.)
sudo dnf install cmake libunwind-devel glfw-devel vulkan-devel vulkan-validation-layers-devel gcc-c++ gcc sox-devel alsa-lib-devel nasm

go to Continued Install.

  • Arch vulkan-devel is a group, and you should install all!
sudo pacman -S --needed libunwind glfw-x11 vulkan-devel sox git cmake alsa-lib nasm

go to Continued Install.

Continued Install

  1. Clone the repo.

     git clone --recursive https://github.com/RPCSX/rpcsx && cd rpcsx
     git submodule update --init --recursive
    
  2. Compile the emulator.

     cmake -B build && cmake --build build -j$(nproc)
    

Method 2: WSL

Install WSL Run Windows Powershell as Administrator:

wsl --install

Reboot your machine

Install Ubuntu: Run Windows Powershell

wsl --install -d Ubuntu

Setup user credentials

Configure Ubuntu and build RPCSX: Add the PPA repository that has the packages we need

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt upgrade

Install Ubuntu package dependencies

sudo apt install build-essential cmake libunwind-dev libglfw3-dev libvulkan-dev libsox-dev git libasound2-dev nasm g++-14

Install WSL specific package dependencies

sudo apt install pkgconf libasound2-plugins vainfo mesa-va-drivers

Add pcm.default pulse to the bottom of the .asoundrc file to configure audio

echo "pcm.default pulse" > ~/.asoundrc

Add ctl.default pulse to the bottom of the .asoundrc file to configure audio

echo "ctl.default pulse" >> ~/.asoundrc

Clone both Vulkan ExtensionLayer and RPCSX Git repositories

git clone --depth 1 https://github.com/KhronosGroup/Vulkan-ExtensionLayer.git
git clone --depth 1 --recursive https://github.com/RPCSX/rpcsx.git

Change directory and compile Vulkan ExtensionLayer

cd Vulkan-ExtensionLayer
cmake -B build -D UPDATE_DEPS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo cmake --build build --target install -j$(nproc)

Change directory back from Vulkan ExtensionLayer and to RPCSX then compile

cd ../rpcsx
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_INIT="-march=native" -DCMAKE_CXX_COMPILER=g++-14
cmake --build build -j$(nproc)
sudo cp build/bin/rpcsx /bin

Tell Ubuntu to set the VK_LAYER_PATH Environment variable

echo 'export VK_LAYER_PATH=/usr/local/share/vulkan/explicit_layer.d/:$VK_LAYER_PATH' >> ~/.profile

Tell Ubuntu to set the VK_INSTANCE_LAYERS Environment variable

echo 'export VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_shader_object' >> ~/.profile

Initalize and shutdown the Linux machine

sudo init 0

Wait a few minutes to let Linux shutdown. This will not turn off your PC only the virtual Ubuntu distro.

ArchWSL

TODO (under development)