diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8cf5efbf0..ffe7c22fb 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,7 +3,16 @@
name: Build and Release
-on: [push, pull_request]
+on:
+ push:
+ paths-ignore:
+ - "documents/**"
+ - "**/*.md"
+
+ pull_request:
+ paths-ignore:
+ - "documents/**"
+ - "**/*.md"
concurrency:
group: ci-${{ github.event_name }}-${{ github.ref }}
diff --git a/.gitmodules b/.gitmodules
index 82c40f4f9..e54658932 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,10 +2,6 @@
path = externals/zlib-ng
url = https://github.com/shadps4-emu/ext-zlib-ng.git
shallow = true
-[submodule "externals/sdl3"]
- path = externals/sdl3
- url = https://github.com/shadps4-emu/ext-SDL.git
- shallow = true
[submodule "externals/fmt"]
path = externals/fmt
url = https://github.com/shadps4-emu/ext-fmt.git
@@ -123,7 +119,10 @@
[submodule "externals/aacdec/fdk-aac"]
path = externals/aacdec/fdk-aac
url = https://android.googlesource.com/platform/external/aac
-[submodule "externals/ext-CLI11"]
- path = externals/ext-CLI11
- url = https://github.com/shadexternals/ext-CLI11.git
- branch = main
+[submodule "externals/CLI11"]
+ path = externals/CLI11
+ url = https://github.com/shadexternals/CLI11.git
+[submodule "externals/sdl3"]
+ path = externals/sdl3
+ url = https://github.com/shadexternals/sdl3.git
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b1f725745..a091539e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -202,7 +202,7 @@ execute_process(
# Set Version
set(EMULATOR_VERSION_MAJOR "0")
-set(EMULATOR_VERSION_MINOR "13")
+set(EMULATOR_VERSION_MINOR "14")
set(EMULATOR_VERSION_PATCH "1")
set_source_files_properties(src/shadps4.rc PROPERTIES COMPILE_DEFINITIONS "EMULATOR_VERSION_MAJOR=${EMULATOR_VERSION_MAJOR};EMULATOR_VERSION_MINOR=${EMULATOR_VERSION_MINOR};EMULATOR_VERSION_PATCH=${EMULATOR_VERSION_PATCH}")
@@ -221,6 +221,7 @@ endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(Boost 1.84.0 CONFIG)
+find_package(CLI11 2.6.1 CONFIG)
find_package(FFmpeg 5.1.2 MODULE)
find_package(fmt 10.2.0 CONFIG)
find_package(glslang 15 CONFIG)
@@ -281,15 +282,16 @@ set(AJM_LIB src/core/libraries/ajm/ajm.cpp
set(AUDIO_LIB src/core/libraries/audio/audioin.cpp
src/core/libraries/audio/audioin.h
- src/core/libraries/audio/sdl_in.h
- src/core/libraries/audio/sdl_in.cpp
+ src/core/libraries/audio/audioin_backend.h
+ src/core/libraries/audio/audioin_error.h
+ src/core/libraries/audio/sdl_audio_in.cpp
src/core/libraries/voice/voice.cpp
src/core/libraries/voice/voice.h
src/core/libraries/audio/audioout.cpp
src/core/libraries/audio/audioout.h
src/core/libraries/audio/audioout_backend.h
src/core/libraries/audio/audioout_error.h
- src/core/libraries/audio/sdl_audio.cpp
+ src/core/libraries/audio/sdl_audio_out.cpp
src/core/libraries/ngs2/ngs2.cpp
src/core/libraries/ngs2/ngs2.h
)
@@ -494,6 +496,8 @@ set(HLE_LIBC_INTERNAL_LIB src/core/libraries/libc_internal/libc_internal.cpp
src/core/libraries/libc_internal/libc_internal_str.h
src/core/libraries/libc_internal/libc_internal_math.cpp
src/core/libraries/libc_internal/libc_internal_math.h
+ src/core/libraries/libc_internal/libc_internal_threads.cpp
+ src/core/libraries/libc_internal/libc_internal_threads.h
src/core/libraries/libc_internal/printf.h
)
@@ -524,6 +528,9 @@ set(SYSTEM_GESTURE_LIB
set(PNG_LIB src/core/libraries/libpng/pngdec.cpp
src/core/libraries/libpng/pngdec.h
src/core/libraries/libpng/pngdec_error.h
+ src/core/libraries/libpng/pngenc.cpp
+ src/core/libraries/libpng/pngenc.h
+ src/core/libraries/libpng/pngenc_error.h
)
set(JPEG_LIB src/core/libraries/jpeg/jpeg_error.h
@@ -581,14 +588,21 @@ set(NP_LIBS src/core/libraries/np/np_error.h
src/core/libraries/np/np_commerce.h
src/core/libraries/np/np_manager.cpp
src/core/libraries/np/np_manager.h
+ src/core/libraries/np/np_matching2.cpp
+ src/core/libraries/np/np_matching2.h
src/core/libraries/np/np_score.cpp
src/core/libraries/np/np_score.h
src/core/libraries/np/np_trophy.cpp
src/core/libraries/np/np_trophy.h
+ src/core/libraries/np/np_tus.cpp
+ src/core/libraries/np/np_tus.h
src/core/libraries/np/trophy_ui.cpp
src/core/libraries/np/trophy_ui.h
src/core/libraries/np/np_web_api.cpp
src/core/libraries/np/np_web_api.h
+ src/core/libraries/np/np_web_api_error.h
+ src/core/libraries/np/np_web_api_internal.cpp
+ src/core/libraries/np/np_web_api_internal.h
src/core/libraries/np/np_web_api2.cpp
src/core/libraries/np/np_web_api2.h
src/core/libraries/np/np_party.cpp
@@ -599,6 +613,9 @@ set(NP_LIBS src/core/libraries/np/np_error.h
src/core/libraries/np/np_profile_dialog.h
src/core/libraries/np/np_sns_facebook_dialog.cpp
src/core/libraries/np/np_sns_facebook_dialog.h
+ src/core/libraries/np/np_partner.cpp
+ src/core/libraries/np/np_partner.h
+ src/core/libraries/np/object_manager.h
)
set(ZLIB_LIB src/core/libraries/zlib/zlib.cpp
diff --git a/REUSE.toml b/REUSE.toml
index 18200ab28..22bed2a50 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -20,6 +20,7 @@ path = [
"documents/Quickstart/2.png",
"documents/Screenshots/*",
"documents/Screenshots/Linux/*",
+ "documents/Screenshots/Windows/*",
"externals/MoltenVK/MoltenVK_icd.json",
"scripts/ps4_names.txt",
"src/images/bronze.png",
diff --git a/dist/net.shadps4.shadPS4.metainfo.xml b/dist/net.shadps4.shadPS4.metainfo.xml
index d2a6747d9..210ca1c5e 100644
--- a/dist/net.shadps4.shadPS4.metainfo.xml
+++ b/dist/net.shadps4.shadPS4.metainfo.xml
@@ -38,6 +38,9 @@
Game
+
+ https://github.com/shadps4-emu/shadPS4/releases/tag/v.0.14.0
+
https://github.com/shadps4-emu/shadPS4/releases/tag/v.0.13.0
diff --git a/documents/Docker Builder/.devcontainer/devcontainer.json b/documents/Docker Builder/.devcontainer/devcontainer.json
index 32e301bd9..1139ffa33 100644
--- a/documents/Docker Builder/.devcontainer/devcontainer.json
+++ b/documents/Docker Builder/.devcontainer/devcontainer.json
@@ -17,16 +17,19 @@
"customizations": {
"vscode": {
"extensions": [
- "llvm-vs-code-extensions.vscode-clangd"
+ "llvm-vs-code-extensions.vscode-clangd",
+ "ms-vscode.cmake-tools",
+ "xaver.clang-format"
],
"settings": {
- "C_Cpp.intelliSenseEngine": "disabled",
"clangd.arguments": [
"--background-index",
"--clang-tidy",
"--completion-style=detailed",
- "--header-insertion=never"
- ]
+ "--header-insertion=never",
+ "--compile-commands-dir=/workspaces/shadPS4/Build/x64-Clang-Release"
+ ],
+ "C_Cpp.intelliSenseEngine": "Disabled"
}
}
},
@@ -37,9 +40,12 @@
"CC": "clang",
"CXX": "clang++"
},
- "cmake.configureSettings": {
+ "cmake.configureEnvironment": {
"CMAKE_CXX_STANDARD": "23",
- "CMAKE_CXX_STANDARD_REQUIRED": "ON"
- }
+ "CMAKE_CXX_STANDARD_REQUIRED": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+ "editor.formatOnSave": true,
+ "clang-format.executable": "clang-format-19"
}
}
\ No newline at end of file
diff --git a/documents/Docker Builder/.docker/Dockerfile b/documents/Docker Builder/.docker/Dockerfile
index 285144374..6ca9b2da5 100644
--- a/documents/Docker Builder/.docker/Dockerfile
+++ b/documents/Docker Builder/.docker/Dockerfile
@@ -1,38 +1,45 @@
# SPDX-FileCopyrightText: 2026 shadPS4 Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
-FROM ubuntu:24.04
+FROM archlinux:latest
-ENV DEBIAN_FRONTEND=noninteractive
+RUN pacman-key --init && \
+ pacman-key --populate archlinux && \
+ pacman -Syu --noconfirm
-RUN apt-get update && apt-get install -y \
- build-essential \
+RUN pacman -S --noconfirm \
+ base-devel \
clang \
+ clang19 \
+ ninja \
git \
ca-certificates \
wget \
- libasound2-dev \
- libpulse-dev \
- libopenal-dev \
- libssl-dev \
- zlib1g-dev \
- libedit-dev \
- libudev-dev \
- libevdev-dev \
- libsdl2-dev \
- libjack-dev \
- libsndio-dev \
- libxtst-dev \
- libvulkan-dev \
- vulkan-validationlayers \
- libpng-dev \
- clang-tidy \
- && rm -rf /var/lib/apt/lists/*
-
-RUN wget -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg \
- && echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main" > /etc/apt/sources.list.d/kitware.list \
- && apt-get update \
- && apt-get install -y cmake \
- && rm -rf /var/lib/apt/lists/*/*
+ alsa-lib \
+ libpulse \
+ openal \
+ openssl \
+ zlib \
+ libedit \
+ systemd-libs \
+ libevdev \
+ sdl2 \
+ jack \
+ sndio \
+ libxtst \
+ vulkan-headers \
+ vulkan-validation-layers \
+ libpng \
+ clang-tools-extra \
+ cmake \
+ libx11 \
+ libxrandr \
+ libxcursor \
+ libxi \
+ libxinerama \
+ libxss \
+ && pacman -Scc --noconfirm
+
+RUN ln -sf /usr/lib/llvm19/bin/clang-format /usr/bin/clang-format-19
WORKDIR /workspaces/shadPS4
\ No newline at end of file
diff --git a/documents/Screenshots/Windows/vscode-ext-1.png b/documents/Screenshots/Windows/vscode-ext-1.png
new file mode 100644
index 000000000..b8427b80b
Binary files /dev/null and b/documents/Screenshots/Windows/vscode-ext-1.png differ
diff --git a/documents/Screenshots/Windows/vscode-ext-2.png b/documents/Screenshots/Windows/vscode-ext-2.png
new file mode 100644
index 000000000..082e478a4
Binary files /dev/null and b/documents/Screenshots/Windows/vscode-ext-2.png differ
diff --git a/documents/Screenshots/Windows/vscode-ext-3.png b/documents/Screenshots/Windows/vscode-ext-3.png
new file mode 100644
index 000000000..c362d6490
Binary files /dev/null and b/documents/Screenshots/Windows/vscode-ext-3.png differ
diff --git a/documents/building-docker.md b/documents/building-docker.md
index 95be00044..84d238751 100644
--- a/documents/building-docker.md
+++ b/documents/building-docker.md
@@ -54,7 +54,16 @@ or your fork link.
git submodule update --init --recursive
```
-## Step 3: Build with CMake
+## Step 3: Build with CMake Tools (GUI)
+
+Generate build with CMake Tools.
+
+1. Go `CMake Tools > Configure > '>'`
+2. And `Build > '>'`
+
+Compiled executable in `Build` folder.
+
+## Alternative Step 3: Build with CMake
Generate the build directory and configure the project using Clang:
diff --git a/documents/building-windows.md b/documents/building-windows.md
index 88c5b6830..8251189ff 100644
--- a/documents/building-windows.md
+++ b/documents/building-windows.md
@@ -41,10 +41,171 @@ Go through the Git for Windows installation as normal
Your shadps4.exe will be in `C:\path\to\source\Build\x64-Clang-Release\`
-## Option 2: MSYS2/MinGW
+## Option 2: VSCode with Visual Studio Build Tools
+
+If your default IDE is VSCode, we have a fully functional example for that as well.
+
+### Requirements
+
+* [**Git for Windows**](https://git-scm.com/download/win)
+* [**LLVM 19.1.1**](https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.1/LLVM-19.1.1-win64.exe)
+* [**CMake 4.2.3 or newer**](https://github.com/Kitware/CMake/releases/download/v4.2.3/cmake-4.2.3-windows-x86_64.msi)
+* [**Ninja 1.13.2 or newer**](https://github.com/ninja-build/ninja/releases/download/v1.13.2/ninja-win.zip)
+
+**The main reason we use clang19 is because that version is used in CI for formatting.**
+
+### Installs
+
+1. Go through the Git for Windows installation as normal
+2. Download and Run LLVM Installer and `Add LLVM to the system PATH for all users`
+3. Download and Run CMake Installer and `Add CMake to the system PATH for all users`
+4. Download Ninja and extract it to `C:\ninja` and add it to the system PATH for all users
+ * You can do this by going to `Search with Start Menu -> Environment Variables -> System Variables -> Path -> Edit -> New -> C:\ninja`
+
+### Validate the installs
+
+```bash
+git --version
+# git version 2.49.0.windows.1
+
+cmake --version
+# cmake version 4.2.3
+
+ninja --version
+# 1.13.2
+
+clang --version
+# clang version 19.1.1
+```
+
+### Install Visual Studio Build Tools
+
+1. Download [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe)
+2. Select `MSVC - Windows SDK` and install (you don't need to install an IDE)
+
+* Or you can install via `.vsconfig` file:
+
+```
+{
+ "version": "1.0",
+ "components": [
+ "Microsoft.VisualStudio.Component.Roslyn.Compiler",
+ "Microsoft.Component.MSBuild",
+ "Microsoft.VisualStudio.Component.CoreBuildTools",
+ "Microsoft.VisualStudio.Workload.MSBuildTools",
+ "Microsoft.VisualStudio.Component.Windows10SDK",
+ "Microsoft.VisualStudio.Component.VC.CoreBuildTools",
+ "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
+ "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
+ "Microsoft.VisualStudio.Component.Windows11SDK.26100",
+ "Microsoft.VisualStudio.Component.TestTools.BuildTools",
+ "Microsoft.VisualStudio.Component.VC.ASAN",
+ "Microsoft.VisualStudio.Component.TextTemplating",
+ "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
+ "Microsoft.VisualStudio.Workload.VCTools"
+ ],
+ "extensions": []
+}
+
+Save the file as `.vsconfig` and run the following command:
+
+%userprofile%\Downloads\vs_BuildTools.exe --passive --config ".vsconfig"
+
+Be carefull path to vs_BuildTools.exe and .vsconfig file.
+```
+
+__This will install the necessary components to build shadPS4.__
+
+### Project structure
+
+```
+shadps4/
+ ├── shared (shadps4 main files)
+ └── shadps4.code-workspace
+```
+
+### Content of `shadps4.code-workspace`
+
+```json
+{
+ "folders": [
+ {
+ "path": "shared"
+ }
+ ],
+ "settings": {
+ "cmake.generator": "Ninja",
+
+ "cmake.configureEnvironment": {
+ "CMAKE_CXX_STANDARD": "23",
+ "CMAKE_CXX_STANDARD_REQUIRED": "ON",
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
+ },
+
+ "cmake.configureOnOpen": false,
+
+ "C_Cpp.intelliSenseEngine": "Disabled",
+
+ "clangd.arguments": [
+ "--background-index",
+ "--clang-tidy",
+ "--completion-style=detailed",
+ "--header-insertion=never",
+ "--compile-commands-dir=Build/x64-Clang-Release"
+ ],
+
+ "editor.formatOnSave": true,
+ "clang-format.executable": "clang-format"
+ },
+
+ "extensions": {
+ "recommendations": [
+ "llvm-vs-code-extensions.vscode-clangd",
+ "ms-vscode.cmake-tools",
+ "xaver.clang-format"
+ ]
+ }
+}
+```
+
+### Cloning the source code
+
+1. Open your terminal and where to shadPS4 folder: `cd shadps4\shared`
+3. Clone the repository by running
+ `git clone --depth 1 --recursive https://github.com/shadps4-emu/shadPS4 .`
+
+_or fork link_
+
+* If you have already cloned repo:
+```bash
+git submodule update --init --recursive
+```
+
+### Requirements VSCode extensions
+1. CMake Tools
+2. Clangd
+3. Clang-Format
+
+_These plugins are suggested in the workspace file above and are already configured._
+
+
+
+
+
+
+
+### Building
+1. Open VS Code, `File > Open workspace from file > shadps4.code-workspace`
+2. Go to the CMake Tools extension on left side bar
+3. Change Clang x64 Debug to Clang x64 Release if you want a regular, non-debug build.
+4. Click build.
+
+Your shadps4.exe will be in `shadps4\shared\Build\x64-Clang-Release\`
+
+## Option 3: MSYS2/MinGW
> [!IMPORTANT]
-> Building with MSYS2 is broken as of right now, the only way to build on Windows is to use [Option 1: Visual Studio 2022](https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-windows.md#option-1-visual-studio-2022).
+> Building with MSYS2 is broken as of right now, the only way to build on Windows is to use [Option 1: Visual Studio 2022](https://github.com/shadps4-emu/shadPS4/blob/main/documents/building-windows.md#option-1-visual-studio-2022) or [Option 2: VSCode with Visual Studio Build Tools](#option-2-vscode-with-visual-studio-build-tools).
### (Prerequisite) Download [**MSYS2**](https://www.msys2.org/)
diff --git a/externals/CLI11 b/externals/CLI11
new file mode 160000
index 000000000..bf5a16a26
--- /dev/null
+++ b/externals/CLI11
@@ -0,0 +1 @@
+Subproject commit bf5a16a26a34a9a7ad75f4a7705585e44675fef0
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index e243f63db..80a6ff7e2 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -271,7 +271,8 @@ add_subdirectory(json)
add_subdirectory(miniz)
# cli11
-set(CLI11_BUILD_TESTS OFF CACHE BOOL "" FORCE)
-set(CLI11_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
-
-add_subdirectory(ext-CLI11)
\ No newline at end of file
+if (NOT TARGET CLI11::CLI11)
+ set(CLI11_BUILD_TESTS OFF CACHE BOOL "" FORCE)
+ set(CLI11_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
+ add_subdirectory(CLI11)
+endif()
diff --git a/externals/MoltenVK b/externals/MoltenVK
index f168dec05..f79c6c569 160000
--- a/externals/MoltenVK
+++ b/externals/MoltenVK
@@ -1 +1 @@
-Subproject commit f168dec05998ab0ca09a400bab6831a95c0bdb2e
+Subproject commit f79c6c5690d3ee06ec3a00d11a8b1bab4aa1d030
diff --git a/externals/ext-CLI11 b/externals/ext-CLI11
deleted file mode 160000
index 1cce14833..000000000
--- a/externals/ext-CLI11
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 1cce1483345e60997b87720948c37d6a34db2658
diff --git a/src/common/config.cpp b/src/common/config.cpp
index 3c6590563..f950a2140 100644
--- a/src/common/config.cpp
+++ b/src/common/config.cpp
@@ -1,7 +1,8 @@
-// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project
+// SPDX-FileCopyrightText: Copyright 2025-2026 shadPS4 Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include
+#include