Sans émulateur et malgré les 2 Go de RAM de tvOS : comment TVPort lance les jeux Nintendo Switch en natif sur Apple TV 4K

Super Mario Odyssey exécuté en natif sur Apple TV 4K via le fork TVPort de nxnative

L’exécution native de jeux console sur les puces Apple Silicon franchit une nouvelle étape inattendue dans le salon. Après l’arrivée remarquée de nxnative et Utsuro pour lancer les jeux Switch et Xbox One en natif sur iPhone et Mac, un développeur vient de publier TVPort 1.0 sur GitHub. Ce fork spécialisé du projet open-source nxnative (initié par seedds sous licence MIT) permet désormais de compiler et d’installer ses propres jeux Nintendo Switch directement sur un boîtier Apple TV 4K de 3e génération équipé de la puce A15 Bionic, le tout sans la moindre émulation processeur ni ligne de commande.

Une exécution ARM64 directe sur la puce A15 Bionic et l’API Metal

À l’image des travaux qui ont récemment permis de voir Mario Kart World tourner sur Mac via un fork de nxnative, TVPort ne fonctionne pas comme un émulateur classique. Puisque la première Nintendo Switch et la puce A15 Bionic de l’Apple TV 4K partagent la même architecture d’instructions ARM64, l’outil réécrit statiquement les binaires exécutables 64 bits (NSO) extraits de la cartouche ou du fichier numérique du joueur (formats NSP ou XCI accompagnés des clés prod.keys de sa console).

Le code machine du jeu s’exécute ainsi directement sur les cœurs CPU de l’Apple TV, sans recourir à la compilation à la volée (JIT) bloquée par Apple hors débogage. En parallèle, une couche de compatibilité de haut niveau (HLE) prend le relais des services système d’Horizon OS, tandis que les appels graphiques propriétaires NVIDIA NVN sont traduits et reconstruits vers l’API Metal d’Apple. Seule condition technique incontournable : le jeu doit disposer d’un exécutable 64 bits. Un titre comme Mario Kart 8 Deluxe dans ses versions antérieures à la mise à jour 2.0, compilé en 32 bits, ne peut donc pas démarrer.

Pour simplifier l’opération, TVPort fournit une application macOS clé en main (TVPort.app, compatible à partir de macOS 26.6 sur Mac Apple Silicon). Il suffit d’indiquer le dossier contenant son dump légal, de sélectionner l’Apple TV 4K jumelée en mode développeur sous Xcode et de cliquer sur le bouton Build & Install. La première conversion d’un jeu demande entre 30 et 60 minutes pour réécrire le code et préparer les shaders Metal, mais les compilations suivantes ne prennent plus que quelques minutes. Un simple compte Apple gratuit suffit pour signer l’application, avec un renouvellement requis tous les 7 jours en un clic.

Voir les disponibilités sur Amazon→

Comment TVPort contourne le mur des 2 Go de RAM et l’absence de formats BC sur tvOS

Faire tourner des productions Nintendo Switch sur tvOS représentait jusqu’ici un casse-tête matériel majeur pour deux raisons précises : la gestion draconienne de la mémoire vive et le décodage des textures.

Sur la console de Nintendo, un jeu dispose d’environ 3,2 Go de mémoire allouée. Or, sur l’Apple TV 4K, le gestionnaire système Jetsam de tvOS tue instantanément et sans préavis toute application dont l’empreinte mémoire anonyme (footprint) atteint la limite stricte de 2 097 Mo. Pour abattre ce mur sans nécessiter de compte développeur payant ni de privilège système particulier, TVPort déploie une astuce ingénieuse : la mémoire invitée du jeu est associée par mappage partagé à un fichier creux (sparse file, nommé guest_block dans hle_svc.c) logé sur le stockage flash de l’Apple TV. Comme tvOS ne comptabilise pas les pages mémoire adossées à un fichier dans le plafond des 2 097 Mo, le boîtier utilise jusqu’à 4 Go de stockage interne comme mémoire d’échange (swap) dynamique.

Mesure sur Super Mario Odyssey (Mode Portable, textures moyennes)Mémoire anonyme classiqueMémoire adossée sur fichier (TVPort)
Empreinte au démarrage879 Mio242 Mio
Seuil de fermeture forcée (Jetsam)Crash immédiat à 2 097 MioMaintenu sous 700 Mio
Pic d’empreinte mémoire (Footprint)2 097 Mio (application tuée)924 Mio (aucune fermeture)
Marge de sécurité restante sous tvOS0 Mio1 173 Mio
Allocation Metal maximale1 514 Mio2 298 Mio

Le second obstacle tient à l’architecture même de la puce A15 Bionic, qui ne décode pas matériellement les formats de compression de textures BC (Block Compression) utilisés par le GPU Tegra X1 de la Switch. Pour éliminer les saccades massives lors du chargement des scènes, TVPort décompresse les formats BC1 à BC5 directement via un kernel GPU et répartit le décodage des textures BC6H, BC7 et 3D sur l’ensemble des cœurs CPU. En parallèle, le paramètre DM_BC_MAX_DIM écarte les niveaux de mipmap les plus lourds (qui pèsent 4 à 8 fois leur taille d’origine une fois décompressés). Sur une scène chargée de 264 textures, le temps de traitement chute ainsi de 271 ms à seulement 47 ms.

