touchHLE : un émulateur 32-bits pour les anciens jeux iPhone sur Mac et PC
- 👨 Medhi Naitmazi
- Il y a 1 an
- 💬 3 coms
Vous le savez probablement, les plateformes évoluent vite et les anciennes architectures matérielles sont régulièrement dépréciées puis abandonnées pour faciliter le travail des développeurs. Apple ne fait pas exception et le passage aux 64-bits avec l'iPhone 5S a rapidement exclu les jeux initiaux de l'App Store, tous compilés pour les appareils 32-bits.
C'est quoi touchHLE ?
TouchHLE est un émulateur de haut niveau (HLE) pour les applications iPhone OS (à l'époque on ne disait pas encore iOS). Il fonctionne sur les systèmes d'exploitation de bureau modernes Mac et PC et est écrit en Rust. Il fête les 15 ans du SDK de l'iPhone et a été créé par Hikari no Yume. Selon Hikari, il s'agit d'un projet qu'elle a créé pour elle-même et dans lequel elle a pris soin de n'utiliser aucun code écrit par Apple, afin d'éviter toute violation des droits d'auteur.
En tant que HLE, touchHLE est radicalement différent d'un émulateur de bas niveau (LLE) comme QEMU. Le seul code exécuté par le processeur émulé est le binaire de l'application et une poignée de bibliothèques ; touchHLE prend la place de l'iPhone OS et fournit donc ses propres implémentations des cadres du système (Foundation, UIKit, OpenGL ES, OpenAL, etc).
Pour l'instant, l'objectif principal du projet est de supporter les premiers jours d'iOS comme iPhone OS 2.x et principalement les versions 32-bits ultérieures, les applications 64-bits modernes n'étant pas un objectif et ayant peu de chance d'être priorisées en raison de leur complexité.
D'ailleurs, au lieu d'essayer de faire fonctionner l'ensemble du système d'exploitation de l'iPhone, Hikari s'est concentrée sur la création d'un outil permettant d'exécuter des applications spécifiques.
L'objectif de Hikari était de fonctionner le jeu classique Super Monkey Ball, qui a connu un grand succès dès sa sortie en décembre 2009. C'est pourquoi touchHLE a été optimisé pour émuler des jeux. L'outil peut simuler des touches sur l'écran, émettre des sons et même utiliser des manettes pour remplacer les commandes de l'accéléromètre qui étaient utilisées dans des jeux comme Super Monkey Ball.
J'ai été extrêmement prudente au cours de ce projet, peut-être plus prudente que la plupart des gens, pour ne pas violer les droits d'auteur d'Apple dans la mesure du possible. Je n'utilise aucun code écrit par Apple, j'ai pris soin d'éviter l'ingénierie inverse de l'iPhone OS lui-même. Et pour utiliser le projet, pour utiliser le code que j'ai écrit, vous n'avez pas besoin de violer les droits d'auteur d'Apple. Vous pouvez télécharger le projet, et il ne contient rien qui ne soit pas légal à distribuer.
Les jeux compatibles avec touchHLE
Passons désormais à ce qui nous intéresse le plus : la compatibilité. Pour ne pas faire durer le suspense plus longtemps, touchHLE fonctionne très bien, que ce soit sur les Mac Intel ou les Mac M1 / M2 (bien que non optimisé pour Apple Silicon à date). La magie de l'émulateur nous ramène à l'ère de l'iPod Touch et de l'iPhone 3G, où il ne manque que les HITs de l'époque.
On peut ainsi faire tourner des jeux comme Crash Bandicoot : Nitro Kart 3D, Touch & Go ou encore Super Monkey Ball, les trois jeux étant sortis à peu près en même temps. Bien entendu, l'outil ne peut pas faire tourner des jeux plus récents et plus complexes qui nécessitent un matériel avancé. Nous avons testé Mass Effect, Ragdoll 2 ou encore Resident Evil 4 HD, mais en vain. Vous trouverez une liste d'IPA sur le site https://archive.org.
Vous pouvez voir touchHLE en action dans une vidéo qui montre Crash Bandicoot Nitro Kart 3D, puis SMB. Et si vous souhaitez essayer l'émulateur vous-même, touchHLE est disponible sur le site officiel qui regroupe tous les liens utiles. Nous avons préparé un tutoriel en fin d'article.
Comment installer et utiliser touchHLE
Il n'y a pas d'interface graphique pour l'instant. Si vous n'êtes pas familier avec la ligne de commande, ces instructions peuvent vous être utiles sur macOS et Windows :
- Il faut d'abord télécharger le logiciel depuis le GitHub.
- Sur Windows, le plus simple est de glisser-déposer le fichier .ipa ou le dossier .app de l'application sur le binaire touchHLE.exe.
- Sur Mac, il faut passer par la ligne de commande. Récupérez un jeu puis glissez-le dans le dossier de l'émulateur. Ensuite, il suffit de tapez : ./touchHLE lenomdemonjeu.ipa (ou .app selon le cas) et de valider avec Entrée.
- Pour configurer les options, modifiez le fichier touchHLE_options.txt. Pour obtenir une liste d'options :
- Maintenez la touche Majuscule enfoncée et cliquez avec le bouton droit de la souris sur l'espace vide dans la fenêtre du dossier.
- Cliquez sur "Ouvrir avec PowerShell".
- Tapez .\touchHLE.exe --help et appuyez sur Entrée.
Actuellement, il ne semble pas avoir de support Linux pleinement fonctionnel. Mais maintenant qu'il y a une version disponible sur GitHub (actuellement 0.1.2), il ne fait aucun doute que d'autres développeurs prendront la relève.