touchHLE is a high-level emulator for iPhone OS apps, designed to run on modern desktop operating systems and Android. Written in Rust, touchHLE emulates early iPhone and iPod touch applications without directly simulating the hardware. Instead, it implements the system frameworks such as Foundation, UIKit, OpenGL ES, and OpenAL, allowing the emulated CPU to execute the app binary and a handful of libraries.
The primary aim of touchHLE is to run games from the early days of iOS:
Support for non-game apps is not a priority due to increased complexity.
The touchHLE app compatibility database tracks which apps are supported by touchHLE. This database is crowdsourced, and contributions from the community are welcome.
Simulated Touch Input:
Simulated Accelerometer Input:
Since its inception in December 2022, touchHLE has grown from a passion project to a collaborative effort with multiple contributors. The project's progress is driven by the specific needs of contributors, leading to varying levels of completeness across different APIs. UIKit, for example, is less complete due to limited usage in games, whereas OpenGL ES and OpenAL are more robust.
To use touchHLE, download a binary release or build it from source. You'll need a decrypted app binary to run in the emulator. The app compatibility database can help you find compatible apps.
On Android, use the graphical user interface to manage and run apps:
.ipa
files or .app
bundles in the touchHLE_apps
directory.File management can be tricky due to Android's restrictions. Use the device's file manager or ADB for transferring files.
touchHLE features a built-in app picker. Place your .ipa
files and .app
bundles in the touchHLE_apps
directory to see them in the app picker. Configure options by editing the touchHLE_options.txt
file.
On desktop platforms, you can use the command line to run apps:
.ipa
or .app
bundle to the same folder as touchHLE.exe
..\touchHLE.exe "YourAppNameHere.ipa"
.For contributing to the project, see the CONTRIBUTING.md
file in the repository. For building touchHLE, refer to dev-docs/building.md
.