❌

Vue lecture

AnyPS5 - En route pour la recompilation de jeux PS5

Une PS5, au fond, c'est juste un PC comme les autres. Elle a un processeur AMD x86-64 (c'est du Zen 2, en gros un Ryzen) ainsi qu'une puce graphique RDNA 2, ce qui est grosso merdo la même came que ce qu'il y a dans votre tour de gamer.

Et pour ça que le pari d' AnyPS5 est possible ! L'objectif de ce projet c'est qu'au lieu de lancer un n-ième émulateur qui "imite" la console pendant que vous jouez, l'outil prend le code binaire d'un jeu PS5, le décompile et le recompile intégralement sous la forme d'un vrai programme Linux ou Windows, que votre système peut ensuite lancer comme n'importe quel autre.

Pour y parvenir, ce projet repose sur 2 briques. D'abord il y a un "relinker", qui lit l'exécutable du jeu et le reconstruit au format natif de la cible, c'est à dire ELF pour Linux ou PE pour Windows. Mais comme le jeu continue d'appeler des fonctions système PS5 que votre PC ne connait pas, AnyPS5 réimplémente les bibliothèques de Sony, libc, libkernel et toute la famille libSce, en bibliothèques dynamiques que le chargeur de votre OS peut alors lier au programme converti.

Résultat, le jeu tourne comme un processus normal, sans runtime à part... C'est beau non ?

Mais tout n'est pas réécrit d'avance pour autant puisque côté graphique, le jeu envoie ses files de commandes comme s'il causait à la puce AMD de la console, et c'est donc la version maison du projet de libSceAgcDriver qui les interprète pendant l'exécution. Les shaders RDNA, eux, sont recompilés en SPIR-V pour Vulkan quand le jeu les demande, puis rangés dans un cache sur le disque pour les lancements suivants. Donc ça veut dire que certes, le code processeur tourne en natif, mais la partie GPU, elle, est traduite à la volée.

La conversion elle-même, après c'est juste une ligne de commande. Vous indiquez l'exécutable du jeu et son dossier sce_module côte à côte, et vous choisissez le nom du binaire cible (le .exe quoi) :

relinker source/input.elf app.elf
relinker --windows source/input.elf app.exe

Sur un processeur Intel, ajoutez le paramètre --to-intel, qui convertira les instructions propres aux puces AMD qu'il connaît.

Et quand le jeu touche à quelque chose que le projet ne gère pas encore, AnyPS5 lève une exception, en affiche la raison dans le terminal et le processus s'arrête. Ça veut dire qu'un jeu qui boote n'est pas forcément un jeu auquel vous pourrez jouer jusqu'au bout.

Et justement, qu'est-ce qui va jusqu'au bout ?

Hé bien la liste de compatibilité officielle est trèèès courte puisqu'elle ne contient qu'un seul jeu : Dreaming Sarah. C'est un jeu de plateforme 2D sorti sur Steam en 2015 et vendu moins de 5 € (1,49 € en promo au moment où j'écris).

Sous Windows, après recompilation, il est noté "in game, playable", à 60 images par seconde sur une GTX 1050 Ti et 36 sur une puce Intel HD 620 et sous Linux, on ne connait pas encore les stats même si l'ELF Linux a été généré.

Bien sûr, comme toujours avec ces projets de recompilation ou d'émulation, aucun firmware, ni jeu, ni clé n'est fourni. Et comme vous le savez, pour déchiffrer un jeu et l'extraire, il faut un exploit du firmware en cours, autrement dit une console débridée. Donc ça limite un peu les ambitions de pas mal de monde. Mais ça n'en reste pas moins possible pour qui a un peu de volonté (et une PS5 jailbreakée).

Sachez que ce projet AnyPS5 nécessite une carte graphique Vulkan 1.1, que les manettes Xbox ou PlayStation reconnues par SDL fonctionnent avec sticks et gâchettes analogiques, et que le clavier se remappe sans souci dans un fichier anyps5-input.ini que vous devez éditer.

Voilà... Les émulateurs PS5 dont je vous ai parlé, recréent la console autour du jeu alors qu'AnyPS5 tente de recréer le jeu pour n'importe quelle machine. On verra qui y parvient massivement en premier, mais en tout cas, la course à l'émancipation de la PS5 et de ses jeux est lancée !

Source : AnyPS5

  •  

DOOM - Le moteur de 1993 bouffé par DLSS 5

