Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/emulator-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: libsdl-org/SDL
ref: 147a8ee32dbf9ac02f3794964490687b6bbda1bc
ref: fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
path: build/SDL
persist-credentials: false
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
Expand All @@ -43,6 +43,7 @@ jobs:
- name: Exercise application lifecycle and concurrent enumeration
env:
S2K_SDL_SOURCE: ${{ github.workspace }}/build/SDL
S2K_EXPECT_SDL_VERSION: 3004016
S2K_CEMU_SOURCE: ${{ github.workspace }}/build/Cemu-motion
S2K_DOLPHIN_SOURCE: ${{ github.workspace }}/build/Dolphin-motion
run: bash tests/emulator-host/verify.sh
Expand Down Expand Up @@ -180,6 +181,8 @@ jobs:
build/emulator-disabled/compile_commands.json
build/emulator-build/integration-native-diagnostics.txt
build/emulator-build/integration-inspection.json
build/emulator-build/integration-sdl-version.txt
build/emulator-build/integration-notices.json
build/emulator-build/build.ninja
build/emulator-build/CMakeCache.txt
build/emulator-build/compile_commands.json
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/linux-bluez.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,13 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: libsdl-org/SDL
ref: 147a8ee32dbf9ac02f3794964490687b6bbda1bc
ref: fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
path: build/SDL
persist-credentials: false
- name: Real SDL consumer on Linux
env:
S2K_SDL_SOURCE: ${{ github.workspace }}/build/SDL
S2K_EXPECT_SDL_VERSION: 3004016
run: bash tests/sdl-inprocess/verify.sh
dolphin:
runs-on: ubuntu-24.04
Expand Down Expand Up @@ -114,7 +115,9 @@ jobs:
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: linux-dolphin-runtime-diagnostics
path: build/linux-installed-runtime.txt
path: |
build/linux-installed-runtime.txt
build/dolphin-build/integration-sdl-version.txt
if-no-files-found: warn
retention-days: 7

