-¡Por fin se ha optimizado Pokémon X / Y para jugar fluidamente!

Lo habeis pedido durante años y citra ha estado escuchando!


¡Gracias al arduo trabajo de uno de nuestros talentosos desarrolladores, algunos de los problemas más antiguos de Citra finalmente se han solucionado! Un agradecimiento especial a todos los que apoyan estos esfuerzos con comentarios de apoyo y emails. Nos encanta trabajar en este proyecto, ¡y tenemos mucho más de qué hablar en las próximas semanas!

Ha pasado mucho tiempo en desarrollo, pero finalmente nos complace anunciar que muchos de los errores más antiguos en Citra ahora están arreglados en la última versión de Canary gracias al esfuerzo de nuestros incansables desarrolladores. Entre los títulos que tuvieron problemas con la emulación de audio sounMAX de Citra, uno se destaca como el juego número uno más solicitado de todos los tiempos: Pokémon X e Y. Antes de entrar demasiado en la larga historia detrás de este gran logro, debemos establecer expectativas para Lo que esto significa para los usuarios del emulador.

PREGUNTAS MÁS FRECUENTES


¿Qué juegos están funcionando ahora?
Hemos podido probar algunos de los juegos favoritos de los fanáticos, como Pokémon X / Y, Superman Origins y kirbi., ¡y muchos más! Si ha experimentado errores de audio o errores en el pasado, este es el mejor momento para probar esos juegos nuevamente y ayudarnos a encontrar cualquier problema con esta nueva función de audio precisa.

¿Cómo puedo probarlo?
En la pestaña Audio del menú Configuración, hay una nueva opción para Emulación. La selección de “Plugin sounMax (precisa)” usará la nueva función, mientras que el valor predeterminado “HLE (rápido)” continuará usando el código de audio original.

¿Por qué es los juegos van lentos?
¡Aún recomendamos el uso de la emulación de audio HLE (rápido) hasta que se agreguen mejoras de velocidad adicionales a la emulación sounMAX (precisa)! Hoy nos complace anunciar que se han solucionado muchos errores, pero también somos conscientes de que el audio sounMAX (preciso) hace que cada juego se ejecute a aproximadamente 5FPS o menos.

Este es un gran paso, ahora lo que debemos hacer y haremos es un esfuerzo para optimizarla.

¿Qué pasará con la actual emulación de audio rápido?
¡No va a ninguna parte! De hecho, gracias a esta nueva y precisa opción de emulación de audio, debería ayudar a los desarrolladores a mejorarla para que funcione en todos los juegos.

¿Cuánto tiempo tomará para que los juegos alcancen su velocidad máxima con Accurate Audio?
Nunca podemos decirlo con seguridad, ¡pero realmente esperamos que sea pronto! Hemos realizado algunos perfiles preliminares y podemos decir con confianza que hay mucho margen de mejora, pero ahora que el cambio de código está activo, agradecemos todas y cada una de las contribuciones al proyecto.

Todo sobre HLE Audio y por qué es impresionante para el desarrolo del emulador 3ds


La emulación de audio de alto nivel (o el audio HLE para abreviar) proporciona una excelente calidad de audio y, al mismo tiempo, es muy eficiente. Por lo tanto, para la emulación, donde el objetivo de muchos desarrolladores es no solo hacer que la emulación sea precisa, sino también hacerlo rápido, el audio HLE es un gran punto medio, ya que puede tener una alta precisión y al mismo tiempo no requiere esfuerzo de procesamiento. Pero como de costumbre, hay una cosa que es particularmente difícil de entender con el audio HLE. Para escribir un motor de audio HLE efectivo, primero se debe aplicar ingeniería inversa al código de audio que utiliza el juego y entender realmente lo que hace. Esto es debido a la encriptacion que nintendo le pone a cada uno de sus juego, para asi, evitar la pirateria/emulación.

Nuestros desarroladores pasaron mucho tiempo escribiendo herramientas para ayudar a descomponer exactamente lo que estaba haciendo el juego, y también a descifrar lo que el código de audio está haciendo semánticamente. Esto resulta ser bastante complicado en la práctica. Es mucho más simple mirar el conjunto y ver qué está haciendo el código que entender realmente por qué está haciendo algo, lo cual es un requisito al recrear el código de audio. En pocas palabras, escribir soporte de audio HLE significa profundizar en cómo funciona el código para el audio del juego y recrear su funcionalidad en Citra, sin ejecutar ningún código de audio real del juego. Pero hay una manera muy diferente de manejar el audio, y esto se menciona al final del artículo de 2016: Emulación de audio de bajo nivel (o LLE, por sus siglas en inglés).

La depuración de Pokemon X nos crasheaba, ¿por que?


Antes de analizar en profundidad de qué se trata la emulación de audio LLE, está en orden un rápido desvío hacia el esfuerzo de depuración que se realizó en Pokémon X / Y. ¡Mirando el canal de Citra en YouTube, uno encontrará varios videos que hablan sobre el progreso de los juegos! En ese momento, estábamos tan emocionados como todos los demás de ver qué tan bien avanzaban los juegos, pero en algún momento dejaron de mejorar. Se realizaron varias correcciones a la emulación de la GPU 3DS, seguidas del soporte de sombreado de geometría ¡Realmente esperábamos que los juegos finalmente empezaran a funcionar! Pero no todo es tan bonito como lo pintan…, ¡no funcionaron!

