Why a GameCube/Wii emulator may not be possible on the iOS App Store

Don't expect to see this on the iOS App Store any time soon.
Enlarge / Don’t expect to see this on the iOS App Store any time soon.

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.

OatmealDome asked for an exception to Apple’s JIT restrictions under the European DMA, but “Apple denied the request a few weeks ago.”

Why JIT is needed

GameCube and Wii emulators like Dolphin are technically possible without JIT recompilation, of course; a simple interpreter can also translate the PowerPC code without the need for full recompilation. But OatmealDome writes that the processing overhead involved means “unfortunately, the interpreter is many times slower than the JIT recompiler.” As evidence, OatmealDome shared video of “interpreted” GameCube emulation running unplayably slowly on an iPhone 15 Pro Max and contrasted it with footage of a JIT-recompiled example that easily runs at full speed.

Without JIT recompilation, an “interpreted” version of Dolphin runs incredibly slowly, even on a high-end iPhone.

“While we could submit DolphiniOS to the App Store with just the interpreter, we would likely get endless complaints from users about the poor performance,” OatmealDome wrote. “App Review might also just reject us anyway because the app is unusable.”

Emulation aficionados may also remember that a planned Steam version of Dolphin was pulled from that storefront after Nintendo expressed concerns to Valve over the emulator’s embedding of the Wii Common Key. That means that any App Store-approved version of Dolphin might have to navigate some tricky legal waters in addition to Apple’s technical restrictions.

It’s also worth mentioning that Apple’s recent App Store opening for game emulation only specifically mentions “retro game console emulators,” without clarifying a specific cutoff for what makes a console “retro.” Without getting too in the weeds on that contentious semantic debate, we highly suspect that the Wii, which launched nearly 18 years ago, would fit under even the strictest “retro” definition Apple might want to enforce.

Listing image by Dolphin Team

Source link

About The Author

Scroll to Top