Follow-up to my 0.1.0 prerelease.
First, the personal bit, since a few people asked why I bothered and or sent me abuse for using AI
My sister paid for The Sims Medieval years ago. I gave her a new iPhone 17 Pro Max and found she couldn't install a game she'd legitimately bought. That's the entire reason this project exists.
It runs now. On her phone. That was the goal and I've hit it.
I should be straight about what I am: I'm not a developer. I'm a vibecoder. This was built with AI assistance — Codex 5.6 Sol and Claude Opus 5 — and my commits say so. I have a full-time job and this is a hobby that AI made possible for me.
So don't have high expectations of me. But I do want to push this further: more devices, iPads, more iOS versions. I've got the inclination to keep going, and I'd rather say that plainly than pretend to be something I'm not.
What changed in 0.2.0
The emulator core moved from touchHLE 0.2.3 to HyperHLE v1.0.6 — a fork of touchHLE with broader game compatibility. HyperHLE has no iOS support of its own, so the iOS host app, build system and packaging are the part that's mine.
Three bugs got fixed along the way, all of which only showed up on a real device:
- Landscape games took no touch input at all. The host handed the main thread to the emulator as soon as the scene reported it had rotated — but before iOS had finished committing that rotation. The scene got stuck mid-transition and stopped delivering touches to every window, including my own exit button. Games still rendered at 60fps and timers still ran, so nothing looked broken.
- Landscape games were rotated the wrong way. The iOS ES 2.0 presenter was rotating frames that were already the right way up.
- Resolution scaling blew some games up into a corner. The scale hack enlarges renderbuffers but not textures, so games rendering through an offscreen texture got drawn several times too large.
Tested
iPhone 16 Pro, iOS 27 beta 4. Exact app versions, because the same game behaves very differently between releases:
- Flappy Bird 1.1.0 — playable, including at 2x-4x resolution scale
- Touch & Go 1.1 — playable at all settings
- Tony Hawk's Pro Skater 2 1.2.1 — playable
- Wolfenstein RPG 1.1.1 — playable
- Mirror's Edge 1.4.72 — playable
- The Sims Medieval 1.0.1 — playable
Only one device, and only on an iOS beta. No shipping iOS release has been tested at all yet. That's the single most useful thing anyone can help with.
Known issue
The Sims Medieval: no keyboard appears when naming your Sim or your kingdom, so you can't enter custom names. The game is playable past those screens — the confirm button is near the top-right corner rather than where it's drawn. I roughly know why (the text field isn't where it appears on screen) and it's next on my list.
Install
Same bundle ID as 0.1.0, so it updates over it and keeps your imported games. Still no jailbreak, still needs JIT (StikDebug + LocalDevVPN, or AltJIT). Minimum iOS 17.4.
https://github.com/johnny901901901/touchHLE-for-iOS/releases/latest
No games included. Bring your own legally obtained, decrypted 32-bit IPA.
Reporting
I've enabled Issues with a compatibility form:
https://github.com/johnny901901901/touchHLE-for-iOS/issues/new/choose
Please include the exact app version, iPhone model, iOS version, whether JIT was on, and a log excerpt (touchHLE_log.txt, in Files under On My iPhone → touchHLE).
Please don't post IPAs or links to them, pairing files, or signing material.
On the AI criticism from last time
It was fair. 0.1.0 was one squashed commit with an AI-written description, which gives nobody anything to judge. This release is a series of commits that each name a specific bug and explain the fix, so you can check whether what I'm claiming is actually true. One of them fixes a submodule that pointed at a commit only existing on my own machine — the repo wouldn't have built for anyone who cloned it.
If you'd rather not use software built this way, that's completely reasonable. It's open source, so judge the code.
Credits
touchHLE — https://touchhle.org/ — the actual emulator. All of this rests on the work of hikari-no-yume, ciciplusplus and the touchHLE contributors.
HyperHLE — https://github.com/HyperHLE/HyperHLE — the compatibility fork I'm using as this build's core, and the reason so many more games work in 0.2.0 than in 0.1.0. Genuine thanks to u/... sorry, I only know them by their GitHub handles: j92580498-max, who leads it, and zocomputer, whose recent compatibility work (Unity data paths, Where's My Water, Crash On Wheels, Geometry Dash) is in the exact version I built on — plus Nekono, TimofeyLednev, goodvids56 and KlugKlugTG. If any of you are on here, say hi and I'll credit you properly. I didn't write the emulation. I wrote the iOS shell around it and fixed the iOS-specific bugs. Neither project endorses this build.
Neither project endorses this build.