YUZU EMULADOR DE NINTENDO SWITCH EN ANDROID

Imagen hilo oficial YUZU- Emulador Switch.jpg


Contenido

¿ Que es Yuzu para android ?


Es el emulador para nintendo switch desarrollado durante bastantes años para PC y está desarrollado en C++ por el mismo equipo de citra que en el 2023 ha sido portado a Android recreando una interfaz diseñada para ser adaptada a las pantallas táctiles en los móviles/tabletas y Android TV.
La interfaz está escrita portándola a los nuevos estándares de android Koftlin partiendo la base interfaz inicial del emulador 3ds citra


¿ Cuáles son los requisitos recomendados a nivel de drivers y arquitectura de hw que requiere yuzu para funcionar?


El emulador en sí solo requiere lo siguiente :
Tener la arquitectura CPU x86-64 o armv8 de 64bits en el cual la rom tiene que ser de 64bits no vale estar en modo 32bits a dia de hoy no suele ser habitual pero había android tv que las venden en rom de 32bits.
Se recomienda tener Vulkan 1.1 con gran soporte de extensiones Vulkan 1.2 en el cual muy pocos fabricantes cumplen con el userspace de la implementación de Vulkan por encima de 1.1 en móviles


Extensiones divididas que deberían y se recomienda que se soporten de estar soportadas desde Vulkan 1.1
VK_EXT_subgroup_size_control
VK_KHR_16bit_storage aunque según el fabricante es posible que no implemente storageBuffer16BitAccess porque es opcional apoyarlo bajo Vulkan 1.1
VK_KHR_shader_atomic_int64 hay fabricantes que lo apoyan desde vulkan 1.1 es habitual tenerla si soporta
Vulkan 1.2 pero la opción shaderBufferInt64Atomics sigue siendo opcional en la implementación recae si el fabricante de la GPU lo quiere apoyar o se deba una limitación en el HW.
VK_KHR_shader_draw_parameters
VK_KHR_variable_pointers Sigue siendo opcional soportar VariablePointers por lo que sigue siendo HW driver dependiente


Extensiones que deberían de estar desde Vulkan 1.2 en el nucleo :
VK_KHR_HOST_QUERY_RESET es posible tenerla en Vulkan 1.1 si añaden soporte a la extensión y el driver llama a esta extensión.
VK_KHR_8bit_storage se añade en el nucleo 1.2 pero es posible que haya fabricantes que omitan dar soporte StorageBuffer8BitAccess por ejemplo en gpus adrenos no se soporta 8bit/16bit storage para gpus anteriores a la Adreno 650 y qualcomm no tiene intención a hacer un back port para gpu anteriores en su drivers .
VK_EXT_shader_demote_to_helper_invocation esta es la única extensión muy pocos drivers lo soportan pertece a Vulkan 1.3


Las extensiones inamovibles para funcionar de base son :
VK_EXT_VERTEX_ATTRIBUTE_DIVISOR
VK_KHR_DRIVER_PROPERTIES
VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE
VK_KHR_SHADER_FLOAT_CONTROLS


Estas extensiones a continación no son necesarias tenerlas pero es posible que sean obligatorias según el juego ya que ofrecen una mejoría de rendimiento y mejoran la experiencia jugable y arreglan errores :


VK_EXT_CONSERVATIVE_RASTERIZATION
VK_EXT_DEPTH_RANGE_UNRESTRICTED
VK_EXT_EXTENDED_DYNAMIC_STATE
VK_EXT_EXTENDED_DYNAMIC_STATE_2
VK_EXT_EXTENDED_DYNAMIC_STATE_3
VK_EXT_LINE_RASTERIZATION
VK_EXT_ROBUSTNESS_2 esta extension anteriormente era obligatoria pero se ha aceptado que sea opcional debido algunos fabricantes no la apoyan aunque puede provocar algunos juegos cuelgues aleatorios en algunos drivers haciendo que el emulador se cierre sino lo soporta.
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE
VK_NV_GEOMETRY_SHADER_PASSTHROUGH
VK_NV_VIEWPORT_ARRAY2
VK_NV_VIEWPORT_SWIZZLE


Las GPU Mali de la serie G-51 en adelante en la actualidad mostrarán gráficos más precisos en la emulación que las GPU adreno pero tienen limitaciones de HW físicas al mismo nivel que la de nintendo swtich Tegra TX1 debido a esto no esperéis un rendimiento óptimo en GPU Mali en fps según las técnicas del juego utilizadas ya que hay partes que se emulan por software con lo cual merma el rendimiento.
En las GPU de Adreno ofrecen un buen desempeño desde las GPU Adreno 650 y superiores y no tiene limitación de HW física pero falta driver gráfico que lo implemente y solo drivers muy recientes permiten obtener buenos resultados.


Recomiendo en GPU Adreno tener Drivers actualizados se pueden descargar desde https://github.com/K11MCH1/AdrenoToolsDrivers/releases/
Existen dos tipos de drivers los propietarios de Qualcomm driver v6xx y leer la nota en github .
Algunos solo funcionan para Adreno 6xx y otros para Adreno 7xx
Freedreno Turnip Vulkan Driver estos se basan en el driver libre mesa3d y soportan Vulkan 1.3 por parte negativa el soporte para adreno 7xx es básico y no está finalizado y solo funcionan mejor bajo adreno 6xx . Hay que instalarlos desde el menú del emulador algunos juegos solo funcionan bien con el driver turnip y otros solo con el driver propietario y pueden existir bugs especificos según el driver utilizado .

¿ Se Soportará versiones antiguas de Android anteriores a la 11?


Respuesta corta NO, uno de los motivos por no querer soportar viejas versiones de android es limitar que el HW que llegue a ejecutarlo sea hardware capaz de ejecutar el emulador
Si hicieran una interfaz compatible para android 9/10 o desde la primera versión 7.0 oficial compatible con vulkan haría que haya gente se preguntará por qué el emulador no funciona en dispositivos muy por debajo del hw de nintendo switch y sería recursos inútiles tan solo crearía reportes erróneos en github y saturaría el progreso .

¿ Cuánta ram requiere yuzu para funcionar?


Se recomienda que tenga 8GB mínimo aunque es posible ejecutarlo con solo 4GB de ram y a veces según el juego con 2GB si añadimos 8-10GB zram como swapfile en cache y teniendo cargas de 3-5min en memoria en la primera carga y el acceso al almacenamiento no es lo recomendado porque si el medio donde añadas la swap es lento y no tiene velocidades altas tendrás cáidas de fps hasta que acabe de cargar el juego haciendo insufrible la experiencia jugable.
Siendo lo recomendado 12-16GB disponibles en juegos más exigentes a emular

¿ Desde dónde lo puedo descargar ?


Desde la misma Google Play
Versión normal estable Yuzu estable
Versión Early access para tener acceso a las últimas novedades y apoyas al proyecto Yuzu Early access que cuesta 5,49€ (Store Española)


Las diferencias más destacables que hay en las builds normal a la de Early access son algunos arreglos y mejoras que no se han fusionado todavía en la rama principal considerada estable pero sí la han añadido en la rama yuzu-mainline de yuzu para los últimos cambios y también es un incentivo para la gente que apoya el proyecto tener las últimas mejoras antes y tener un icono de oro en la aplicación.