Une Radeon de 2007 fait tourner la PS3 (mal, mais elle tourne)
La carte graphique minimum dont on a besoin pour émuler une PS3 est sortie... après la PS3. C'est AniLeo et kd-11, de l'équipe RPCS3 , qui viennent de descendre le minimum officiel de l'émulateur à la Radeon HD 2900 XT, sortie en mai 2007. La PS3, elle, arrivait en France en mars de la même année.
Certes, c'est moins de deux mois d'écart mais pour émuler une console, en général, on a besoin de matériel largement postérieur.
RPCS3 accepte donc maintenant les Radeon HD 2000, 3000 et 4000, la première génération TeraScale d'ATi. Le plancher précédent, c'était la HD 5550. Deux conditions quand même : ça ne marche que sous Linux, avec le pilote libre Mesa r600. Windows reste dehors, le vieux pilote d'AMD étant trop bancal pour l'émulateur.
Maintenant, ce qui bloquait vraiment n'était pas la puissance. L'émulateur tenait pour acquis que toutes les cartes qu'il supporte savent faire un certain type d'écriture en mémoire. Ces vieilles Radeon ne savent pas, et personne n'avait prévu le cas, alors l'affichage plantait dès le démarrage, sur un pointeur nul... snif. Le correctif consiste donc à vérifier si la carte sait le faire, et à s'en passer quand ce n'est pas le cas. Et voilà, une pull request plus tard et c'était du tout bon pour la Radeon HD 2900 XT !
Reste que la plus musclée de ces vieilles puces, la HD 4890 de 2009 avec son gigaoctet de mémoire, donne des résultats à géométrie très variable. Sur les captures de l'équipe, OutRun Online Arcade tourne entre 52 et 59 fps, et Metal Gear Solid HD Collection oscille entre 45 et 60 selon la densité de la scène. Jusque-là, ça va.
Par contre, la démo de FIFA 08 tombe à 15 fps, et le jeu Rain à 15 aussi, et là c'est la cata. Cette HD 4890 est pourtant plusieurs fois plus puissante que le RSX, la puce graphique de la PS3, mais ça ne suffit pas, parce que l'émulateur lui refile du boulot que la console ne lui demandait pas, comme décoder les textures à la place du processeur. Et surtout, parce que la mémoire n'est pas rangée pareil.
Sur PS3, la mémoire vidéo et la mémoire système sont bien deux réservoirs séparés, sauf que les jeux ont le droit de piocher directement dans les deux. Tout est à portée de main. Sur PC, les deux sont vraiment cloisonnés, du coup l'émulateur passe son temps à recopier les données de l'un vers l'autre.
En descendant dans la gamme, la sanction est immédiate. La HD 3870 doit tomber à 273p, l'équivalent d'une PSP, pour afficher les jeux les plus simples. La HD 2600 XT, elle, plafonne à 12,9 fps sur Portal à cette même définition. Bref, ça ne sert plus à rien de descendre plus bas, celle-là est carrément plus faible que la puce de la console qu'elle est censée émuler.
Côté manipulation, il faut mentir au pilote. Ces cartes annoncent une version d'OpenGL trop ancienne, et l'émulateur refuse de démarrer tant qu'il la voit. Deux variables d'environnement au lancement suffisent à lui faire croire le contraire :
MESA_GL_VERSION_OVERRIDE=4.3 MESA_GLSL_VERSION_OVERRIDE=440 ./rpcs3.AppImage
Et si ça plante encore, l'équipe conseille de basculer le réglage Shader Mode sur "Legacy Recompiler".
Je vous parlais de RPCS3 en 2021 quand il servait surtout à rendre les vieux jeux plus beaux avec le FSR d'AMD et voilà maintenant qu'il sait les faire tourner sur du matériel de leur époque.
Le billet de l'équipe , que je vous invite à lire, détaille les réglages et les résultats carte par carte. Si vous avez une TeraScale au fond d'un placard, vous savez quoi en faire.
