← Retour au blog
AiEnviron 8 min de lecture

AnyPS5 : relier les exécutables PS5 au lieu de les émuler

Publié le 18 oct. 2026
AnyPS5 : relier les exécutables PS5 au lieu de les émuler

Il existe une catégorie de projets qui cartonnent sur GitHub pour des raisons que personne ne prend la peine d'écrire. AnyPS5 en fait partie. Il trône en tête du classement hebdomadaire avec environ 16,000 nouvelles étoiles, frôle les 10,000 commits, et sa description en une ligne — « outil de portage automatique des exécutables PS5 vers Linux et Windows » — est de ces phrases qui font tendre la main d'un avocat vers un stylo et celle d'un ingénieur vers un marque-page.

Ce qui est intéressant, ce n'est pas qu'il existe. C'est ce qu'il refuse d'être.

Pas d'émulateur, pas de runtime, pas de console dans une fenêtre

La plupart des projets qui font tourner du logiciel console sur PC sont des émulateurs. Ils modélisent le matériel : le CPU, le GPU, l'agencement de la mémoire, le timing. Cette approche tient de la prouesse quand elle fonctionne, et du labeur de dix ans quand elle ne fonctionne pas, parce que chaque jeu devient une négociation avec le modèle incomplet d'une machine dont personne ne possède la documentation complète.

AnyPS5 prend un autre chemin. Il embarque un relinker qui convertit un exécutable PS5 au format natif de la plateforme cible, plus des implémentations des bibliothèques système prx auxquelles l'exécutable s'attend à être lié. Le README énonce la conséquence sans détour : pas d'émulation, pas de processus runtime séparé. Le code du jeu s'exécute en code natif sur votre machine, appelant des bibliothèques système réimplémentées comme il aurait appelé celles de Sony.

C'est une promesse bien plus difficile à tenir, et bien plus intéressante si l'on y parvient. L'émulation taxe chaque instruction. Le relink ne taxe que la frontière — les appels qui franchissent la limite entre le jeu et la couche système.

Le point qui décide de tout : les shaders

Un jeu, c'est essentiellement un tas de shaders déguisés en jeu. Un titre PS5 embarque des programmes GPU compilés pour une pile graphique précise ; une machine Windows ou Linux veut quelque chose que son pilote puisse avaler. AnyPS5 inclut un recompilateur de shaders qui produit du SPIR-V, et le dépôt précise que la sortie est validée avec SPIRV-Tools quand la compilation active ANYPS5_ENABLE_SPIRV_TOOLS.

Valider du SPIR-V n'est pas la même chose que faire tourner un jeu. Cela signifie que le module généré est structurellement légal, ce qui sépare « ça pourrait marcher » de « le pilote va le rejeter d'une manière très pénible à déboguer ». Quiconque a passé une soirée devant un écran noir connaît la valeur de cette vérification.

La page de progression du projet est prudente sur ce que ses chiffres signifient. La couverture des bibliothèques mesure la part des fonctions que le projet a déclarées à ce jour, et non la part de toutes les fonctions exposées par une PS5. C'est un cadrage honnête, et cela veut aussi dire que le pourcentage bougera à mesure que l'équipe découvre l'étendue de ce qu'elle ignore.

Comment il échoue, exprès

Une décision de conception en dit long sur la maturité d'une base de code. Les états non pris en charge ou inattendus lèvent une std::runtime_error ; le message part sur stderr et le processus se termine.

Cela paraît brutal, et c'est le bon choix. L'alternative — deviner, continuer, corrompre l'état — produit un crash trois images plus loin, à un endroit qui n'a rien à voir avec le vrai bug. Un projet à ce stade a besoin d'échecs bruyants, précoces et précis. Un commit de la mi-octobre corrige justement un blocage de test sous Windows causé par ce genre de problème d'ordre : sous Windows, un test qui retourne de main passe par exit, lequel tue tous les autres threads avant que les destructeurs statiques ne s'exécutent au détachement de la DLL, et un destructeur qui attend alors un logger mort ne revient jamais. Le correctif enveloppe main sous MinGW et termine le processus via la libc. Ce n'est pas un travail glamour. C'est le travail qui sépare une démo d'un outil.

Les entrées, et les petits détails qui comptent

Les manettes mappées par SDL fonctionnent, sticks analogiques et gâchettes compris. Clavier et souris se configurent via un fichier anyps5-input.ini. Un convertisseur web traite les fichiers en local, donc rien n'est envoyé sur un serveur.

