🎮 Gaming
Adiós al emulador: God of War de la PSP corre en tu navegador
Olvida descargar un emulador, configurar BIOS o copiar archivos. Alguien recompiló God of War: Chains of Olympus de la PSP a WebAssembly y ahora el juego corre a 60 fps dentro de una pestaña del navegador. Sin PPSSPP, sin instalación, sin nada.
La PSP vuelve a la vida — esta vez dentro de tu pestaña del navegador
El proyecto se llama psp-web-recomp y subió a la portada de Hacker News con 85 puntos y 43 comentarios. La idea no es emular la consola: es más ambiciosa y más rápida.
Cómo funciona: no hay emulador
En vez de simular la PSP instrucción por instrucción, la herramienta traduce el código MIPS del juego a C++ por adelantado, lo compila a WebAssembly y lo conecta a un reimplementación mínima del sistema operativo de la consola.
El gráfico lo pinta WebGL2, el audio sale por un AudioWorklet, y los datos del disco se transmiten por peticiones HTTP Range: solo se descarga el ejecutable y el resto llega sobre la marcha.
Resultado: Chains of Olympus va de la pantalla de inicio a las peleas a 60 fps en Chrome y Firefox, hasta 4 veces la resolución original de la PSP, y hasta en el celular con controles táctiles.
El segundo juego destripó el DRM de Sony
Ghost of Sparta llegó con los mismos scripts y se quedó colgado en el arranque: abre un archivo con la bandera de DRM de la PSP y verifica la respuesta.
El programador reimplementó el descifrado PGD del chip KIRK de Sony — AES-128 con tres llaves de su bóveda y una firma CMAC — y el juego arrancó. Quedó en 55 a 60 fps a 3 veces la resolución nativa.
De 6 fps a 60: la parte que nadie ve
La primera versión corria a 6 fotogramas por segundo. La optimización no vino del renderer: vino de medir.
- God of War cambiaba el framebuffer sin esperar el vsync y dibujaba 8 cuadros por cada uno visible. Frenar ese intercambio multiplicó por 8 el rendimiento de un solo golpe.
- Leer el reloj con
std::chronoen WebAssembly pasaba por JavaScript con BigInt y se comía un tercio del cuadro. - Firefox copia cada subida de buffers a su proceso GPU: un buffer índice compartido de 4 MB lo dejaba en 3 fps.
Historias así son las que convierten un proyecto de fin de semana en algo jugable.
Puedes probarlo tú mismo (con tu propio disco)
El repositorio no incluye ningún juego: necesitas la imagen del disco de un juego que te pertenezca. Con git, CMake, Ninja, un compilador C++20 y Python 3, la conversión de un ZIP a página jugable tarda unos 4 minutos en un laptop de 8 núcleos.
Ahí está la trampa: solo hay dos juegos probados, ambos de Ready at Dawn y con el mismo motor. Lo más probable es que tu juego favorito se detenga en una llamada del sistema que nadie ha implementado todavía.
¿Es esto el futuro de los juegos retro?
Mi opinión: sí, y asusta un poco. Si un desarrollador solo puede recompilar dos juegos de PSP, imagina lo que pasa cuando alguien aplica lo mismo a PS2, a GameCube o a catálogos enteros de estudios que ya no existen.
La emulación simula el pasado; la recompilación lo reescribe para el navegador. Y un juego que corre en una pestaña se comparte con un link, no con un archivo de 1.5 GB.
El ángulo legal sigue gris — el código generado pertenece a los dueños del juego, por eso el proyecto exige discos propios — pero la tecnología ya está suelta.
¿Tu consola favorita de la historia merece ser recompilada así? Comparte este artículo con alguien que todavía pasa horas configurando emuladores y cuéntame en los comentarios: ¿PS1, PSP o GameCube debería ser el siguiente?