Dans la série des trucs qui ne servent à rien, mais qui sont bien cools quand même, je vous présente ce bon vieux DOOM de 1993 qui vient de passer au DLSS 5. L'auteur de cette nouvelle prouesse, c'est Nikolai Zhivotenko qui a publié DOOM + DLSS 5 , un port Windows 64 bits de Linux DOOM 1.10 qui conserve le moteur d'origine. Le jeu produit ainsi toujours son image en 320x200 pixels, puis celle-ci est reconstruite dans une fenêtre de 1280x800 en Direct3D 12 par l'upscaler de votre choix.

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

Un upscaler moderne ayant besoin d'autre chose que des pixels pour travailler, le moteur modifié doit inscrire à chaque image la profondeur, les normales et le mouvement, et les touches F2 à F4 affichent ces trois vues à la place du jeu.

L'auteur en a même fait un petit banc d'essai, avec un exécutable par mode : DLSS Ray Reconstruction, DLSS Super Resolution en preset K (DLSS 4) ou L (DLSS 4.5), FSR 2.2 d'AMD, Anime4K, et le bon vieux nearest 4x pour comparer. Ray Reconstruction se contente d'ailleurs de buffers factices (spéculaire noir, rugosité à 1), puisque DOOM n'a aucun éclairage path-tracé à lui donner.

