Phase 0: donor-launch spike foundation

Scaffold CoopAllTheThings: Remote Play Together for any XInput game via a
mirror app under a donor appid (real game keeps its own appid, so DRM,
achievements, and playtime stay intact).

- Build: CMake skeleton, ImGui + SafetyHook submodules (no vcpkg)
- common/: host<->hook IPC contract (seqlock pad state, shared-memory RAII)
- host/: borderless D3D11 window + ImGui overlay listing visible XInput pads,
  behind an InputSource interface (Steam Input slots in later)
- README documents the Phase 0 donor-launch validation procedure, anti-cheat
  limitation, and XInput/bitness constraints

Phase 0 validates the riskiest assumption (Steam RPT streams an arbitrary
window under a donor appid and routes guest input to it) before capture and
injection are built.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 22:48:31 +02:00
commit cf058aecfa
23 changed files with 1129 additions and 0 deletions

20
third_party/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,20 @@
# Dear ImGui built as a static lib with the Win32 + DX11 backends the host uses.
add_library(imgui STATIC
imgui/imgui.cpp
imgui/imgui_draw.cpp
imgui/imgui_tables.cpp
imgui/imgui_widgets.cpp
imgui/imgui_demo.cpp
imgui/backends/imgui_impl_win32.cpp
imgui/backends/imgui_impl_dx11.cpp)
target_include_directories(imgui PUBLIC
imgui
imgui/backends)
# ImGui's own sources are third-party; don't subject them to /W4.
if(MSVC)
target_compile_options(imgui PRIVATE /W0)
endif()
target_link_libraries(imgui PUBLIC d3d11 dxgi dwmapi)