Enlarge / Don’t expect to see this on the iOS App Store any time soon. (credit: OatmealDome)
[/url] Last week’s release of the Delta emulation suite finally gave iOS users easy, no-sideloading-required access to classic Nintendo game emulation up through the Nintendo 64 era. When it comes to emulating Nintendo’s subsequent home consoles on iOS, though, some technical restrictions imposed by Apple are making it difficult to get a functional emulator on the App Store.
In a recent blog post, DolphiniOS developer (and longtime Switch hacker) OatmealDome explains how a Dolphin code fork—which ports the popular GameCube and Wii emulator to Apple’s smartphone OS—uses just-in-time (JIT) compilation to translate the PowerPC instructions from those retro consoles into ARM-compatible iOS code. But Apple’s App Store regulations against apps that “install executable code” (Section 3.3.1B) generally prevent JIT recompilation on iOS, with very limited exceptions such as web browsers. That restriction may have some valid security reasoning behind it, but it can also get in the way for developers of tools like third-party browser engines (except recently in the EU).
While MacOS developers can make use of an explicit entitlement to allow JIT recompilation in an app, that exception doesn’t apply to iOS developers. And while alternative App Stores and sideloaded apps (including DolphiniOS) have discovered various ways to enable JIT compilation on both jailbroken and stock iOS devices, these workarounds can get quite arcane and occasionally break with new iOS releases.