La compatibilité jeu par jeu n'est pas tenue dans le README. Elle vit sur une carte de blocages communautaire construite à partir de données GitHub publiques, avec des fils par titre dans les discussions du dépôt pour les rapports de test. Mieux vaut le comprendre avant de télécharger quoi que ce soit : le projet suit l'endroit où chaque titre se bloque, pas une liste verte des jeux qui fonctionnent.

La phrase juridique qu'il faut vraiment lire

L'avertissement indique que le projet vise l'interopérabilité, la recherche, la préservation et la compatibilité. Il précise qu'il n'inclut, ne distribue et n'exige aucun logiciel sous copyright, micrologiciel, clé cryptographique ou bibliothèque propriétaire. Et il rappelle que les utilisateurs sont responsables de s'assurer que les binaires qu'ils emploient ont été obtenus et utilisés légalement.

C'est une ligne tracée avec soin, et c'est tout l'enjeu. L'outil lui-même est en GPL-2.0-only et ne contient aucune donnée de jeu. Ce que vous lui donnez à manger est votre problème, et dans la plupart des juridictions, « je l'ai relinké moi-même » n'est pas une défense qui ait été testée devant un tribunal.

Où se situe réellement la frontière

Le métier d'un relinker, c'est la résolution de symboles. L'exécutable réclame des fonctions par leur nom ; l'outil doit garantir que chacun de ces noms se résout en quelque chose d'appelable au chargement, avec la bonne convention d'appel, sur une machine qui n'est pas celle pour laquelle le binaire a été compilé. Un seul oubli et le processus meurt au démarrage, généralement avec un message qui nomme une bibliothèque et rien d'autre.

C'est pourquoi la page de couverture du projet est le document le plus honnête du dépôt. Elle rapporte la part des fonctions déclarées qui sont implémentées — pas la part de la surface d'API totale d'une PS5. L'écart est énorme, et cela signifie que le pourcentage baissera à mesure que l'équipe découvre tout ce qu'elle ne sait pas. La plupart des projets cachent cette dynamique. Celui-ci place une note à côté du chiffre.

La même logique explique le volet GPU. La traduction de shaders n'est pas un problème unique ; c'est un problème différent par shader, et un titre qui rend correctement pendant vingt minutes avant de heurter un chemin d'instruction non traduit plantera d'une façon qui ressemble à un bug de pilote. L'étape de validation SPIR-V attrape tôt les problèmes structurels. Elle ne peut pas attraper les problèmes sémantiques, et le projet ne prétend pas le contraire.

La vraie question n'est donc pas « est-ce que ça marche ». C'est « où est-ce que mon titre s'arrête », et la carte des blocages y répond jeu par jeu, avec les issues ouvertes attachées.

Pourquoi ça tend maintenant

La préservation a le vent en poupe. Disques qui se dégradent, boutiques qui retirent des titres, serveurs éteints : l'argument pour garder les logiciels exécutables a cessé d'être sentimental pour devenir pratique. Un relinker est un outil de préservation d'une manière dont un émulateur n'en est pas un : il n'a pas besoin de modéliser une machine, seulement de satisfaire l'interface que le logiciel attend.

Il y a aussi une explication plus simple. Le projet est énorme, les commits tombent par centaines, et une bonne partie est visiblement écrite avec des agents de code dans la boucle — le dépôt contient même un fichier AGENTS.md listant les règles que les agents ont tendance à enfreindre. Regarder un projet de 10,000 commits se construire en deux mois et demi relève du spectacle, et cela explique une courbe d'étoiles qui doit peu au nombre de jeux qui démarrent.

Qu'en faire

Si vous avez un exécutable obtenu légalement et une soirée libre, l'attente honnête est celle-ci : vous apprendrez énormément sur la façon dont un titre console moderne est assemblé, et vous ne finirez probablement pas un jeu. Lisez d'abord la carte des blocages de votre titre. Lisez le document sur la dette technique avant d'ouvrir une issue. Et lisez la licence avant de diffuser quoi que ce soit construit avec cet outil.

Le point de fond reste vrai quel que soit le nombre de titres qui finiront par démarrer. Pendant vingt ans, la réponse à « ce logiciel console peut-il tourner ailleurs » a été « seulement si quelqu'un émule la machine ». AnyPS5 est une tentative sérieuse d'une deuxième réponse, et le fait qu'elle s'écrive en public, à cette vitesse, avec autant de plomberie sans gloire, est précisément la raison pour laquelle il mérite sa place dans les tendances.

Articles associés