suyu 0.04 estrena recompilación AOT de juegos de Switch a x86-64 antes de cerrar su desarrollo

suyu 0.04 estrena recompilación AOT de juegos de Switch a x86-64 antes de cerrar su desarrollo

suyu ha publicado su versión final 0.04, cerrando el desarrollo del emulador de Nintendo Switch con una de sus incorporaciones técnicas más ambiciosas. El nuevo modo Recompiler permite recompilar previamente código AArch64 de los juegos hacia ejecutables x86-64, reduciendo parte del trabajo que normalmente debe realizarse mientras el título está funcionando.

El proyecto nació como fork de Yuzu después del cierre de aquel emulador y ahora termina su recorrido público introduciendo un enfoque diferente al utilizado tradicionalmente por Yuzu o Ryujinx. La principal diferencia está en trasladar parte de la traducción de código desde el tiempo de ejecución hacia una fase previa, aunque esto no convierte los juegos de Switch en ports nativos de PC.

Recompiler traslada parte del trabajo del JIT fuera del tiempo de ejecución

Nintendo Switch ejecuta código AArch64 sobre su procesador ARM, mientras la mayoría de ordenadores gaming actuales emplean CPUs x86-64. Para salvar esta diferencia, emuladores como Yuzu o Ryujinx utilizan recompilación dinámica JIT para traducir bloques de instrucciones ARM64 a código x86-64 conforme van siendo necesarios.

Este método ya resulta muchísimo más eficiente que interpretar cada instrucción individualmente, pero sigue consumiendo recursos durante la ejecución. El nuevo Recompiler de suyu cambia precisamente ese punto: parte del código puede transformarse ahead-of-time antes de iniciar el juego, dejando preparados ejecutables nativos para la arquitectura del procesador anfitrión.

La consecuencia potencial es una reducción del overhead de CPU asociado a recompilar código sobre la marcha. Menos trabajo de traducción durante la partida puede liberar recursos para la propia emulación, algo especialmente interesante en procesadores de gama media o sistemas que ya trabajaban cerca de su límite.

Sin embargo, el cambio no elimina todo el proceso de emulación. suyu especifica que los ejecutables recompilados funcionan junto con su backend HLE, por lo que servicios del sistema, memoria, audio, llamadas al sistema y otras funciones de Nintendo Switch todavía necesitan capas de compatibilidad.

Tampoco desaparece la traducción gráfica. La GPU de Switch y sus APIs continúan siendo diferentes de las utilizadas por un PC, de manera que recompilar el código de CPU a x86-64 no convierte automáticamente Vulkan, shaders o pipelines gráficos en elementos nativos del sistema anfitrión.

Menos trabajo de CPU no significa eliminar los stutters de shaders

Aquí existe un matiz importante respecto a la explicación original. La recompilación AOT puede reducir parones relacionados con la traducción dinámica de código de CPU, pero no elimina automáticamente los stutters provocados por la compilación de shaders.

Son dos procesos diferentes. El código AArch64 corresponde al trabajo ejecutado por la CPU, mientras los shaders necesitan ser traducidos o compilados para la API gráfica utilizada por el PC. Un juego puede tener todo su código de CPU preparado previamente y seguir sufriendo tirones cuando aparecen nuevos pipelines gráficos que todavía deben compilarse.

La mejora real dependerá, por tanto, del cuello de botella de cada título. Si buena parte del coste estaba en el JIT, Recompiler puede tener un impacto apreciable; si el juego ya estaba limitado principalmente por GPU o por otros componentes de la emulación, el aumento de FPS podría ser considerablemente menor.

suyu 0.04 tampoco llega acompañado por una batería amplia de benchmarks que permita cuantificar esa diferencia. Todavía faltan comparativas directas entre JIT y Recompiler sobre el mismo hardware, midiendo FPS medios, 1% lows, tiempos de frame y utilización de CPU para conocer el beneficio real.

Zelda y Xenoblade podrían ser buenos candidatos, pero todavía faltan mediciones

Wccftech apunta especialmente a The Legend of Zelda: Breath of the Wild, Tears of the Kingdom y la saga Xenoblade Chronicles como títulos donde el nuevo enfoque podría resultar interesante debido a la escala de sus mundos y la carga que ejercen sobre el sistema.

Eso no significa que todos vayan a experimentar automáticamente grandes mejoras. Que un juego sea pesado o de mundo abierto no demuestra que la recompilación JIT sea su principal cuello de botella, especialmente cuando intervienen también GPU, sincronización, memoria y diferentes componentes del backend HLE.

El beneficio puede aparecer además de formas distintas. En un sistema muy limitado por CPU podrían subir los FPS medios, mientras otro equipo podría mantener una media similar pero obtener tiempos de frame más estables si se reducen determinados picos de trabajo relacionados con la traducción de código.

Precisamente por eso resultará más útil estudiar título por título que buscar un porcentaje general para toda la biblioteca de Switch. Recompiler cambia una parte fundamental del pipeline de CPU, pero cada juego ejerce una presión diferente sobre esa parte del emulador.

La función más ambiciosa de suyu llega justo cuando termina el proyecto

La situación resulta especialmente peculiar porque suyu 0.04 será también la última versión pública del emulador. Una tecnología que podría haber evolucionado durante múltiples revisiones aparece precisamente cuando sus responsables anuncian el final del desarrollo.

Eso deja Recompiler como una implementación inicial y potencialmente interesante para otros desarrolladores. La recompilación estática presenta sus propios desafíos, ya que no todo el comportamiento de un juego creado para otra plataforma puede resolverse necesariamente de forma previa y completamente estática.

También habrá que comprobar la compatibilidad. Una ruta más rápida pierde buena parte de su utilidad si determinados juegos presentan errores, cierres o comportamientos diferentes respecto al JIT, por lo que precisión y estabilidad deberán evaluarse junto al rendimiento.

La nueva función tampoco convierte el modo tradicional en algo innecesario. Mantener diferentes rutas permite recurrir al método convencional cuando Recompiler encuentre código o comportamientos que todavía no pueda manejar correctamente, algo lógico en una tecnología que debuta precisamente en la última versión del proyecto.

El avance técnico está, por tanto, bien definido: suyu puede trasladar parte de la traducción AArch64 → x86-64 fuera del tiempo de ejecución y reducir potencialmente el overhead de CPU. Lo que todavía no está demostrado es cuánto rendimiento gana cada juego ni hasta qué punto esa mejora compensa posibles diferencias de compatibilidad.

suyu se despide así con algo bastante más interesante que una actualización menor. Recompiler puede reducir una parte real del coste de emular Nintendo Switch en PC, pero no elimina HLE, la traducción gráfica ni la compilación de shaders. Su verdadero impacto dependerá ahora de benchmarks comparativos y de cómo responda cada título a esta nueva ruta.

Vía: Wccftech

Sobre el autor