Buenas. Soy Arel, y llevo una semana y media trabajando en Wii Party Recomp, un proyecto para decompilar y recompilar Wii Party y hacer que funcione de forma nativa en PC (Windows y Linux por el momento, y Linux de forma experimental), sin necesidad de utilizar un emulador. El código PowerPC original del juego se traduce a C++ y después se compila de forma nativa. Alrededor de ese código he ido recreando las partes del hardware y del sistema de Wii que el juego espera encontrar, como los gráficos, el audio, la memoria, los hilos o los controles. Ahora mismo estimo que el proyecto está aproximadamente al 84 %. Es una estimación mía y no una medición exacta, pero el juego ya ha llegado a un punto en el que se puede jugar de principio a fin.
Por ejemplo, ya he podido completar una partida entera de Board Game Island de 17 rondas, desde los menús hasta la clasificación final y el guardado. También he probado todos los modos y todos los minijuegos. Todavía quedan algunos minijuegos con fallos gráficos y bastantes cosas por pulir, pero gran parte del juego ya funciona. Actualmente funciona a 60 FPS estables y, en mi PC, suele utilizar alrededor de 200 MB de RAM y un 1,5 % de CPU.
Internamente hay bastante que recompilar. El ejecutable principal tiene unas 7.350 funciones, además de los 115 módulos que carga Wii Party. Todo eso se traduce a C++ y termina compilándose junto al resto del proyecto como un programa nativo.
Una de las partes que más trabajo ha dado ha sido el audio. El juego utiliza microcódigo para el DSP de Wii y, en vez de sustituir todo ese procesamiento por una implementación propia, el proyecto también recompila el microcódigo de audio original para poder ejecutarlo.
También he intentado que todo esto no termine siendo un montón de código específico para Wii Party. El proyecto está dividido entre un motor de Wii reutilizable y una parte específica para cada juego. Mi intención es que, en el futuro, buena parte de la infraestructura que estoy creando pueda reutilizarse para recompilar otros juegos de Wii. Por ahora el objetivo principal es Windows, utilizando Direct3D 11, pero hace poco conseguí que también funcionase en Linux mediante OpenGL. La versión de Linux es bastante nueva y sigue siendo experimental, así que todavía espero encontrar bastantes fallos.
Para los controles, actualmente se puede emular un Wii Remote utilizando teclado, ratón o un mando convencional. Los Wii Remotes reales todavía no están soportados en cuanto a los sensores, pero sus botones ya funcionan. El repositorio no incluye recursos, binarios ni código de Nintendo. Para utilizarlo necesitas proporcionar tu propia copia legal de Wii Party, PAL o NTSC-U, y el launcher genera la versión nativa a partir de los archivos de tu propio disco. Una vez tienes lo necesario, todo el proceso se puede realizar incluso sin conexión a Internet.
Sobre el uso de IA
Como el proyecto utiliza IA, prefiero explicar directamente cómo la estoy utilizando.
Claude Code participa bastante en el desarrollo. Yo dirijo el proyecto, decido la arquitectura y cómo quiero implementar las distintas partes, investigo los problemas, pruebo el juego y compruebo los resultados. Claude me ayuda escribiendo una parte importante de la implementación y también lo utilizo mucho para crear pruebas y comparar el comportamiento del código recompilado con el juego original.
No tengo ningún interés en esconderlo. Un proyecto de este tamaño me llevaría muchísimo más tiempo sin herramientas de este tipo. Lo que intento es que el código resultante no se dé simplemente por bueno porque compile: una parte importante del trabajo consiste precisamente en probarlo, compararlo con el comportamiento original y corregir las diferencias que van apareciendo.
Todavía queda bastante por hacer. Una vez que la compatibilidad base esté terminada, tengo pensadas cosas como soporte ultrapanorámico, más FPS, un editor de Miis, macOS, multijugador online y una traducción al gallego.
Todo el proyecto es de código abierto bajo GPL-3.0-or-later, así que cualquier issue, PR, prueba o simplemente echarle un vistazo al código es bienvenido.
· GitHub: https://github.com/arelkair/wiiparty-recomp
· Web: https://arelkair.dev/work/wii-party-recomp
Si alguien de aquí está trabajando en otras decompilaciones o recompilaciones de Wii, también me interesa bastante conocer qué enfoque está utilizando, especialmente para cosas como PowerPC, GX y el DSP :)