Apple recently began allowing game console emulators on the App Store. While we’ve seen emulators make an appearance in the App Store (with emulator Delta leaping to the top of the App Store charts almost overnight), there is at least one emulator that won’t be making an appearance anytime soon.
The developers of DolphiniOS have explained in a blog post that Apple’s unwillingness to allow apps using JIT means the GameCube and Wii emulator won’t be made available in the App Store for now.
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.
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.
Apple has denied the developers’ request to use JIT, likely as a security precaution.
It’s hard to tell exactly why Apple is so hesitant to open up JIT support. It’s possible that they consider it to be a security risk. (Looking at the various restrictions and limitations placed on JavaScript JITs for alternative web browsers in Europe, they do appear to be worried about its potential to be abused.)
In a pair of videos, DolphiniOS illustrates just how essential JIT is to the performance of the emulator. To best compare, hit play on both videos at the same time:
The full blog post is available here.