Zelda Tears of the Kingdom à 30 FPS, Super Mario Odyssey à 60 FPS et gestion thermique

Grâce à ces optimisations spécifiques au boîtier d’Apple, trois titres majeurs du catalogue Switch ont déjà été validés sur une Apple TV 4K de 3e génération sous tvOS :

  • Super Mario Odyssey (version 1.3.0) : jouable de bout en bout lors des tests initiaux, avec un framerate maintenu entre 59 et 60 FPS en mode Portable et détails de textures moyens.
  • The Legend of Zelda: Tears of the Kingdom (version 1.4.2) : tourne à 30 FPS stables en mode Portable en abaissant l’échelle de rendu 3D à 75 % via l’option intégrée (passant de 15 à 30 FPS juste après la cinématique d’ouverture, avec un temps de rendu GPU d’environ 28 ms par image, tout en conservant des menus nets en pleine résolution).
  • Animal Crossing: New Horizons (version 1.0.0) : parfaitement fonctionnel, avec une île commune partagée entre les différents profils enregistrés sur le téléviseur.

L’Apple TV 4K de 3e génération étant dépourvue de ventilateur, la dissipation thermique passive constitue le véritable juge de paix lors des sessions prolongées. Sur un titre aussi exigeant que Tears of the Kingdom, le boîtier atteint l’état thermique critique (thermal state serious) en 20 à 40 secondes s’il tente de viser 60 FPS, ce qui pousse alors tvOS à diviser d’autorité la fréquence du GPU par trois et ralentit les temps de chargement. Pour éviter cet étranglement matériel, TVPort active par défaut l’option Hold 30 fps when the Apple TV is hot, qui stabilise la cadence à 30 images par seconde afin de diviser par deux la charge de calcul et limiter la chauffe.

Enfin, le développeur a résolu l’épineux problème de la volatilité du stockage sur tvOS. Comme le système d’exploitation d’Apple interdit l’écriture permanente dans le dossier Documents et purge régulièrement le cache (Library/Caches) lorsque l’application est fermée, TVPort compresse chaque sauvegarde à la volée via l’algorithme LZFSE quelques secondes après une sauvegarde en jeu. Une sauvegarde de 2 Mo de Super Mario Odyssey est ainsi réduite à 9 Ko et logée à l’abri dans les préférences système (NSUserDefaults). Tant que l’application TVPort est ouverte sur le Mac, elle récupère également une copie de sécurité de toutes les sauvegardes toutes les 5 minutes via le réseau local pour les archiver sur le disque ou dans iCloud Drive, tout en intégrant un écran d’accueil « Qui joue ? » capable de séparer les parties de 8 joueurs différents sur la même télévision.

Mon regard

Sur le plan purement architectural, le travail accompli sur TVPort est bluffant d’ingéniosité. L’Apple TV 4K de 3e génération renferme une excellente puce A15 Bionic, mais les restrictions logicielles de tvOS en faisaient jusqu’ici une prison dorée pour tout projet de portage lourd. Contourner la guillotine des 2 097 Mo de RAM imposée par Jetsam en détournant un fichier creux sur le stockage flash comme mémoire swap sans la moindre modification système ni jailbreak est une trouvaille de haut vol. Tout comme le fait de compresser les sauvegardes en LZFSE sous la barre des 10 Ko pour les cacher dans les préférences d’application afin de survivre aux purges automatiques de tvOS.

Il faut toutefois garder les pieds sur terre côté matériel : sans ventilateur pour évacuer les calories, la puce A15 Bionic finit inévitablement par chauffer dès qu’on lui demande de décoder des textures BC et de faire tourner Tears of the Kingdom, d’où l’obligation de brider le rendu 3D à 75 % et la cadence à 30 FPS. Mais voir un simple boîtier multimédia de salon exécuter nativement le code ARM64 de la Switch avec gestion multi-profils et sauvegarde automatique sur iCloud prouve à quel point l’écosystème né autour de nxnative progresse à une vitesse folle.

Suivez Pro-Gamer sur Discord
Recevez toutes nos actus gaming, les alertes de prix hardware et votez sur les sorties en direct avec la communauté.
Rejoindre le Discord →

Retrouvez Pro-Gamer en priorité sur Google

Ajoutez pro-gamer.fr à vos sources préférées pour retrouver nos guides et actus directement dans votre flux Google Discover et vos résultats de recherche.

Chaya "Chayane"
Rédigé par Chaya "Chayane"
🧠 Rédactrice Tech & IA 🗽 New York & Montréal

Américaine installée dans la périphérie de New York, Chaya « Chayane » a passé 5 ans à Montréal pour ses études d'ingénierie logicielle avant de revenir dans sa région natale. Développeuse Full-Stack et chercheuse en architectures de Deep Learning et d'IA, elle explore les réseaux neuronaux et l'optimisation algorithmique tout en concevant les outils de Retrocharting et Gamescharting aux côtés de Grimtag. Gamer depuis plus de 20 ans, collectionneuse passionnée de l'univers Nintendo et de la saga The Legend of Zelda, elle a arpenté Azeroth sur World of Warcraft avant de mettre son expertise technique au service de l'analyse vidéoludique.

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.