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.2.2 See changelog
Released
-
Compatibilidad:
-
Nuevas apps que funcionan:
- Rayman 2 (@ciciplusplus)
- Tony Hawk's Pro Skater 2 (@ciciplusplus)
- Earthworm Jim (@ciciplusplus)
- Castle of Magic (@ciciplusplus)
-
Mejoras en el soporte de la API:
- Varias pequeñas contribuciones. (@alborrajo, @WhatAmISupposedToPutHere, @ciciplusplus, @hikari-no-yume, @LennyKappa, @Skryptonyte, @teromene)
- Los archivos de audio AAC (AAC-LC en un contenedor MPEG-4 típico) son ahora compatibles con Audio Toolbox. Esto se hace de una manera bastante hacky por lo que podría no funcionar para algunas aplicaciones. (@hikari-no-yume)
-
Ahora hay soporte para aplicaciones iPhone OS 3.0, además del soporte existente para aplicaciones iPhone OS 2.x:
- Se ha añadido soporte para binarios fat. touchHLE ya no se bloqueará al intentar ejecutar una aplicación con versiones ARMv6 y ARMv7, y en su lugar intentará elegir la mejor opción disponible (ARMv7, o en su defecto, ARMv6). Esto mejora la compatibilidad con las aplicaciones del iPhone OS 3.0, muchas de las cuales utilizan binarios pesados para mejorar el rendimiento en el iPhone 3GS y el iPod touch (3ª generación). (@WhatAmISupposedToPutHere)
- Las bibliotecas dinámicas ARMv6 incluidas, libgcc y libstdc++, han sido actualizadas a sus versiones iPhone OS 3.0.1. Anteriormente se utilizaban las versiones iPhone OS 2.2.1. (@hikari-no-yume)
- touchHLE ya no mostrará una advertencia cuando se intente ejecutar una aplicación con iPhone OS 3.0 como versión mínima del sistema operativo. La advertencia ahora sólo aparece para aplicaciones que requieren iPhone OS 3.1 y posteriores. (@hikari-no-yume)
-
Nuevas apps que funcionan:
-
Usabilidad:
- La opción --button-to-touch= ahora es compatible con los botones de inicio y hombro izquierdo, además de con los botones A/B/X/Y y el D-pad. Se han ajustado las opciones por defecto de algunos juegos para utilizarlos. (@nighto)
- Opciones por defecto de varios juegos (@nighto)