ps3recomp, un proyecto de código abierto, convierte juegos de PlayStation 3 en programas nativos para PC, sin emulador. Ha publicado cuatro versiones desde el 7 de octubre y ya tiene juegos que pasan de los menús: The Simpsons Arcade Game se juega incluso en línea, y los ports de la comunidad de inFamous y Killzone 3 llegan al primer nivel.
La PS3 es, desde hace años, la consola más difícil de llevar a otro sitio. Su procesador, el Cell, combina un núcleo PowerPC con seis coprocesadores vectoriales que trabajan cada uno con su propia memoria, y los juegos de la época se escribían exprimiendo esa arquitectura a mano. El emulador RPCS3 lleva más de una década imitándola y, según el propio README de ps3recomp, hace jugable alrededor del 70 % del catálogo. ps3recomp ataca el problema por el otro lado, igual que hicieron antes N64Recomp con Nintendo 64 o XenonRecomp y UnleashedRecomp con Xbox 360: en vez de imitar la consola, traduce el juego.
El proyecto lo empezó en marzo el desarrollador conocido como sp00nznet y tiene licencia MIT. En las dos últimas semanas se ha acelerado: la versión 0.13 salió el 7 de octubre, la 0.14 el 13, la 0.15 el 16 y la 0.16 el 19. Solo la 0.15 reunió 76 cambios de seis colaboradores, casi todos surgidos de los ports que la comunidad tiene en marcha.
Claves de ps3recomp
- Traducir antes de jugar: sus herramientas leen el ejecutable del juego (el EBOOT), lo desensamblan y convierten el código del núcleo PowerPC (la PPU) y de los coprocesadores (las SPU) en C y C++. Ese código se compila con MSVC, GCC o Clang y se enlaza con un runtime que hace el papel del sistema de la PS3: su núcleo LV2, con más de 300 llamadas al sistema, y más de un centenar de bibliotecas.
- El Cell, pieza a pieza: cada SPU tiene solo 256 KB de memoria propia y mueve los datos con transferencias explícitas, y muchos juegos reparten el trabajo entre ellas con el planificador SPURS de Sony. ps3recomp reproduce las dos cosas. En la versión 0.15, la coma flotante de las SPU pasó a dar exactamente los mismos resultados que el hardware, y en los chips ARM esos cálculos van entre 1.6 y 4 veces más rápido.
- Gráficos en tres sistemas: las órdenes al chip gráfico de la consola, el RSX, se traducen a Direct3D 12 en Windows, Metal en Mac y Vulkan en Linux. La versión 0.16 añade texturas 3D y cachés para compilar menos sombreadores durante la partida.
- Juegos que ya se juegan: The Simpsons Arcade Game es jugable y admite partidas en línea para dos jugadores a través de psnr, un servidor que sustituye a la red de PlayStation. Tornado Outbreak llega a su primer nivel con los gráficos correctos, aunque a unos 10–16 fps.
- Los ports de la comunidad: inFamous funciona en Mac con chip de Apple a unos 13 fps; Killzone 3 llega a su primer nivel con luces, sombras y profundidad de campo; Twisted Metal muestra sus menús en Linux. También hay trabajo en inFAMOUS 2, Killzone 2, SoulCalibur II HD, LittleBigPlanet, Yakuza: Dead Souls y God of War II HD.
- Solo Windows, por ahora: el runtime compila en Windows, Mac y Linux, y cada versión trae un paquete de desarrollo para los tres. Pero, en el código principal, solo en Windows hay ya un juego recompilado que funcione; los ports de Mac y Linux llevan parches que aún no se han integrado.
- Tu copia, no la suya: el proyecto no incluye código, firmware ni claves de Sony, y no reparte juegos. Para cada port hay que descifrar el ejecutable de una copia propia y aportar sus datos, y los ports del propio autor no publican ejecutables listos para jugar.
Un port por juego, y todavía lejos del navegador
La recompilación estática tiene dos ventajas claras. El juego ya no se traduce mientras se juega, así que, según el proyecto, pide menos máquina. Y el resultado es código C y C++ que se puede modificar, depurar y llevar a otros sistemas. A cambio, cada juego es un port aparte: hay que localizar sus funciones, cubrir las bibliotecas del sistema que usa y arreglar lo que falle, título a título. Por eso la lista avanza de juego en juego, mientras que RPCS3 sirve para la mayor parte del catálogo sin tocar cada juego.
Lo que de momento no hay es una versión para el navegador. Los proyectos que llevan juegos de PSP y PS2 a una pestaña, como psp-web-recomp y ps2-web-recomp, siguen esta misma idea y compilan el resultado a WebAssembly. ps3recomp no lo menciona, y con juegos que en un PC rondan todavía los 10–16 fps, el salto a una pestaña queda lejos. Por eso, de la PS3, en el navegador solo hay hoy juegos como Skate 3, rehechos por otros caminos, que recogimos en nuestra lista de juegos clásicos que ya se juegan en el navegador.
El ritmo de las últimas semanas encaja con la ola que contamos en la IA desborda la descompilación de juegos: mucha gente trabajando a la vez sobre consolas antiguas. La diferencia es que ps3recomp no reparte nada de Sony ni de los juegos, y para jugar cada port hay que tener el disco o la descarga original.
ps3recomp ha pasado en dos semanas de una herramienta experimental a una base sobre la que varios grupos están portando juegos grandes de la PS3. Todavía hay mucho por hacer: velocidades bajas, solo Windows en el código principal y ningún ejecutable para el público. Pero ya se ha demostrado que el Cell, la consola que más ha costado emular, también se puede traducir.
Más fuentes: notas de las versiones 0.13 a 0.16, port de The Simpsons Arcade Game, port de Tornado Outbreak y RPCS3. Portada: PlayStation 3 Slim, foto de Evan-Amos, dominio público, Wikimedia Commons.
Fuente: ps3recomp en GitHub