Un couloir de DOOM avec l'étiquette "DLSS 5 On" en bas à gauche et trois vignettes de données en haut de l'image (capture fournie par l'auteur du port)

Et le DLSS 5 dans tout ça ?

Eh bien le mode 5 commence par la même passe que le 4.5, avec le SDK officiel de NVIDIA et ensuite seulement, si l'addon RenoDX du DLSS 5 est placé à côté de l'exécutable, une seconde passe laisse le Neural Rendering retoucher l'image. Et ce Neural Rendering là ne vient pas du port mais de DLSS5-Swapper , un outil communautaire sous licence MIT qui injecte le modèle de NVIDIA dans les jeux. Bref, c'est indispensable comme addon pour passer d'un rendu 4.5 à un rendu 5.

Côté NVIDIA, le DLSS 5 dont je vous parlais en mars n'est sorti que le 3 septembre, avec NBA 2K27, sur les RTX 50 et GeForce NOW mais il avait fuité juste avant via des fichiers trouvés dans une mise à jour de ce même jeu. Du coup, les moddeurs l'ont collé dans The Witcher 3 ou Cyberpunk 2077 sans attendre.

Quant au résultat sur DOOM, n'espérez pas avoir du photoréalisme... niet, le modèle n'a pas été pensé pour des sprites en 320x200, et d'après Wccftech, certains détails reconstruits peuvent même ressortir plutôt bizarrement...

Une créature face au joueur, avec la même étiquette "DLSS 5 On" et mêmes vignettes en haut (capture fournie par l'auteur du port)

Maintenant pour tester, il vous faudra un Windows 64 bits, une GeForce RTX, et compiler tout ça vous-même avec le script build.cmd du dépôt. Vous déposez un IWAD dans le dossier wads (celui de Freedoom fait l'affaire), puis vous déclarez le dossier du mode 5 dans Swapper , en route Native. Côté carte, Swapper annonce les RTX 20 à 50 pour ses routes à base de ReShade, dont fait partie l'addon RenoDX , mais prévient quand même que la compatibilité n'est pas garantie.

Et si vous voulez juste comparer, le script screencast-windoom.cmd rejouera la même démo dans chacun des modes et peut même exporter chaque image en PNG.

Amusez-vous bien !

  •  

The Legend of Zelda: Majora's Mask enfin en version européenne sur PC et Android

Vous le savez, The Legend of Zelda: Majora's Mask existe en version européenne, avec une ROM PAL 1.1 qui embarque 4 langues (anglais, français, allemand et espagnol), mais 2Ship2Harkinian , le portage PC du jeu dont je vous ai déjà parlé, ne reconnaît que les 2 versions américaines.

C'est pour cela qu'un fork non officiel a décidé de lever cette limite en permettant une lecture de la ROM version PAL 1.1 directement depuis Windows, Linux et Android !

Bien sûr, le fork garde le support des ROM américaines, et comme toujours pour ne pas tomber dans le piratage, il faudra au premier lancement du jeu, désigner l'emplacement de votre ROM à vous (que vous devrez avoir normalement rippé vous-même depuis votre propre version pour rester dans les clous plutôt que dans choper une sur un site random ^^). Ensuite, le jeu génèrera localement son fichier de données (mm.o2r), et les lancements suivants démarreront directement dans le jeu.

Le menu Options sur Android, avec le français sélectionné parmi les quatre langues de la ROM PAL 1.1 (capture fournie par l'auteur du fork)

Sous Windows, il faut donc décompresser le ZIP et lancer 2ship.exe, en gardant 2ship.o2r à côté. Sous Linux, c'est une archive et un exécutable 2s2h.elf, avec le même fichier à ses côtés. Sur Android, il faut l'APK (ARM64 uniquement, Android 7 et OpenGL ES 3.0 minimum), et la version mobile ajoute des commandes tactiles qu'on peut masquer, un menu redimensionnable et un dossier de données déplaçable sur carte SD.

Pas de build macOS, en revanche, alors que le projet d'origine en propose un et ça, c'est un méga snif pour moi.

Alex, l'auteur de ce fork a aussi ouvert une demande de fusion chez 2Ship pour intégrer tout ça au projet d'origine, j'espère que ça passera.

Et après, peut-être qu'il pourra s'attaquer à Zelda 64 Recompiled , l'autre portage de Majora's Mask dont je vous ai parlé, car lui aussi n'accepte que la ROM américaine..

À récupérer sur la page des releases du fork .

  •  

Il a entièrement recodé 8 vieux OS en HTML + un VB6 qui sort des .exe.

Wiesław Šoltés , un développeur open source spécialiste de .NET et d'Avalonia, a publié d'un coup sur son Github, plusieurs reconstitutions de Windows 3.1, 95, 98, Me, 2000, XP, Vista et même Mac OS 9 directement utilisables dans le navigateur ! Vous cliquez sur le lien, la page se charge en moins de deux secondes, et hop, vous voilà devant le Program Manager, le menu Démarrer ou le Finder.

Les huit bureaux au démarrage : Windows 3.1, 95, 98 et Me en haut, 2000, XP, Vista et Mac OS 9 en bas

Et ce ne sont pas des coquilles vides comme on le voit parfois mais de vrais OS complets. Le Windows 3.1 compte 28 applications rangées dans les groupes d'origine du Program Manager, XP en a 56, et Windows Me monte à 60 app en comptant les panneaux de configuration. Donc si vous n'avez jamais connu ces machines en vrai parce que vous êtes un.e petit.e jeune, c'est l'occasion de tripoter vous-même ce que vos aînés vous racontent depuis des années.

Le Démineur de Windows 3.1, ouvert par-dessus les groupes du Program Manager

Toutes les applis d'un même bureau partagent en plus un disque virtuel. Ainsi, sous Windows 95, un document enregistré dans Notepad apparaîtra dans l'Explorer tout comme dans l'invite MS-DOS, et l'interpréteur de commandes gère les redirections et les jokers (les *) sans soucis.

Voici par exemple le début d'une petite séquence que propose le README, à taper dans une invite de commande MS-DOS pour créer un fichier :

CD "C:\My Documents"
ECHO Hello from DOS>hello.txt
TYPE hello.txt
DIR /B *.txt

L'invite MS-DOS de Windows 95 après la séquence ci-dessus : hello.txt est créé, lu puis listé

Côté jeux, XP propose le Spider Solitaire, une Dame de pique contre trois adversaires pilotés par l'ordinateur et un flipper dont le tableau original, s'inspire de Space Cadet. Vista, quant à lui, ressort Chess Titans, Mahjong Titans, Purble Place et InkBall avec ses gadgets sur le côté, et Mac OS 9 a son Finder spatial, ses 33 tableaux de bord et sa Graphing Calculator.

Le flipper de Windows XP, une table originale inspirée de Space Cadet

Chess Titans sous Vista, avec l'horloge, le diaporama et le calendrier en gadgets

Mac OS 9 et sa Graphing Calculator, qui trace ici y = sin(x)

Maintenant, ce qui m'a intrigué, c'est comment ça peut démarrer aussi vite ???

Eh bien tout simplement parce que rien n'est émulé ! Par exemple, un émulateur comme v86 , dont je vous parlais en 2022, traduit à la volée le code machine x86 en WebAssembly pour faire tourner Windows lui-même dans le browser. Mais ici, il n'y a ni noyau Windows ni processeur virtuel, car chaque fenêtre, chaque menu et chaque application ont été réécrits en HTML, CSS et modules JavaScript. Les fenêtres sont donc des éléments de page web ordinaires, que le navigateur affiche comme n'importe quel site.

Le code, lui, est volontairement dépouillé, avec par exemple Windows 3.1 qui n'a besoin d'aucun framework ni d'aucun bundler, ou encore le bureau de Windows 95 qui s'affiche via un simple python3 -m http.server.

Seuls le fond d'écran, les économiseurs et certaines opérations de dessin passent par le GPU en WebGPU, avec un repli sur WebGL2 puis sur Canvas 2D si votre machine ne suit pas. Et sur Windows 3.1 comme sur Mac OS 9, l'image ne se redessine que quand quelque chose change, donc un bureau au repos ne relance aucun rendu au niveau GPU.

Pour le poids, pareil, c'est super léger. Cache désactivé, chaque "OS" charge très peu de data : 183 Ko pour Windows 95, 180 Ko pour Mac OS 9 et 306 Ko pour Windows 2000. Et XP et Vista montent à 4,5 et 2,5 Mo. À titre de comparaison, DrawingSpace , un éditeur de diagrammes façon Visio du même auteur, écrit en C# et compilé en WebAssembly avec Uno Platform, en réclame 17 Mo.

DrawingSpace, l'éditeur de diagrammes du même auteur, écrit en C# et compilé en WebAssembly

Le revers de la médaille, vous l'aurez compris, c'est que vous n'avez pas Windows sous la main, mais sa reconstitution. Aucun programme d'origine ne s'exécute, et l'équivalence au pixel près n'a pas été établie. Pour montrer à quoi ressemblait un bureau à quelqu'un qui ne l'a pas connu, ou pour choper un peu de code afin de développer votre propre bureau Windows HTML pour y mettre votre site web, c'est parfait. Mais pour relancer un logiciel d'époque tel qu'il était, faudra passer par v86, par Infinite Mac pour Mac OS 9, ou encore par RetroTick , qui exécute les vrais .exe Windows et DOS.

Mais le plus beau morceau de tout ce que le garçon nous a sorti, c'est je trouve, VB6 Studio Web , publié le même jour. C'est un Visual Basic 6 dans un onglet, avec sa boîte à outils, sa fenêtre Properties, son concepteur de formulaires et un débogueur pas à pas. Vous appuyez sur F5 et le projet d'exemple (une saisie de commandes shopping) se lance aussitôt. Et le code VB n'est pas confié à un eval JavaScript, mais réellement exécuté par un compilateur et une machine virtuelle maison, avec 37 types de contrôles différents dispos.

VB6 Studio Web après un F5 : le projet d'exemple Order Entry tourne dans l'IDE

Ouvrez ensuite l'exemple Calculator par File, New Project..., puis lancez File, Make Calculator.html, et votre programme deviendra une page HTML unique qui embarquera son propre runtime. Sur l'exemple Calculator, ça m'a donné un fichier de 1,9 Mo qui s'ouvre directement depuis le disque, sans l'IDE, et qui répond bien 42 quand je lui demande de faire un 6x7 (ouais, six-seven, on soutient la cause lycéenne ici !).

Pour ceux qui ont des archives, il peut aussi ouvrir les projets .vbp et .vbg d'époque, depuis des fichiers, un dossier ou un ZIP, et il embarque même un agent de code qui pilote l'IDE avec votre propre clé OpenAI, Anthropic ou Gemini.

L'entrée voisine, "Make Calculator.exe" (Win32 AOT), va encore plus loin puisqu'un éditeur de liens PE32 et un générateur de code x86 écrits en JavaScript y fabriquent un exécutable Windows natif, sans quitter le navigateur.

Chez moi, après compilation, j'ai obtenu un fichier de 34 ko que la commande file identifie comme un véritable exécutable PE32 pour Windows. Je ne l'ai pas lancé sous un vrai Windows, mais ça devrait normalement se lancer vu que c'est assez basique comme code.

Le projet Calculator après Make Calculator.exe : la barre d'état annonce 34304 octets, code x86, contrôles natifs et GDI, sans extraction

La même calculatrice exportée en un seul fichier HTML, ouverte hors de l'IDE : 7 × 6 = 42

Bref, le mec a fait des trucs de zinzin, à se demander comment un développeur peut-il sortir autant de choses à lui tout seul ?

Probablement grâce à l'IA, puisque les projets contiennent pour la plupart un fichier .openai/hosting.json mais peu importe, même si c'est vibe codé, c'est quand même un gros boulot et la qualité est au rendez-vous.

Voilà, si vous voulez tester, tout se lance sans rien installer, depuis les dépôts Windows 3.1 , 95 , 98 , Me , 2000 , XP , Vista et Mac OS 9

Vos fichiers créés dans ces "OS" resteront bien sûr dans le navigateur dans un IndexedDB, donc si vous videz les données du site ou si vous changez de navigateur, votre ordinateur virtuel repartira de zéro...

Sous Windows 95, l'outil Backup exportera le disque en JSON donc il y a quand même moyen de faire un petit export si ça vous amuse et bonne nouvelle, son VB6 Studio Web est sous licence MIT, donc si vous avez encore un vieux projet VB6 qui dort sur un disque dur, vous savez maintenant où aller pour tenter de le rouvrir !

  •  
❌