Skip to content

feat: enable pipe controller inputs on Windows - #81

Open
vladfi1 wants to merge 1 commit into
project-slippi:slippifrom
vladfi1:windows-pipes
Open

vladfi1 wants to merge 1 commit into
project-slippi:slippifrom
vladfi1:windows-pipes

Conversation

@vladfi1

@vladfi1 vladfi1 commented Oct 24, 2026 •

Copy link
Copy Markdown

Bots that play through the pipe controller inputs (e.g. libmelee) currently work with Ishiiruka on Windows but not with mainline.

Changes

  • Define USE_PIPES on Windows. Pipes.cpp (including its Windows named pipe code) is already compiled under if(UNIX OR WIN32) in InputCommon/CMakeLists.txt, but USE_PIPES was only defined if(UNIX), so the backend was never registered. Ishiiruka defines USE_PIPES for all Windows builds in Base.props; this looks like it was lost in the move to CMake.
  • Only block on connected pipes on Windows. On Windows all four slippibot pipes always exist. With BlockingPipes, UpdateInput waits for a FLUSH on every pipe device, so it hung forever on pipes no bot had connected to. (Ishiiruka avoided this because a FLUSH cleared g_needInputForFrame for all devices.) waitForInput now polls with PeekNamedPipe and gives up if no client is connected, which matches Unix, where a FIFO with no writer doesn't block select.

Testing

Windows 11, Release build via CMake/Ninja (as in CI), using libmelee with blocking inputs:

  • AI on port 1 vs CPU, and AI on port 2 vs CPU.
  • AI vs AI over several complete games.

🤖 Generated with Claude Code

The Windows named pipe code in Pipes.cpp was compiled but never used:
USE_PIPES was only defined on Unix, a holdover from when Windows built
with MSBuild (Ishiiruka sets USE_PIPES in Base.props). Define it on the
same platforms that compile Pipes.cpp.

On Windows all four slippibot pipes always exist, so in blocking mode
UpdateInput would wait forever for a FLUSH on pipes that no bot is
connected to. Only wait on pipes with a connected client, polling with
PeekNamedPipe since named pipes don't support select.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vladfi1 vladfi1 changed the title fix: enable pipe controller inputs on Windows feat: enable pipe controller inputs on Windows Oct 24, 2026
@vladfi1
vladfi1 marked this pull request as ready for review October 24, 2026 18:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant