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. (@hikari-no-yume, @nitinseshadri)
- Se han implementado algunas partes clave de UIImage, CGImage y CGBitmapContext utilizadas por el código de ejemplo Texture2D de Apple. Ahora debería funcionar la carga de texturas desde archivos PNG. (@hikari-no-yume)
- MP3 es ahora un formato de archivo de audio soportado en Audio Toolbox. Esto se hace de una manera bastante hacky por lo que podría no funcionar para algunas aplicaciones. (@hikari-no-yume)
-
Nuevas aplicaciones compatibles:
- Touch & Go LITE
- Super Monkey Ball Lite (la versión completa ya era compatible)
-
Calidad:
- La versión de stb_image utilizada por touchHLE ha sido actualizada. La nueva versión incluye una corrección de un error que provocaba que muchas imágenes de inicio (pantallas de inicio) e iconos no se cargaran. Gracias a @nothings y @rygorous que diagnosticaron y arreglaron esto.
-
Usabilidad:
- El cursor virtual controlado por el stick analógico derecho ahora utiliza una mayor parte del rango del stick analógico. (@hikari-no-yume)
- Ahora se muestra información básica sobre el paquete de aplicaciones, como su nombre y número de versión, al ejecutar una aplicación. También hay una nueva opción de línea de comandos, --info, que permite obtener esta información sin ejecutar la aplicación. (@hikari-no-yume)
- Ahora recibes un aviso si intentas ejecutar una aplicación que requiere una versión más reciente del iPhone OS. (@hikari-no-yume)
- Ahora las opciones se pueden cargar desde archivos. (@hikari-no-yume)
- Las opciones recomendadas para las aplicaciones compatibles se aplican ahora automáticamente. Ver el nuevo archivo touchHLE_default_options.txt.
- Puedes poner tus propias opciones en el nuevo archivo touchHLE_options.txt.
- Si usted es un usuario de Windows, esto significa que arrastrar y soltar una aplicación en touchHLE.exe es ahora todo lo que necesita hacer para ejecutar una aplicación.
-
Otros:
- La versión de dynarmic utilizada por touchHLE ha sido actualizada. Esto solucionará problemas de compilación para algunas personas.