console-anywhere
Ein PS2Recomp-Port ist ein normales natives Programm (ps2EntryRunner), das aus dem neu kompilierten Spielcode plus der Laufzeit erstellt und mit raylib gerendert wird. Das gleiche CMake-Projekt baut es unter Windows, macOS (Apple Silicon via sse2neon), Linux und dem Steam Deck; android/ erstellt eine APK und vita/ eine vpk. Diese Fähigkeit prüft die Toolchain, gibt die richtigen Schritte für jedes Gerät aus und verpackt das Ergebnis, sodass der Spieler das Spiel von seiner eigenen Disc einlegt.
Ehrliche Grenzen: PS2Recomp sagt, es sei hauptsächlich mit MSVC getestet, daher erhalten Mac-, Linux-, Android- und Vita-Builds weniger Tests; die Vita ist viel langsamer als ein PC; Android hat noch keine Bildschirmsteuerung. Und der Runner wird aus dem neu kompilierten Code deines Spiels kompiliert, daher ist ein Paket für deine eigenen Geräte bestimmt: Es enthält niemals die Disc, aber es ist dennoch aus dem Spiel abgeleitet, also nichts zum Hochladen.
${CLAUDE_SKILL_DIR} unten ist der Ordner dieser Fähigkeit (in dem diese SKILL.md liegt).
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor # das eigene Betriebssystem dieses Rechners
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor --target android --target vita # oder --target all
python3 "${CLAUDE_SKILL_DIR}/targets.py" plan --target steamdeck --elf-name SLUS_203.12
python3 "${CLAUDE_SKILL_DIR}/targets.py" package --runner out/release/ps2xRuntime/ps2EntryRunner \
--target linux --elf-name SLUS_203.12 --game "Mein Spiel" --serial SLUS-20312 \
--out console/dist/mein-spiel-linux
python3 "${CLAUDE_SKILL_DIR}/targets.py" guard console/dist/mein-spiel-linux # bevor du etwas zippst oder verschiebst
python3 "${CLAUDE_SKILL_DIR}/targets.py" recomp-json --game "Mein Spiel" --serial SLUS-20312 --status playable
Ziele: windows, macos, linux, steamdeck, android, vita und web (nur plan und doctor: eine separate Toolchain). plan akzeptiert --repo (dein PS2Recomp-Checkout) und --build-dir. package akzeptiert --lib DATEI (zusätzliche Bibliotheken), --allow DATEI, --replace, --status, --json. Exit-Codes: 0 OK, 1 etwas fehlt oder wurde abgelehnt, 2 falsche Eingabe.
Was es liest und schreibt
| Datei | was |
|---|---|
| dein Build-Ausgabe | ps2EntryRunner (+ .dll / .so / .dylib daneben), app-release.apk oder ps2EntryRunner.vpk |
console/dist/<name>/ | der Spieler-Ordner: Runner, Bibliotheken, game/ (leer), PLAYERS.md, play.bat / play.command / play.sh / install-android.sh, .recomp.json, .console-dist.json |
templates/PLAYERS.md | die Vorlage für Spieleranleitungen |
.recomp.json | optionale Projektbeschreibung, gelesen von recomp lists (PS2Recomp selbst ignoriert sie) |
console/STATE.md | lese den Build-Ordner und den Checkout-Pfad daraus; protokolliere, was gebaut wurde |
Methode
- Frage, wo sie spielen wollen und auf was: einem PC, einem Mac, einem Steam Deck, einem Android-Handy, -Tablet oder -TV-Box, einer Homebrew-Vita. „Auf dem Fernseher“ bedeutet eine Android-TV-Box mit Bluetooth-Controller oder ein PC oder Deck, der per Controller an den Fernseher angeschlossen ist.
- Der Port muss hier bereits laufen. Baue ihn und teste ihn mit
/console-testerauf dem Rechner, auf dem du entwickelst. Ein Absturz auf dem Desktop wird auf einem Handy nicht besser. - Doctor.
targets.py doctor --target <z>. Installiere, was FEHLT, mit dem angezeigten Befehl, dann führe doctor erneut aus. - Plan.
targets.py plan --target <z> --elf-name <die ELF der Disc>. Folge den Schritten im Checkout des Benutzers (dem, der seinen neu kompilierten Code enthält). Details pro Ziel und Quelle jeder Tatsache: reference/targets.md. - Baue mit den Befehlen des Plans. Nur inkrementell; niemals einen Build-Ordner bereinigen, niemals
CLEAN=1für die Vita. Ein separater Release-Ordner (out/release) hält den täglichen Build intakt. - Package.
targets.py package --runner <gebaute Datei> --target <z> --out console/dist/<name>. Füge--elf-namehinzu (sonst liest das StartskriptBOOT2aus derSYSTEM.CNFdes Spielers) und--game/--serialfür.recomp.json. - Lies das Urteil des Guards. Eine Ablehnung listet jede Datei und den Grund auf. Behebe die Ursache (falsches
--lib, eine Disc-Datei neben dem Runner). Füge niemals eine Allow-Zeile für ein Disc-Image, eine PS2-ELF, ein IRX,SYSTEM.CNFoder Runner-Quellen hinzu: Die Allow-Datei ist nur für einen Fehlalarm, der wirklich eine eigene Datei des Benutzers ist, mit dem Grund daneben. Details: reference/guard.md. - Installiere auf dem Gerät gemäß
PLAYERS.md, dann legt der Spieler seine eigene Disc ingame/ein. Teste es dort und protokolliere das Ergebnis inconsole/STATE.md.
Pro Ziel in einer Zeile
| Ziel | Runner | Wie die ELF gefunden wird | Anmerkungen |
|---|---|---|---|
| Windows | ps2EntryRunner.exe + FFmpeg-DLLs | play.bat übergibt game\<ELF> | MSVC, der am meisten getestete Pfad |
| macOS | ps2EntryRunner | play.command übergibt game/<ELF> | arm64-Builds via sse2neon; benötigt Homebrew-FFmpeg, sofern nicht ohne gebaut |
| Linux | ps2EntryRunner | play.sh | raylib benötigt X11- und GL-Header zum Bauen |
| Steam Deck | der Linux-Build | play.sh, zu Steam als Nicht-Steam-Spiel hinzugefügt | oder der Windows-Build unter Proton (hier ungetestet) |
| Android | app-release.apk | eingebacken mit -Pps2xBootElf=... | Dateien gehen mit adb push nach /storage/emulated/0/Android/data/com.ps2x.runner/files/; Controller koppeln |
| PS Vita | ps2EntryRunner.vpk | eingebacken durch ./vita/build.sh <ux0:data/... pfad> | ./vita/setup.sh einmalig; mit VitaShell installieren; langsam |
| web | (kein PS2Recomp-Ziel) | snuri00/ps2-web-recomp ist ein anderer Recompiler: ein zweiter Port derselben Disc, experimentell |
Leitplanken
- Bring dein eigenes Spiel mit. Jeder Spieler stellt das Spiel von einer Disc bereit, die er besitzt und selbst ausgelesen hat. Lade niemals ISOs, ELFs oder BIOS-Dateien herunter, hilf niemals, sie zu finden, frage niemals danach. Kein BIOS nötig.
- Nichts aus dem Spiel wird veröffentlicht.
packagelehnt Disc-Images (ISO, BIN, IMG, MDF, NRG, CHD, CSO und ISO-9660-Inhalte unter beliebigem Namen), PS2-ELFs und IRX-Module (per Magic und Maschine), disc-typische Namen wieSLUS_203.12,SYSTEM.CNF, neu kompilierterunner/-Quellen, alles ingame/sowie jede Datei über 512 MB ab. Der Runner selbst wird aus dem neu kompilierten Spielcode erstellt: Das Paket ist für die eigenen Geräte des Benutzers bestimmt, nicht zum Hochladen. Teile Patches, Overrides und originale Assets. - Nicht mit Sony verbunden. PlayStation ist eine Marke von Sony Interactive Entertainment. PS-Vita-Homebrew, Steam, Android und die anderen Plattformen gehören ihren Eigentümern.
- Zerstöre niemals die Dateien des Benutzers.
--replaceersetzt nur einen Ordner, den dieses Tool erstellt hat, und lehnt ab, währendgame/irgendetwas enthält (die Disc des Spielers, Spielstände inmc0/).
Übergabe an
/console-tester, um den Build auf diesem Rechner vor und nach dem Verpacken auszuführen./console-controllerfür die Steuerung des Geräts (xbox-Layout auf dem Steam Deck, Touch-Zonen oder ein Bluetooth-Controller auf Android)./console-saves, um Spielstände zwischen Geräten zu verschieben (mc0/liegt neben der ELF des Spiels).