Continuamos dedicando más y más tiempo a las características que hicieron que la emulación fuera mucho mejor, pero pokemon para nintendo muy popular y muy obstinado no funcionaría. Nuestros desarrolladores pasaron muchas largas horas haciendo ingeniería inversa del juego, y descubrieron que en el núcleo del juego estaba una máquina de estado que impulsa el motor del juego. El juego pasaría de estado a estado y, misteriosamente, cada vez que el juego se bloqueaba, simplemente no se estaba moviendo al siguiente estado. Tan genial como es saber qué causa el bloqueo de software, no responde a la gran pregunta de por qué el juego no hace la transición al siguiente estado como debería. Después de pasar más tiempo del que cualquiera podría haber preguntado, finalmente se agotaron y pasaron a desarrollar otras funciones sorprendentes para Citra, como el soporte de red multijugador, dejándonos sin más pistas de por qué el juego se congela. ¡Esta emulacion de pokemon nos estaba dando dolores de cabeza, el emulador pokemon iba a tener que esperar…

Entonces, ¿la solucion es cambiar el formato de audio a AAC?


Los usuarios bien informados han señalado durante años que los sonidos específicos que no se reproducen en Citra al emular Pokémon X tienen algo muy sospechoso en común: todos se almacenan en formato de audio AAC. AAC (o codificación avanzada de audio) es un formato de audio estándar que normalmente tiene mejor sonido de audio que el mp3 a la misma tasa de bits. Si bien apreciamos el trabajo de detective, hubo un problema evidente al decidir que solo necesitábamos agregar soporte de audio AAC. ¿Cómo se agrega uno el soporte de audio AAC al audio HLE de Citra?

La respuesta se mencionó anteriormente: para agregar una nueva función en el audio HLE, se necesita realizar una ingeniería inversa del código de audio que utilizan los juegos, y luego averiguar exactamente cómo el código de audio procesa el audio AAC; donde se pasan los datos, donde se almacena cada opción de decodificación, y todo lo que significa cada bit de datos escritos en la tubería de audio semánticamente. Para empeorar las cosas, no hay garantía de que esto solucione otros juegos con síntomas similares. Después de todo, un juego puede cargar cualquier código que desee en el chip de audio, lo que significa que aunque ambos usen audio AAC, podrían usar diferentes opciones de decodificación, lo que hace que el decodificador HLE AAC funcione para un juego y no para el otro. Y lo peor de todo, ¡es posible que todos estén equivocados, y Pokemon X / Y se este congelando debido a un problema no relacionado!

Ante este dilema, uno de nuestros desarrolladores diseñó una prueba para demostrar que el audio es probablemente la causa del bloqueo lógico. Sabía desde el principio que el código de audio HLE se basaba en la ingeniería inversa, el código de audio más común que usan los juegos, el menú de inicio, y decidió hacer un pirateo personalizado para Pokémon X que reemplazó su código de audio con el menú de audio de inicio. . Al iniciar el juego en un 3DS, todo parecía estar bien al principio, pero pronto se inició la falta familiar de música de fondo, y el Pokémon X comenzó a comportarse exactamente como lo hace en Citra. Un nivel corto más tarde, y el juego se congeló, ¡como en Citra! Revisamos dos veces los resultados al recrear esto en diferentes copias de Pokémon X y diferentes consolas 3DS, y todo fue exactamente de la misma manera. Los problemas de audio fueron muy probablemente la causa, pero ¿cuál debería ser la solución?


El largo camino a la emulación de audio SounMAX


Los métodos para solucionar cualquier problema de audio se reducen a dos posibles soluciones. Tómese un buen tiempo para investigar, realice ingeniería inversa y vuelva a crear el código de audio para Pokémon X / Y en HLE, o cree un programa que pueda leer el código de audio binario original en Pokémon X / Y y emular el chip de audio real , conocido como LLE. Ambas opciones tienen ventajas y desventajas (ademas de ser bastante laboriosas). HLE significa que en general será más rápido para trabajar, pero también es probable que tome mucho más tiempo y esfuerzo para corregir errores en otros juegos con un código de audio ligeramente diferente; mientras que con LLE, potencialmente todos los códigos de audio en cada juego solo funcionarán, pero también tomará mucho más tiempo para escribir, involucrará una investigación técnica más detallada, y lo más aterrador de todo, probablemente terminará ejecutándose mucho más lento.

Luz al final del tunel…

No nos queremos alargar mucho en el tema, pero finalmente después de muchas, muchas, y muuuchas pruebas, conseguimos optimizar al maximo la reproduccion de audio con la emulacion de un sistema de audio totalmente nuevo, por lo que ya no se aprecian ni cortes ni bajadas significativas de FPS (siempre y cuando tu ordenador cumpla los requisitos minimos)


Leave a Comment