Repository navigation
Conversation
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Use worker-owned Libretro disk control to swap playlist media while paused and keep the running session and memory card. Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
…gether#86 Co-Authored-By: Codex <noreply@openai.com>
…er#86 Co-Authored-By: Codex <noreply@openai.com>
|
This is impressive work, and the disc-swap handling is very thorough. We cannot take it in this shape though, mainly for licensing and architecture reasons:
If you are up for the out-of-process redesign, we would be happy to talk it through first. |
|
Thanks for the clear review. The licence point is right. A GPL-3.0 core cannot be loaded into a GPL-2.0-only process. I'd like to do the out-of-process redesign. Here is a proposal to agree on before I write code. Shape
What this fixes from your list
Questions before I start
AI-assisted: yes (Claude Code) |
|
Thanks, this is the shape we were hoping for. Answers:
One more point for the design: every launcher feature has to exist in the Mac launcher too, so please keep the protocol and the host portable (macOS on Apple silicon, Metal or MoltenVK for the shared surface), even if the first implementation is Windows and Linux only. |
|
Thanks for the answers. The protocol is written down for review. The draft repository is on our fork for now and can move under AnyTogether once you're happy with it: https://github.com/B-Howell/anyps5-retro-host/blob/main/docs/protocol.md In short:
A first implementation exists on Windows and Linux to check that the design holds.
I'll keep that implementation on our fork until you've reviewed the protocol, then send the host and the launcher-side client as the small PRs you described. AI-assisted: yes (Claude Code) |
|
Thanks for writing the protocol down and for building a working host to test it against. The overall shape is what we want: a separate process, an inherited pipe / socketpair rather than a named endpoint, video and audio off the control stream, no IPC library, and tests for crash, hang and early exit. We would like to go ahead with it, with the changes below. Most are about making docs/protocol.md the actual contract. Licence boundary
Safety of the launcher Versioning and lifetime macOS Launcher features Scope
For both conformance tests we would like negative cases too: an oversized frame, a ring with bad geometry, stray descriptors, a version mismatch and an exit in the middle of a call. If any of this is unclear or you disagree with a point, say so here before changing code. Thanks again for the careful work. |
|
Thanks, this is clear and I agree with all of it. Stage 1 (the spec only) is ready for review: https://github.com/B-Howell/anyps5-retro-host/tree/protocol-v1: It is a fresh branch with no host code, so it can seed the organisation repository as it stands. Version 1 is single-player PS1 only, with your method list ( Point by point:
Fixtures. There are 22 message fixtures, one per message and method, and 18 sessions. The sessions include the negative cases you asked for:
Paths are placeholders ( If this looks right, the next step is stage 2: the PS1-only host with a fake-launcher conformance test driven by these fixtures, in the repository you create. AI-assisted: yes (Claude Code) |
|
Thanks, this is a big step. The branch is clean (three docs-only commits, no host code in its history), the fixture checker passes, and most of the 13 points are covered in the text. Before we seed the organisation repository, a few things still need fixing. Most are places where two independent clients would behave differently. Required
Nice to have
Once these are in, the next round should only need a diff review, and then we can talk about seeding the organisation repository from this branch. |
|
The organisation repository is up: https://github.com/AnyTogether/anyps5-retro-host. It's empty on purpose. Once the review points above are in on protocol-v1, we'll seed main from that branch as it stands (its history is docs only, which is what we want), and stage 2 comes in as pull requests there. |
|
Thanks, and thanks for creating the repository. All of the points are in, as one commit on Required
Nice to have
Each round of these changes also went through an independent review, to look for places where two clients could read the text differently. The checker has a probe for each such case it caught. AI-assisted: yes (Claude Code) |
|
Stage 2 is ready, so it can come in as the first PR once What it is.
Tests.
Spec changes in this PR (in
AI-assisted: yes (Claude Code) |
|
Thanks, this round closes every required point. I checked each one against the document, read the new checker, and ran it. The cases the old checker let through (welcome before hello, a pong with an unrelated id, the short status sent by a host, and a welcome with a pixel format that was not offered) now fail as they should. The organisation repository is seeded: main of https://github.com/AnyTogether/anyps5-retro-host is protocol-v1 at 8c6fd76, history included. main takes pull requests only, with the fixtures check required. Please open stage 2 there as a pull request from your stage2 branch. Three small things can go in as follow-up issues there:
|
|
Progress since stage 2. Nothing here needs a decision yet. It is ready for whenever GPU rendering for the host. Branch
Real-core CI. A new
Stage 3, the launcher client is written from the spec alone. Branch
Not yet: the UI (stage 4) and signed distribution (stage 5). |
…/PS2 slice AnyTogether#86 Resolves the conflicts with the merged AnyTogether#85 by keeping its reviewed code and adding this PR on top: the embedded PS1 and PS2 host, disc changing and the disc picker. The embedded start keeps its ready and timeout to its own turn, and the disc picker test turns on the now opt-in emulator library. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Vulkan slice AnyTogether#87 Brings AnyTogether#87 onto current main through AnyTogether#86, keeping the merged AnyTogether#85 as reviewed. The PS3 commits are unchanged; where AnyTogether#86 and AnyTogether#87 both changed the native host, the combined version AnyTogether#87 already had is kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Thanks for seeding the repository. I've opened stage 2 there as AnyTogether/anyps5-retro-host#1. One request before more is built on Could you reset The only fork so far is mine, and I'll move the stage 2 PR onto the new |
What
This is the second slice of #84. It builds on #85 and adds in-window PS1 and PS2 play on Windows x64 and Linux x64. The shared Libretro worker owns input, options and saves. The Linux adapter uses EGL/OpenGL, Flutter's GTK pixel texture and PulseAudio. Windows uses D3D11 and waveOut.
Review the delta from #85 · Setup and verification guide
The launcher imports a user-supplied BIOS and verifies the selected core ZIP and library against hashes in this repo. Public one-click installs still need approved immutable hosting. The Windows and Linux PS3/Vulkan preview is in #87. macOS feature parity has its own Swift port as discussed in #84.
Tested
Current head verification
7f8db1b. 44 passed, with 14 shell-script fixtures skipped on Windows. The tests include the upstream phone and desktop notice checks.AI-assisted: yes
Co-authored-by: Codex noreply@openai.com