Expand Down Expand Up @@ -152,7 +155,8 @@ jobs:
uses: actions/cache/restore@0400d5f644dc74513175e3cd8d07132dd4860809
with:
path: build/vcpkg-cache
key: cemu-linux-x64-swift621-noble-3310f3b8-${{ hashFiles('build/cemu-source/vcpkg.json', 'build/cemu-source/vcpkg-configuration.json', 'build/cemu-source/dependencies/vcpkg_overlay_ports*/**') }}
key: cemu-linux-x64-swift621-noble-3310f3b8-${{ hashFiles('Integrations/Emulators/cemu.patch', 'build/cemu-source/vcpkg.json', 'build/cemu-source/vcpkg-configuration.json', 'build/cemu-source/dependencies/vcpkg_overlay_ports*/**') }}
restore-keys: cemu-linux-x64-swift621-noble-3310f3b8-
- name: Build actual Linux Cemu with Switch2Kit
run: |
python3 Integrations/Emulators/apply.py cemu build/cemu-source
Expand Down Expand Up @@ -185,6 +189,7 @@ jobs:
path: |
build/linux-cemu-build.log
build/linux-cemu-runtime.txt
build/cemu-build/integration-sdl-version.txt
build/cemu-build/CMakeCache.txt
build/cemu-build/CMakeFiles/CMakeConfigureLog.yaml
build/cemu-build/vcpkg-manifest-install.log
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/sdl-inprocess.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: libsdl-org/SDL
ref: 147a8ee32dbf9ac02f3794964490687b6bbda1bc
ref: fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
path: build/SDL
persist-credentials: false
- name: Record exact input dependency
if: matrix.os == 'macos-26'
run: git -C build/SDL archive HEAD -o "$RUNNER_TEMP/sdl-source.zip"
run: |
test "$(git -C build/SDL rev-parse HEAD)" = fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
git -C build/SDL archive HEAD -o "$RUNNER_TEMP/sdl-source.zip"
- name: Preserve pinned SDL source for reproductions
if: matrix.os == 'macos-26'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
Expand All @@ -40,6 +42,7 @@ jobs:
- name: Verify native consumers across checkout names from outside the repository
env:
S2K_SDL_SOURCE: ${{ github.workspace }}/build/SDL
S2K_EXPECT_SDL_VERSION: 3004016
run: |
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/sdl-regressions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: libsdl-org/SDL
ref: 147a8ee32dbf9ac02f3794964490687b6bbda1bc
ref: fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
path: .ci-sdl
persist-credentials: false
- name: Ensure the real wired driver is compiled
Expand All @@ -25,11 +25,14 @@ jobs:
run: |
set -euo pipefail
bash -n sdl/build-sdl.sh sdl/make-gopher64-both.sh tests/sdl-usb/check-sdl.sh
git -C .ci-sdl apply "$GITHUB_WORKSPACE/sdl/sdl3-3.4.14-s2udp.patch"
git -C .ci-sdl apply "$GITHUB_WORKSPACE/sdl/sdl3-s2udp.patch"
test "$(git -C .ci-sdl rev-parse HEAD)" = fa2c02bb6e21974a89ea9824bc53c9932abe5f9c
bash tests/sdl-usb/check-sdl.sh .ci-sdl before
cmake -S .ci-sdl -B "$RUNNER_TEMP/sdl-build" -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF -DSDL_HIDAPI_LIBUSB=ON > "$RUNNER_TEMP/sdl-baseline.log" 2>&1
cmake --build "$RUNNER_TEMP/sdl-build" --parallel 3 >> "$RUNNER_TEMP/sdl-baseline.log" 2>&1 || { tail -80 "$RUNNER_TEMP/sdl-baseline.log"; exit 1; }
grep '^#define HAVE_LIBUSB 1' "$RUNNER_TEMP/sdl-build"/include-config-*/build_config/SDL_build_config.h
cc -I .ci-sdl/include Integrations/SDL3/VerifyVersion.c -L "$RUNNER_TEMP/sdl-build" -Wl,-rpath,"$RUNNER_TEMP/sdl-build" -lSDL3 -o "$RUNNER_TEMP/check-sdl-version"
"$RUNNER_TEMP/check-sdl-version" 3004016 | tee "$RUNNER_TEMP/sdl-version.log"
cc -I .ci-sdl/include tests/sdl-edges/check.c -L "$RUNNER_TEMP/sdl-build" -Wl,-rpath,"$RUNNER_TEMP/sdl-build" -lSDL3 -o "$RUNNER_TEMP/check-edges"
set +e
"$RUNNER_TEMP/check-edges"
Expand All @@ -45,6 +48,7 @@ jobs:
bash tests/sdl-usb/check-sdl.sh .ci-sdl after
# Resolve the same test executable against ONLY the corrected dylib.
# SDL3_DYNAMIC_API would load both libraries' Objective-C classes.
DYLD_LIBRARY_PATH="$GITHUB_WORKSPACE/build/sdl" "$RUNNER_TEMP/check-sdl-version" 3004016 | tee -a "$RUNNER_TEMP/sdl-version.log"
DYLD_LIBRARY_PATH="$GITHUB_WORKSPACE/build/sdl" "$RUNNER_TEMP/check-edges"
- name: Pro Controller gamepad, sensor and rumble integration
shell: bash
Expand Down
54 changes: 47 additions & 7 deletions Integrations/Emulators/cemu.patch
Original file line number Diff line number Diff line change
@@ -1,31 +1,40 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 644032c..6d4a088 100644
index 644032c..0ddbc3f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.21.1)

option(ENABLE_VCPKG "Enable the vcpkg package manager" ON)
+option(ENABLE_SWITCH2KIT "Use in-process Switch2Kit controllers on macOS 15+ or Linux/BlueZ" OFF)
+set(SWITCH2KIT_SOURCE_DIR "" CACHE PATH "Switch2Kit source checkout")
option(MACOS_BUNDLE "The executable when built on macOS will be created as an application bundle" OFF)
option(ALLOW_PORTABLE "Allow Cemu to be run in portable mode" ON)

@@ -99,7 +101,9 @@ endif()

if (APPLE)
enable_language(OBJC OBJCXX)
- set(CMAKE_OSX_DEPLOYMENT_TARGET "13.4")
+ if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "13.4")
+ endif()
endif()

if (UNIX AND NOT APPLE)
@@ -168,6 +172,19 @@ if(ENABLE_SDL)
@@ -164,10 +168,27 @@ find_package(fmt 12.1 REQUIRED)
find_package(PNG REQUIRED)

if(ENABLE_SDL)
- find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
+ if(ENABLE_SWITCH2KIT)
+ find_package(SDL3 3.4.16 REQUIRED CONFIG COMPONENTS SDL3)
+ else()
+ find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3)
+ endif()
add_compile_definitions(HAS_SDL)
endif()

