touchHLE es un emulador de alto nivel (HLE) de aplicaciones del iPhone OS escrito en Rust para macOS, Windows y Android.
Como HLE, touchHLE es radicalmente diferente de un emulador de bajo nivel (LLE) como QEMU. El único código que ejecuta la CPU emulada es el binario de la aplicación y un puñado de librerías; touchHLE ocupa el lugar del iPhone OS y proporciona sus propias implementaciones de los frameworks del sistema (Foundation, UIKit, OpenGL ES, OpenAL, etc).
El objetivo de este proyecto es ejecutar juegos de los primeros días de iOS. Hasta ahora sólo se han probado aplicaciones para iPhone/iPod touch para iPhone OS 2.x. La compatibilidad con aplicaciones iOS modernas/de 64 bits no es explícitamente un objetivo, y es poco probable que se priorice la compatibilidad con aplicaciones que no sean juegos debido a su complejidad. Por otro lado, es probable que en el futuro intentemos dar soporte a aplicaciones para algunas de las versiones de 32 bits más recientes (especialmente 3.x y 4.x) y para el iPad. También es posible que se intente dar soporte al iPhone OS 1.x.
Exención de responsabilidad
Este proyecto no está afiliado ni respaldado por Apple Inc. en modo alguno. iPhone, iOS, iPod, iPod touch y iPad son marcas comerciales de Apple Inc. en Estados Unidos y otros países.
Utilice touchHLE únicamente para emular software que posea legalmente.
Plataformas compatibles
touchHLE ha sido probado y se considera compatible con x64 Windows y x64 macOS. Puede que sea posible compilarlo en Linux y en algunos sistemas AArch64 (al menos una persona lo ha conseguido), pero de momento no ofrecemos garantías. Si eres usuario de Apple Silicon Mac: no te preocupes, la versión x64 de macOS funciona con Rosetta.
Problema conocido en macOS: fuga de memoria de aproximadamente 0,2 MB/segundo (juegos a 30 fps) o 0,4 MB/segundo (juegos a 60 fps). Se han descartado todos los posibles culpables obvios en el propio emulador, por lo que podría tratarse de un problema en el propio macOS, SDL2 o alguna otra dependencia. Afortunadamente, es lo suficientemente lento como para que no suponga un problema en la mayoría de las sesiones de juego, pero puede que quieras vigilarlo.
Las arquitecturas que no sean x64 y AArch64 no están soportadas, y es poco probable que esto cambie.
Sería deseable eventualmente soportar Android. Probablemente no sea demasiado trabajo.
Métodos de entrada:
- Para la entrada táctil simulada, hay dos opciones:
- Ratón/trackpad (tocar/mantener/arrastrar pulsando el botón izquierdo del ratón)
- Cursor virtual usando el stick analógico derecho de un mando de videojuegos (tocar/mantener/arrastrar pulsando el stick o el botón derecho del hombro).
- Para la entrada simulada del acelerómetro (controles de inclinación), actualmente se requiere un mando de juego con un stick analógico izquierdo. El soporte real del acelerómetro llegará pronto, pero no está en las primeras versiones.
Utilización
Necesitarás una aplicación que puedas ejecutar. Tenga en cuenta que el binario de la aplicación debe ser descifrado para ser utilizable.
Por ahora no hay interfaz gráfica de usuario. Si eres usuario de Windows y no estás familiarizado con la línea de comandos, estas instrucciones pueden resultarte útiles:
- Lo más fácil y rápido es arrastrar y soltar el archivo .ipa o la carpeta .app de la aplicación sobre touchHLE.exe.
-
Para configurar las opciones, edite el archivo touchHLE_options.txt. Para obtener una lista de opciones
- Mantenga pulsada la tecla Mayús y haga clic con el botón derecho del ratón en el espacio vacío de la ventana de la carpeta.
- Haga clic en "Abrir con PowerShell".
- Escriba .\touchHLE.exe --help y pulse Intro.
-
También puedes ejecutar aplicaciones directamente desde la línea de comandos:
- Mueva el archivo .ipa o el paquete .app a la misma carpeta que touchHLE.exe.
- Mantenga pulsada la tecla Mayús y haga clic con el botón derecho del ratón en el espacio vacío de la ventana de la carpeta.
- Haga clic en "Abrir con PowerShell".
- Escriba .\touchHLE.exe "TuNombreDeAppAquí.ipa" (o .app según corresponda) y pulse Intro. Si desea especificar opciones, añada un espacio después del nombre de la aplicación (fuera de las comillas) y, a continuación, escriba las opciones, separadas por espacios.
Actualmente la detección de idioma no funciona en Windows. Para cambiar la preferencia de idioma de la aplicación, puede escribir SET LANG= seguido de un código de idioma ISO 639-1 y pulsar Intro antes de ejecutar la aplicación en la línea de comandos. Algunos códigos de idioma habituales son: en (English), de (Deutsch), es (Español), fr (français), it (italiano) y ja (日本語). Ten en cuenta que es la propia aplicación la que determina qué idiomas son compatibles, no el emulador.
Todos los datos guardados por la aplicación (por ejemplo, las partidas guardadas) se almacenan en la carpeta touchHLE_sandbox.
Si el emulador se bloquea casi inmediatamente al ejecutar un juego que aparece en la lista de juegos compatibles, comprueba si tienes activada alguna superposición, como la superposición de Steam, la superposición de Discord, el servidor de estadísticas de RivaTuner, etc. Lamentablemente, por muy útiles que sean estas herramientas, funcionan inyectándose en otras apps o juegos y no siempre limpian después de sí mismas, por lo que pueden romper touchHLE... no es culpa nuestra. 😢 Actualmente sólo RivaTuner Statistics Server se sabe que es un problema. Si encuentras otra superposición que no funciona, por favor dínoslo.
touchHLE es una aplicación creada por hikari_no_yume.
Que novedades incluye la versión 0.1.2 See changelog
Released
-
Compatibilidad:
- Mejoras en la compatibilidad con la API:
- Varias pequeñas contribuciones.
-
Nuevas aplicaciones en funcionamiento:
- Doom
- Doom II RPG
- I Love Katamari
- Wolfenstein RPG
-
Calidad:
- Ahora se soporta multitáctil.
-
Usabilidad:
- La versión Android de touchHLE ahora tiene un proveedor de documentos. Gracias a unas meras trescientas líneas de código boilerplate originalmente escrito para el emulador Skyline (RIP), ahora es posible para usted, como propietario de un dispositivo que ejecuta una versión más reciente de Android, mover documentos de archivos dentro y fuera de la ubicación del directorio de touchHLE en su dispositivo con relativa facilidad. Por ejemplo, ahora es posible descargar un documento de aplicación/octet-stream de archivo .ipa a la carpeta Descargas de su dispositivo y, a continuación, mediante una aplicación adecuada, mover este documento a la ubicación de touchHLE. Los usuarios de sistemas operativos normales y versiones antiguas de Android siguen pudiendo acceder a una versión superior de la misma funcionalidad a través del denominado "gestor de archivos".
- Ahora hay un botón "Abrir gestor de archivos" en el selector de aplicaciones, para que sea más fácil encontrar dónde guarda touchHLE tus aplicaciones y ajustes. En la mayoría de los sistemas operativos se abre el directorio correspondiente en un gestor de archivos, y en Android se abre algún tipo de aplicación para la gestión de documentos en la ubicación touchHLE.
- La versión Android de touchHLE ahora escribe todos los mensajes de registro en un archivo llamado log.txt, además de enviarlos a logcat.
- La nueva opción --stabilize-virtual-cursor= hace que el cursor virtual controlado por el stick analógico parezca más estable para la aplicación emulada, lo que resulta útil en algunos juegos con un desplazamiento del menú demasiado sensible. En algunos títulos se aplica por defecto.
- La detección automática de idiomas funciona ahora en todas las plataformas, y admite una lista de idiomas por orden de preferencia, en lugar de uno solo. La variable de entorno LANG ya no es compatible, y en su lugar se puede utilizar la nueva opción --preferred-languages=. Ten en cuenta que es la propia aplicación emulada la que decide qué hacer con esta lista, y si determinados idiomas están soportados.
- El selector de aplicaciones ahora tiene múltiples páginas, por lo que ya no está limitado a 16 aplicaciones.
- La velocidad de fotogramas está ahora limitada a 60 fps por defecto, lo que coincide con el iPhone OS original y soluciona problemas con algunos juegos en los que el juego corría demasiado rápido o consumía demasiada energía y tiempo de CPU. Este límite puede ajustarse o desactivarse con la nueva opción --limit-fps=.
- La opción --button-to-touch= ahora soporta mapeados del D-pad además de los botones A/B/X/Y.
- Se han añadido asignaciones de botones por defecto para Wolfenstein RPG y Doom II RPG, incluyendo el D-pad.