console-anywhere
Un port PS2Recomp est un programme natif normal (ps2EntryRunner) construit à partir du code de jeu recompilé et du runtime, dessiné avec raylib. Le même projet CMake le construit sur Windows, macOS (Apple silicon via sse2neon), Linux et le Steam Deck ; android/ crée un APK et vita/ crée un vpk. Cette compétence vérifie la chaîne d'outils, affiche les étapes appropriées pour chaque appareil et empaquette le résultat pour que le joueur apporte le jeu à partir de son propre disque.
Limites honnêtes : PS2Recomp indique qu'il est principalement testé avec MSVC, donc les builds Mac, Linux, Android et Vita reçoivent moins de tests ; la Vita est beaucoup plus lente qu'un PC ; Android n'a pas encore de contrôles à l'écran. Et le runner est compilé à partir du code recompilé de votre jeu, donc un package est destiné à vos propres appareils : il ne contient jamais le disque, mais il est toujours dérivé du jeu, donc ce n'est pas quelque chose à télécharger.
${CLAUDE_SKILL_DIR} ci-dessous est le dossier de cette compétence (où se trouve ce SKILL.md).
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor # OS de cette machine
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor --target android --target vita # ou --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 "My Game" --serial SLUS-20312 \
--out console/dist/mygame-linux
python3 "${CLAUDE_SKILL_DIR}/targets.py" guard console/dist/mygame-linux # avant de zipper ou pousser quoi que ce soit
python3 "${CLAUDE_SKILL_DIR}/targets.py" recomp-json --game "My Game" --serial SLUS-20312 --status playable
Cibles : windows, macos, linux, steamdeck, android, vita et web (plan et doctor uniquement : une chaîne d'outils séparée). plan prend --repo (votre checkout PS2Recomp) et --build-dir. package prend --lib FILE (bibliothèques supplémentaires), --allow FILE, --replace, --status, --json. Codes de sortie : 0 ok, 1 quelque chose manque ou refusé, 2 mauvaise entrée.
Ce qu'il lit et écrit
| fichier | quoi |
|---|---|
| votre sortie de build | ps2EntryRunner (+ .dll / .so / .dylib à côté), app-release.apk ou ps2EntryRunner.vpk |
console/dist/<name>/ | le dossier du joueur : runner, bibliothèques, game/ (vide), PLAYERS.md, play.bat / play.command / play.sh / install-android.sh, .recomp.json, .console-dist.json |
templates/PLAYERS.md | le modèle d'instructions pour le joueur |
.recomp.json | description optionnelle du projet lue par les listes recomp (PS2Recomp lui-même l'ignore) |
console/STATE.md | lit le dossier de build et le chemin du checkout à partir de là ; journalise ce qui a été construit |
Méthode
- Demandez où ils veulent jouer et sur quoi : un PC, un Mac, un Steam Deck, un téléphone Android, une tablette ou un boîtier TV, une Vita homebrew. "Sur la TV" signifie un boîtier Android TV avec une manette Bluetooth, ou un PC ou Deck branché à la TV avec une manette.
- Le port doit déjà fonctionner ici. Construisez-le et vérifiez-le avec
/console-testersur la machine où vous développez d'abord. Un crash sur le bureau ne s'améliorera pas sur un téléphone. - Doctor.
targets.py doctor --target <t>. Installez ce qui manque avec la commande affichée, puis relancez doctor. - Plan.
targets.py plan --target <t> --elf-name <l'ELF du disque>. Suivez les étapes dans le checkout de l'utilisateur (celui qui contient son code recompilé). Détails par cible et source de chaque fait : reference/targets.md. - Build avec les commandes du plan. Incrémental uniquement ; ne nettoyez jamais un dossier de build, jamais
CLEAN=1pour la Vita. Un dossier de release séparé (out/release) préserve le build quotidien intact. - Package.
targets.py package --runner <fichier construit> --target <t> --out console/dist/<name>. Ajoutez--elf-name(sinon le script de lancement litBOOT2duSYSTEM.CNFdu joueur) et--game/--serialpour.recomp.json. - Lisez le verdict du guard. Un refus liste chaque fichier et pourquoi. Corrigez la cause (mauvais
--lib, un fichier disque à côté du runner). N'ajoutez jamais de ligne allow pour une image disque, un ELF PS2, un IRX,SYSTEM.CNFou des sources du runner : le fichier allow est uniquement pour un faux positif qui est vraiment le propre fichier de l'utilisateur, avec la raison écrite à côté. Détails : reference/guard.md. - Installez sur l'appareil en suivant
PLAYERS.md, puis le joueur extrait son propre disque dansgame/. Testez-le là, et enregistrez le résultat dansconsole/STATE.md.
Par cible en une ligne
| cible | runner | comment l'ELF est trouvé | notes |
|---|---|---|---|
| Windows | ps2EntryRunner.exe + DLLs FFmpeg | play.bat passe game\<ELF> | MSVC, le chemin le plus testé |
| macOS | ps2EntryRunner | play.command passe game/<ELF> | builds arm64 via sse2neon ; nécessite Homebrew FFmpeg sauf construit sans |
| Linux | ps2EntryRunner | play.sh | raylib a besoin des headers X11 et GL pour construire |
| Steam Deck | le build Linux | play.sh, ajouté à Steam comme jeu non-Steam | ou le build Windows sous Proton (non testé ici) |
| Android | app-release.apk | intégré avec -Pps2xBootElf=... | les fichiers vont dans /storage/emulated/0/Android/data/com.ps2x.runner/files/ avec adb push ; associez une manette |
| PS Vita | ps2EntryRunner.vpk | intégré par ./vita/build.sh <chemin ux0:data/...> | ./vita/setup.sh une fois ; installez avec VitaShell ; lent |
| web | (pas une cible PS2Recomp) | snuri00/ps2-web-recomp est un recompilateur différent : un second port du même disque, expérimental |
Garde-fous
- Apportez votre propre jeu. Chaque joueur fournit le jeu à partir d'un disque qu'il possède, extrait par ses soins. Ne téléchargez jamais d'ISOs, d'ELFs ou de fichiers BIOS, n'aidez jamais à les trouver, ne les demandez jamais. Aucun BIOS nécessaire.
- Rien du jeu n'est publié.
packagerefuse les images disque (ISO, BIN, IMG, MDF, NRG, CHD, CSO et contenu ISO 9660 sous n'importe quel nom), les ELFs PS2 et modules IRX (par signature et machine), les noms de type disque commeSLUS_203.12,SYSTEM.CNF, les sources recompilées derunner/, tout ce qui se trouve dansgame/, et tout fichier de plus de 512 Mo. Le runner lui-même est construit à partir du code de jeu recompilé : le package est destiné aux propres appareils de l'utilisateur, pas à un téléchargement. Partagez des patches, des overrides et des assets originaux. - Non affilié à Sony. PlayStation est une marque déposée de Sony Interactive Entertainment. Les homebrew PS Vita, Steam, Android et les autres plateformes appartiennent à leurs propriétaires.
- Ne détruisez jamais les fichiers de l'utilisateur.
--replacene remplace qu'un dossier créé par cet outil, et refuse tant quegame/contient quelque chose (le disque du joueur, les sauvegardes dansmc0/).
Passer la main à
/console-testerpour exécuter le build sur cette machine avant et après l'empaquetage./console-controllerpour les contrôles de l'appareil (dispositionxboxsur le Steam Deck, zones tactiles ou manette Bluetooth sur Android)./console-savespour déplacer les sauvegardes entre appareils (mc0/se trouve à côté de l'ELF du jeu).