+if(ENABLE_SWITCH2KIT)
+ if((NOT APPLE AND NOT CMAKE_SYSTEM_NAME STREQUAL "Linux") OR NOT ENABLE_SDL OR (APPLE AND NOT MACOS_BUNDLE))
+ message(FATAL_ERROR "Switch2Kit requires macOS or Linux, ENABLE_SDL, and MACOS_BUNDLE on macOS")
Expand Down Expand Up @@ -891,3 +900,34 @@ index ccd1c92..5426ebf 100644
+ ${SWITCH2KIT_BLUETOOTH_USAGE}
</dict>
</plist>
diff --git a/vcpkg.json b/vcpkg.json
index 7f5ceca..57610be 100644
--- a/vcpkg.json
+++ b/vcpkg.json
@@ -2,6 +2,17 @@
"name": "cemu",
"version-string": "1.0",
"builtin-baseline": "f0fb3ddba5135b80982668de39dbaa139c00d281",
+ "vcpkg-configuration": {
+ "registries": [
+ {
+ "kind": "git",
+ "repository": "https://github.com/microsoft/vcpkg",
+ "baseline": "386d7c478221b7ee0c97bfe6ea61dcf65121d564",
+ "reference": "386d7c478221b7ee0c97bfe6ea61dcf65121d564",
+ "packages": ["sdl3"]
+ }
+ ]
+ },
"dependencies": [
"pugixml",
"zlib",
@@ -76,7 +87,7 @@
},
{
"name": "sdl3",
- "version": "3.4.10"
+ "version": "3.4.16"
},
{
"name": "wxwidgets",
39 changes: 39 additions & 0 deletions Integrations/Emulators/dolphin.patch
Original file line number Diff line number Diff line change
@@ -1,3 +1,42 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f62d7f..361fa75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -701,7 +701,11 @@ if(NOT ANDROID)
endif()

if(ENABLE_SDL)
- dolphin_find_optional_system_library(SDL3 Externals/SDL 3.2.0)
+ if(ENABLE_SWITCH2KIT)
+ add_subdirectory(Externals/SDL)
+ else()
+ dolphin_find_optional_system_library(SDL3 Externals/SDL 3.2.0)
+ endif()
add_definitions(-DHAVE_SDL3)
endif()

diff --git a/Externals/SDL/CMakeLists.txt b/Externals/SDL/CMakeLists.txt
index 6bdd630..ea8f250 100644
--- a/Externals/SDL/CMakeLists.txt
+++ b/Externals/SDL/CMakeLists.txt
@@ -25,7 +25,16 @@ if(LibUSB_TYPE STREQUAL Bundled)
set(SDL_HIDAPI_LIBUSB_SHARED OFF)
endif()

-add_subdirectory(SDL)
+if(ENABLE_SWITCH2KIT)
+ include(FetchContent)
+ FetchContent_Declare(switch2kit_sdl
+ URL https://github.com/libsdl-org/SDL/releases/download/release-3.4.16/SDL3-3.4.16.tar.gz
+ URL_HASH SHA256=7322236cd12090c3eb40b9728be4d49c76f66ad17d04369584d4ecad5cf77c68
+ DOWNLOAD_EXTRACT_TIMESTAMP FALSE)
+ FetchContent_MakeAvailable(switch2kit_sdl)
+else()
+ add_subdirectory(SDL)
+endif()

if (TARGET SDL3)
dolphin_disable_warnings(SDL3)
diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp
index 6e6749c..e4852eb 100644
--- a/Source/Core/Common/IniFile.cpp
Expand Down
14 changes: 13 additions & 1 deletion Integrations/Emulators/revisions.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
"repository": "dolphin-emu/dolphin",
"revision": "c185d27ede09771fe93a3b520c576f646f937ed9",
"files": {
"CMakeLists.txt": {
"before": "f221c08e1b7d4b3b4ae3b720947e5d4bb65c1d50c6eeab8d4e3d755e9702b6ef",
"after": "ef7c110c6e5a6a7b19ef6dfb54e43be17598232e0df00c33ee98a9e29357683d"
},
"Externals/SDL/CMakeLists.txt": {
"before": "39a06e89e801490937802eb40737947f57b3a50010be2704cddda1899a584474",
"after": "997f64930363133469f098855254dc3922e4c7b11cfb8dbaa7b878b2610dce27"
},
"Source/Core/Common/IniFile.cpp": {
"before": "2a21485e089cae8ea748332a54bba18b8af5a3c20f9c765daa7dcc09148bed79",
"after": "af7c128c6cb1199dd90febe370a610f0dd92292f24ff3fbd2c5dca409b9367cc"
Expand Down Expand Up @@ -79,7 +87,7 @@
"files": {
"CMakeLists.txt": {
"before": "919e665f6870584b28842c464fa9b109f8ee73d76d38462d81c98c89c0f466b6",
"after": "da202a7f65ca6f76ccf26024eec3a643bf07f61eb5ff674972b2346529abbd33"
"after": "7013254eba0e2d963e456c2c4e38775f183d4b57d1cbe7d2daf78e38049ec00a"
},
"src/CMakeLists.txt": {
"before": "20c43274c1b987d5da11e895ba8138735ed90f5cacf609344f98a2a476bd834f",
Expand Down Expand Up @@ -152,6 +160,10 @@
"src/resource/MacOSXBundleInfo.plist.in": {
"before": "72c342af8246b92139dcb652df402261845688401fe4c90026e1cdda935ea350",
"after": "2c3c01882ead71e6767bb79149a0ec408d66d06bc208514cdda2ba58c717e9e6"
},
"vcpkg.json": {
"before": "ff3b6c02d5a0a524a6d3abc5350e4ab57d9938e4896cbb31ca805a86779622f6",
"after": "95a5edff0d1e923cb3731ebc9a152621ad6b34b7e72b578f5835cf1a11d5d7bc"
}
}
}
Expand Down
9 changes: 9 additions & 0 deletions Integrations/SDL3/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,12 @@ set_target_properties(Switch2KitSDL3 PROPERTIES POSITION_INDEPENDENT_CODE ON)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
target_compile_options(Switch2KitSDL3 PRIVATE -fexceptions)
endif()

if(SWITCH2KIT_VERIFY_SDL)
add_executable(Switch2KitSDLVersion EXCLUDE_FROM_ALL VerifyVersion.c)
target_compile_features(Switch2KitSDLVersion PRIVATE c_std_11)
target_link_libraries(Switch2KitSDLVersion PRIVATE SDL3::SDL3)
set_target_properties(Switch2KitSDLVersion PROPERTIES
MACOSX_BUNDLE FALSE
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/switch2kit-verify")
endif()
33 changes: 33 additions & 0 deletions Integrations/SDL3/VerifyVersion.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/* Build diagnostic only: use the host SDL target without starting any subsystem. */
#include <SDL3/SDL_version.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
long expected = SDL_VERSION;
if (argc > 2) {
fputs("Usage: SDLVersion [numeric-version]\n", stderr);
return 2;
}
if (argc == 2) {
char *end = NULL;
errno = 0;
expected = strtol(argv[1], &end, 10);
if (errno || end == argv[1] || *end || expected <= 0 || expected > INT_MAX) {
fputs("Invalid expected SDL version\n", stderr);
return 2;
}
}
const int runtime = SDL_GetVersion();
const char *revision = SDL_GetRevision();
printf("SDL headers=%d runtime=%d revision=%.160s\n", SDL_VERSION, runtime,
revision ? revision : "");
if (SDL_VERSION != expected || runtime != expected) {
fprintf(stderr, "SDL version mismatch; expected %ld\n", expected);
return 1;
}
return 0;
}
2 changes: 1 addition & 1 deletion LICENSES/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
Switch2Kit includes code from [Peterksharma/switch2mac](https://github.com/Peterksharma/switch2mac/tree/ea6719f0a1d6b6986c00aca9ed4169a85c8cc9ae). Contributors are listed in [CREDITS.md](../CREDITS.md).

- [MIT-trevlars.txt](MIT-trevlars.txt): controller reference implementation, [trevlars/switch2-controllers-linux](https://github.com/trevlars/switch2-controllers-linux).
- [SDL-zlib.txt](SDL-zlib.txt): SDL-derived patches, [SDL 3.4.14](https://github.com/libsdl-org/SDL/tree/147a8ee32dbf9ac02f3794964490687b6bbda1bc). These are modified, unofficial SDL sources.
- [SDL-zlib.txt](SDL-zlib.txt): SDL-derived patches, [SDL](https://github.com/libsdl-org/SDL). These are modified, unofficial SDL sources.

Dolphin and Cemu retain their upstream copyright and license notices.
2 changes: 1 addition & 1 deletion docs/switch2kit/motion-profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Dolphin's existing event thread feeds a per-device 256-pair ring. Each emulated

SDL's aggregate `SetSensorsEnabled` callback runs under its joystick lock for first-enable/last-disable. The adapter additionally queries per-type state on each report/pump; it cannot infer an off/on transition of one type occurring entirely between pumps while another type remains enabled. Hosts changing motion policy should disable both sensors before reenabling. Each report flushes at most two virtual-sensor records through the host's existing SDL instance; no extra worker, unbounded sensor queue, fusion framework or Bluetooth callback workload is introduced.

The pinned public API and implementation are the authority: [virtual sensor submission](https://wiki.libsdl.org/SDL3/SDL_SendJoystickVirtualSensorData), [sensor descriptor](https://wiki.libsdl.org/SDL3/SDL_VirtualJoystickSensorDesc), [sensor enablement](https://wiki.libsdl.org/SDL3/SDL_SetGamepadSensorEnabled), and [sensor event timestamps](https://wiki.libsdl.org/SDL3/SDL_GamepadSensorEvent). Tests use SDL commit `147a8ee32dbf9ac02f3794964490687b6bbda1bc`.
The pinned public API and implementation are the authority: [virtual sensor submission](https://wiki.libsdl.org/SDL3/SDL_SendJoystickVirtualSensorData), [sensor descriptor](https://wiki.libsdl.org/SDL3/SDL_VirtualJoystickSensorDesc), [sensor enablement](https://wiki.libsdl.org/SDL3/SDL_SetGamepadSensorEnabled), and [sensor event timestamps](https://wiki.libsdl.org/SDL3/SDL_GamepadSensorEvent).

## Measurement status

Expand Down
2 changes: 1 addition & 1 deletion docs/switch2kit/sdl3.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ target_link_libraries(your_emulator PRIVATE Switch2Kit::SDL3)
switch2kit_embed(your_emulator) # macOS application bundle; host signs it afterward
```

The source dependency builds through the [C binding](cpp.md). Enable it for macOS 15+ hosts or the experimental [Linux/BlueZ backend](linux.md). Both use the same live C API and SDL adapter; Windows and Android remain unsupported. CI tests unmodified SDL at commit `147a8ee32dbf9ac02f3794964490687b6bbda1bc`.
The source dependency builds through the [C binding](cpp.md). Enable it for macOS 15+ hosts or the experimental [Linux/BlueZ backend](linux.md). Both use the same live C API and SDL adapter; Windows and Android remain unsupported. The adapter links the host's existing SDL target without patching SDL.

## Ownership and input loop

Expand Down
4 changes: 3 additions & 1 deletion scripts/build-switch2kit-emulator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ emulator=$1; source=$2; build=$3; shift 3
python3 "$root/Integrations/Emulators/apply.py" "$emulator" "$source" --verify
swift --version
args=(-G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-DENABLE_SWITCH2KIT=ON "-DSWITCH2KIT_SOURCE_DIR=$root")
-DENABLE_SWITCH2KIT=ON -DSWITCH2KIT_VERIFY_SDL=ON "-DSWITCH2KIT_SOURCE_DIR=$root")
if [ "$platform" = Darwin ]; then args+=(-DCMAKE_OSX_DEPLOYMENT_TARGET=15.0); fi
case "$emulator" in
dolphin) args+=(-DENABLE_SDL=ON -DENABLE_QT=ON); target=dolphin-emu ;;
Expand All @@ -23,6 +23,8 @@ case "$emulator" in
*) echo 'Unknown emulator' >&2; exit 2 ;;
esac
cmake -S "$source" -B "$build" "${args[@]}" "$@"
cmake --build "$build" --target Switch2KitSDLVersion --parallel "${S2K_BUILD_JOBS:-4}"
"$build/switch2kit-verify/Switch2KitSDLVersion" 3004016 | tee "$build/integration-sdl-version.txt"
# A Linux install includes all enabled upstream targets (for example Dolphin's
# command-line tools), not just the GUI executable. Build them before advertising
# cmake --install. macOS retains its existing targeted bundle workflow.
Expand Down
4 changes: 2 additions & 2 deletions sdl/INPUT-DELIVERY.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ bash sdl/build-sdl.sh /tmp/SDL
bash sdl/make-gopher64-both.sh
```

The build script exports exact commit 147a8ee32dbf9ac02f3794964490687b6bbda1bc,
The build script exports its pinned SDL revision,
applies the four patches listed in sdl/build-sdl.sh, and writes
build/sdl/libSDL3.0.dylib without modifying the source checkout.
The Gopher64 wrapper defaults to that rebuilt library and refuses to proceed
Expand All @@ -22,7 +22,7 @@ is read. The test sends complete button taps and analog-trigger excursions
between updates through actual localhost UDP sockets and SDL event APIs.
The CI negative control must fail with exit 42 before the correction; other
errors are not accepted as a reproduced defect. The same executable must
then pass via SDL3_DYNAMIC_API using the documented script's rebuilt library.
then pass against the documented script's rebuilt library.

Nintendo BLE commands, bonding, keep-alives and report decoding are untouched.
This does not recover datagrams lost before receipt, nor guarantee that a
Expand Down
Loading
Loading