console-anywhere
Un puerto de PS2Recomp es un programa nativo normal (ps2EntryRunner) compilado a partir del código de juego recompilado más el runtime, renderizado con raylib. El mismo proyecto CMake lo compila en Windows, macOS (Apple Silicon mediante sse2neon), Linux y Steam Deck; android/ genera un APK y vita/ genera un vpk. Esta habilidad verifica el toolchain, imprime los pasos correctos para cada dispositivo y empaqueta el resultado para que el jugador aporte el juego desde su propio disco.
Límites honestos: PS2Recomp dice que se prueba principalmente con MSVC, por lo que las compilaciones para Mac, Linux, Android y Vita reciben menos pruebas; la Vita es mucho más lenta que una PC; Android no tiene controles en pantalla todavía. Y el ejecutor se compila a partir del código recompilado de tu juego, por lo que un paquete es para tus propios dispositivos: nunca contiene el disco, pero sigue derivando del juego, por lo que no es algo para subir.
${CLAUDE_SKILL_DIR} más abajo es la carpeta de esta habilidad (donde reside este SKILL.md).
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor # el SO de esta máquina
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor --target android --target vita # o --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 # antes de comprimir o subir nada
python3 "${CLAUDE_SKILL_DIR}/targets.py" recomp-json --game "My Game" --serial SLUS-20312 --status playable
Objetivos: windows, macos, linux, steamdeck, android, vita y web (plan y doctor solamente: un toolchain aparte). plan acepta --repo (tu checkout de PS2Recomp) y --build-dir. package acepta --lib FILE (librerías adicionales), --allow FILE, --replace, --status, --json. Códigos de salida: 0 ok, 1 algo faltante o rechazado, 2 entrada incorrecta.
Lo que lee y escribe
| archivo | qué |
|---|---|
| tu salida de compilación | ps2EntryRunner (+ .dll / .so / .dylib a su lado), app-release.apk o ps2EntryRunner.vpk |
console/dist/<nombre>/ | la carpeta del jugador: ejecutor, librerías, game/ (vacía), PLAYERS.md, play.bat / play.command / play.sh / install-android.sh, .recomp.json, .console-dist.json |
templates/PLAYERS.md | la plantilla de instrucciones para el jugador |
.recomp.json | descripción opcional del proyecto leída por listas de recomp (PS2Recomp mismo lo ignora) |
console/STATE.md | lee la carpeta de compilación y la ruta del checkout; registra lo que se compiló |
Método
- Pregunta dónde quieren jugar y en qué: una PC, una Mac, una Steam Deck, un teléfono Android, tableta o caja TV, una Vita homebrew. "En la TV" significa una caja Android TV con un mando Bluetooth, o una PC o Deck conectada a la TV con un controlador.
- El puerto ya debe funcionar aquí. Compílalo y pruébalo con
/console-testeren la máquina donde desarrollas primero. Un fallo en el escritorio no mejorará en un teléfono. - Doctor.
targets.py doctor --target <t>. Instala lo que FALTA con el comando impreso, luego ejecuta doctor de nuevo. - Plan.
targets.py plan --target <t> --elf-name <el ELF del disco>. Sigue los pasos en el checkout del usuario (el que contiene su código recompilado). Detalles por objetivo y la fuente de cada hecho: reference/targets.md. - Compila con los comandos del plan. Solo incremental; nunca limpies una carpeta de compilación, nunca
CLEAN=1para la Vita. Una carpeta de lanzamiento separada (out/release) deja intacta la compilación diaria. - Empaqueta.
targets.py package --runner <archivo compilado> --target <t> --out console/dist/<nombre>. Añade--elf-name(si no, el script de inicio leeBOOT2delSYSTEM.CNFdel jugador) y--game/--serialpara.recomp.json. - Lee el veredicto de guard. Un rechazo lista cada archivo y por qué. Corrige la causa (
--libincorrecto, un archivo de disco junto al ejecutor). Nunca añadas una línea de permiso para una imagen de disco, un ELF de PS2, un IRX,SYSTEM.CNFo fuentes del ejecutor: el archivo de permisos es solo para un falso positivo que sea realmente un archivo propio del usuario, con la razón escrita a su lado. Detalles: reference/guard.md. - Instala en el dispositivo siguiendo
PLAYERS.md, luego el jugador extrae su propio disco engame/. Pruébalo allí y registra el resultado enconsole/STATE.md.
Por objetivo en una línea
| objetivo | ejecutor | cómo se encuentra el ELF | notas |
|---|---|---|---|
| Windows | ps2EntryRunner.exe + DLLs de FFmpeg | play.bat pasa game\<ELF> | MSVC, la ruta más probada |
| macOS | ps2EntryRunner | play.command pasa game/<ELF> | compilaciones arm64 mediante sse2neon; necesita Homebrew FFmpeg a menos que se compile sin él |
| Linux | ps2EntryRunner | play.sh | raylib necesita encabezados de X11 y GL para compilar |
| Steam Deck | la compilación de Linux | play.sh, añadido a Steam como juego no Steam | o la compilación de Windows con Proton (no probado aquí) |
| Android | app-release.apk | incluido con -Pps2xBootElf=... | los archivos van a /storage/emulated/0/Android/data/com.ps2x.runner/files/ con adb push; empareja un controlador |
| PS Vita | ps2EntryRunner.vpk | incluido por ./vita/build.sh <ux0:data/... ruta> | ./vita/setup.sh una vez; instala con VitaShell; lento |
| web | (no es un objetivo de PS2Recomp) | snuri00/ps2-web-recomp es un recompilador diferente: un segundo puerto del mismo disco, experimental |
Barandillas de seguridad
- Trae tu propio juego. Cada jugador proporciona el juego desde un disco que posee, extraído por él mismo. Nunca descargues ISOs, ELFs o archivos BIOS, nunca ayudes a encontrarlos, nunca los pidas. No se necesita BIOS.
- Nada del juego se publica.
packagerechaza imágenes de disco (ISO, BIN, IMG, MDF, NRG, CHD, CSO y contenido ISO 9660 con cualquier nombre), ELFs de PS2 y módulos IRX (por magia y máquina), nombres estilo disco comoSLUS_203.12,SYSTEM.CNF, fuentes recompiladas derunner/, cualquier cosa dentro degame/y cualquier archivo de más de 512 MB. El ejecutor en sí está compilado a partir del código del juego recompilado: el paquete es para los dispositivos propios del usuario, no para subir. Comparte parches, overrides y activos originales. - No afiliado con Sony. PlayStation es una marca registrada de Sony Interactive Entertainment. PS Vita homebrew, Steam, Android y las demás plataformas pertenecen a sus dueños.
- Nunca destruyas los archivos del usuario.
--replacesolo reemplaza una carpeta creada por esta herramienta y se niega mientrasgame/contenga algo (el disco del jugador, partidas enmc0/).
Pasar el testigo a
/console-testerpara ejecutar la compilación en esta máquina antes y después de empaquetar./console-controllerpara los controles del dispositivo (distribuciónxboxen Steam Deck, zonas táctiles o un mando Bluetooth en Android)./console-savespara mover partidas entre dispositivos (mc0/está junto al ELF del juego).