On Friday, April 5, Apple upended years of precedent by updating its App Review Guidelines to allow retro game emulators on the App Store. Less than two weeks later, Riley Testut made his popular Delta emulator available on the App Store, bringing emulation of NES, Game Boy, N64, and DS games to the iPhone. Delta is likely just the beginning of a huge wave of iOS emulation apps, but you shouldn’t hold your breath for modern Nintendo consoles.
Last Friday, the creator of DolphiniOS published a blog post explaining why the GameCube and Wii emulator is unlikely to make its way onto the App Store anytime soon.
First and foremost, it’s worth noting that Dolphin is the most popular and capable open-source emulator for GameCube and Wii games. The app is available on Windows, macOS, Linux, and Android, but developer OatmealDome created a fork for iOS in 2019. Currently, the only way to download it is by jailbreaking an iPhone or using the AltStore.
So, now that AltStore has officially launched as a third-party app store in the EU and retro game emulators are allowed on the App Store, where is DolphiniOS?
As it turns out, one of the key technologies that makes GameCube and Wii games run smoothly on an iPhone is still not allowed by Apple, even with the recent changes.
“The GameCube and Wii have a PowerPC-based CPU inside them. All modern Apple devices use an ARM-based CPU. It isn’t possible to directly run PowerPC code on an ARM CPU, and vice versa. Therefore, if we want to run a GameCube or Wii game on an iPhone, it is necessary to translate the game’s PowerPC code to ARM so that the CPU can understand it,” explained OatmealDome. “Dolphin uses something called a Just-in-Time (JIT) recompiler to achieve this. Whenever the emulated console wants to run game code, Dolphin will use its JIT to translate the PowerPC code to ARM, and then execute the results.”
Here’s the problem: Apple hardly lets any iOS apps to use JIT recompilers. The only exceptions are Safari and third-party web browsers in Europe. The team submitted a DMA interoperability request to Apple for JIT support anyway but was denied.
OatmealDome notes that it is possible to run DolphiniOS without JIT by using an interpreter. But here’s what it looks like running on an iPhone 15 Pro Max:
The GameCube game looks virtually unplayable, so there wouldn’t be much point in releasing it. On the other hand, here’s the same phone running DolphiniOS with JIT enabled:
Unless Apple changes its mind about restricting the usage of JIT recompilers, GameCube and Wii emulation is basically dead in the water. As thrilled as Nintendo might be about that, it’s a bummer for fans of retro emulation. That said, the fact that Apple allows emulators at all is still pretty shocking, so who knows what will happen next?