hikari-no-yume / touchHLE
- понедельник, 6 февраля 2023 г. в 00:38:51
High-level emulator for iPhone OS apps
touchHLE is a high-level emulator (HLE) for iPhone OS apps. It runs on modern desktop operating systems, and is written in Rust.
As an HLE, touchHLE is radically different from a low-level emulator (LLE) like QEMU. The only code the emulated CPU executes is the app binary and a handful of libraries; touchHLE takes the place of iPhone OS and provides its own implementations of the system frameworks (Foundation, UIKit, OpenGL ES, OpenAL, etc).
The goal of this project is to run games from the early days of iOS. Only iPhone/iPod touch apps for iPhone OS 2.x have been tested so far. Modern/64-bit iOS app support is explicitly a non-goal, and support for apps that aren't games is unlikely to be prioritized due to the complexity. On the other hand, it's likely that we'll attempt to support apps for some newer 32-bit versions (especially 3.x and 4.x) and the iPad in future. iPhone OS 1.x support might be attempted also.
Visit our homepage! https://touchhle.org/
This project is not affiliated with or endorsed by Apple Inc in any way. iPhone, iPhone OS, iOS, iPod, iPod touch and iPad may be trademarks of Apple Inc in the United States or other countries.
Only use touchHLE to emulate software you legally own.
touchHLE has been tested and is to be considered supported on x64 Windows and x64 macOS. It may be possible to build it on Linux and on some AArch64 systems (at least one person has succeeded), but we make no guarantees right now. If you're an Apple Silicon Mac user: don't worry, the x64 macOS build reportedly works under Rosetta.
Architectures other than x64 and AArch64 are completely unsupported, and this is unlikely to change.
It would be desirable to eventually support Android. That is probably not too much work.
Input methods:
Real development started in December 2022, and this is so far a single person's full-time passion project. There's only a single release so far and no promises can be made about the future. Please be patient.
Currently, the supported functionality is not much more than what the single supported app uses. The code tries to be reasonably complete where it can, though.
For pretty screenshots and video, check out the home page!
--scale-hack=
option. Resolutions up to circa 4K have been tested. No noticeable performance impact at small scales (2×, 3×).--y-tilt-offset=24
No other apps are known to work right now. This will surely improve in future. :)
First obtain touchHLE, either a binary release or by building it yourself (see the next section).
You'll then need an app that you can run. See the “App support” section above. Note that the app binary must be decrypted to be usable. Also note that you can't directly use .ipa
files right now, you'll need to unzip it (this may be easier if you rename it to end in .zip
first) and get the .app
bundle out of it.
There's no graphical user interface right now, so you'll usually need to use the command line to run touchHLE. For first-time users on Windows:
.app
bundle to the same folder as touchHLE.exe
..\touchHLE.exe "YourAppNameHere.app"
and press enter..\touchHLE.exe
to see the available options for things like game controllers.Currently language detection doesn't work on Windows. To change the language preference reported to the app, you can type SET LANG=
followed by an ISO 639-1 language code, then press Enter, before running the app. Some common language codes are: en
(English), de
(Deutsch), es
(español), fr
(français), it
(italiano) and ja
(日本語). Bear in mind that it's the app itself that determines which languages are supported, not the emulator.
Please see the BUILDING.md and CONTRIBUTING.md files in the git repo.
touchHLE © 2023 hikari_no_yume and other contributors.
The source code of touchHLE itself (not its dependencies) is licensed under the Mozilla Public License, version 2.0.
Due to license compatibility concerns, binaries are under the GNU General Public License version 3 or later.
For a best effort listing of all licenses of dependencies, build touchHLE and pass the --copyright
flag when running it.
Please note that different licensing terms apply to the bundled dynamic libraries (in touchHLE_dylibs/
) and fonts (in touchHLE_fonts/
). Please consult the respective directories for more information.
We stand on the shoulders of giants. Thank you to: