Bien qu’Apple autorise depuis peu les émulateurs sur l’App Store, l’un des plus populaires d’entre eux va rester sur le pas de la porte. Les créateurs de DolphiniOS ont confirmé qu’ils ne lanceront pas leur émulateur de jeux GameCube et Wii sur iOS. Pourquoi ce blocage alors que d’autres se préparent à arriver sur iPhone ? La raison est technique.
Les développeurs l’avaient déjà mentionné en décembre dernier, le problème vient du fait qu’Apple interdit toujours aux applications (hors navigateurs) d’utiliser la compilation à la volée, ou Just-In-Time compilation (JIT), un procédé indispensable à DolphiniOS pour offrir de bonnes performances.
Comme nous l’avions expliqué dans un précédent article, une des fonctions de base d'un émulateur est de lire du code qui a été pensé pour un jeu d'instructions précis (par exemple du code PowerPC dans le cas de Dolphin) et de l'exécuter sur un autre jeu d'instructions (ARM64 pour les iPhone). La solution de base consiste à interpréter le code, c'est-à-dire traiter chaque instruction une à une. C'est une solution efficace, mais lente. Et pour émuler une console du milieu des années 2000 sur un smartphone, impossible d'être lent.
Avec JIT, le fonctionnement est le même que pour Rosetta 2 : le code est converti au lancement (et mis en cache) avant l'exécution, ce qui permet d’obtenir un résultat bien plus efficace. Les développeurs le prouvent en comparant Mario Kart exécuté avec ou sans JIT sur un iPhone 15 Pro. Avec JIT, le jeu s’exécute normalement. Sans JIT, le titre est tellement lent qu’il est injouable.
Les développeurs déclarent avoir fait une demande d’interopérabilité à Apple pour pouvoir exploiter JIT (une procédure possible dans le cadre du DMA), mais l’entreprise a refusé cette demande il y a quelques semaines. C’est sûrement par souci de sécurité qu’Apple restreint cette capacité technique aux navigateurs uniquement, car JIT revient à créer du code natif qui ne peut pas être vérifié.
En l’état actuel des choses, les créateurs de DolphiniOS préfèrent ne pas distribuer du tout leur émulateur sur l’App Store plutôt que de distribuer un émulateur aux performances médiocres.