ShadPS4 – Émulateur PlayStation 4
(github.com/shadps4-emu)- shadPS4 est un émulateur PlayStation 4 en phase initiale, écrit en C++, qui prend en charge Windows, Linux et macOS
- Le dépôt ne contient que le cœur de l’émulateur et n’inclut pas d’interface graphique ; les utilisateurs finaux classiques doivent donc télécharger séparément QtLauncher
- Certains jeux, dont Bloodborne, Dark Souls Remastered et Red Dead Redemption, peuvent actuellement être lancés, mais le projet précise qu’il ne faut pas s’attendre à une expérience complète, car il en est encore aux premiers stades de développement
- La compilation est documentée pour Docker, Windows, Linux et macOS ; macOS nécessite macOS 26.0 ou supérieur, et les Mac Intel ne sont pas pris en charge
- Certains modules de firmware PS4 doivent être placés dans le dossier
sys_modulespour que les jeux fonctionnent correctement ; ces modules doivent être extraits depuis une console PlayStation 4 légalement possédée
Nature de shadPS4 et public visé
- shadPS4 est un émulateur PlayStation 4 en phase initiale, écrit en C++, qui fonctionne sous Windows, Linux et macOS
- Ce dépôt fournit le cœur de l’émulateur et n’inclut pas d’interface graphique
- Les utilisateurs finaux ayant besoin d’une interface graphique doivent utiliser QtLauncher
- Pour le dépannage ou la prise en main, il est possible de consulter la documentation Quickstart
- La compatibilité des jeux peut être vérifiée via shadPS4 Game Compatibility
État actuel et orientation du développement
- shadPS4 précise qu’il est en phase initiale de développement et qu’il ne faut pas s’attendre à une exécution parfaite
- Exemples de jeux actuellement exécutables :
- Bloodborne
- Dark Souls Remastered
- Red Dead Redemption
- ainsi que plusieurs autres jeux
- Le projet a commencé pour le plaisir, et le temps libre limité de l’équipe peut ralentir la prise en charge de jeux plus complexes
- L’équipe de développement indique vouloir continuer à publier de petites mises à jour régulières
Compilation et conditions de plateforme
- Les builds en conteneur basés sur Docker et VSCode suivent les Docker Build Instructions
- Des documents de compilation sont fournis pour chaque plateforme :
- Pour exécuter shadPS4 sur macOS, macOS 26.0 ou supérieur est requis
- Les Mac Intel ne sont pas pris en charge
Mode d’exécution et entrées
- La liste des commandes et la description détaillée de chacune sont disponibles dans la sortie de
--help - Les schémas d’exécution courants sont les suivants :
shadPS4 CUSA00001: cherche le dossierCUSA00001dans la liste des dossiers d’installation de jeux et le lanceshadPS4 --fullscreen true --config-clean CUSA00001: l’argument du jeu est, par défaut, placé en derniershadPS4 -g CUSA00001 --fullscreen true --config-clean: l’argument du jeu peut être indiqué directement avec-gshadPS4 /path/to/game.elf: lance directement un fichier ELF PS4shadPS4 CUSA00001 -- -flag1 -flag2: transmet des flags à l’argvde l’exécutable du jeu
- Pour les tests, le débogage et le signalement de problèmes, consulter la Debugging documentation
- Les raccourcis clavier prennent en charge le compteur de FPS, les informations de débogage vidéo, le plein écran, la capture RenderDoc et la capture d’écran
- Les manettes Xbox et DualShock fonctionnent sans configuration supplémentaire
- Les entrées clavier et souris peuvent être personnalisées via le bouton Controller du menu des paramètres
- Les bindings personnalisés sont enregistrés par jeu
- Jusqu’à 3 touches par binding sont prises en charge, ainsi que les boutons de souris et les mouvements de souris mappés sur des entrées de joystick
Fichiers de firmware et conditions légales
- shadPS4 peut charger certains fichiers de firmware PlayStation 4
- Les modules de firmware pris en charge doivent être placés dans le dossier
sys_modulesde shadPS4 - Les modules pris en charge incluent notamment
libSceAudiodec.sprx,libSceFont.sprx,libSceJpegDec.sprx,libSceJson.sprx,libSceLibcInternal.sprx,libScePngEnc.sprx,libSceRtc.sprx,libSceXml.sprx - Ces modules sont nécessaires au bon fonctionnement des jeux
- Les modules de firmware doivent être extraits depuis une console PlayStation 4 légalement possédée
Contributions et projets de référence
- Pour contribuer, il faut lire CONTRIBUTING.md et ouvrir une PR
- Le projet remercie les équipes et projets suivants :
- Panda3DS : a aidé à comprendre et résoudre les problèmes liés à l’exécution native du code x64 des binaires PS4
- fpPS4 : a aidé à comprendre les parties complexes du système d’exploitation et des bibliothèques PS4
- yuzu : le compilateur de shaders de shadPS4 s’inspire du compilateur Hades de yuzu
- felix86 : émulateur d’espace utilisateur Linux x86-64 → RISC-V
- emudev.org : réseau de personnes intéressées par la documentation, l’émulation, la simulation et la réimplémentation de matériels proches de la disparition
- La licence est la GPL-2.0 license
1 commentaires
Avis sur Hacker News
Vraie question : en interne, est-ce plus proche d’un émulateur comme PCSX2, ou plutôt d’une couche de compatibilité comme Wine ?
Si la PS4 est quasiment un ordinateur x86, j’imagine que l’essentiel de la difficulté consiste à implémenter les API système/graphiques de la PS4. Ou bien existe-t-il aussi de grosses différences matérielles à gérer entre un PC x86 et une PS4 ?
Rien que sur ce point, c’est déjà nettement plus de travail que ce que fait Wine.
On dirait le premier émulateur PS4 à atteindre l’écran de personnage de Bloodborne.
https://x.com/shadps4/status/1825669017392107971?s=46
Je me demande comment on conçoit un émulateur. Y a-t-il de bonnes ressources pour apprendre ?
Dans le premier cas, on écrit du code qui émule le CPU du système cible à la manière d’un interpréteur d’instructions, comme pour la NES. Dans le second, on réimplémente les API du système cible, comme Wine. Si le système cible utilise une autre architecture CPU, il peut aussi falloir un compilateur JIT, comme pour la PS3.
La plupart des émulateurs de consoles modernes sont plus proches du second cas, parce que les consoles modernes fonctionnent de façon similaire aux PC, avec un noyau de système d’exploitation et des bibliothèques en mode utilisateur pour les applications.
Ce second cas se divise lui-même en deux approches : émuler les bibliothèques en mode utilisateur, ou bien réimplémenter le noyau de la console tout en réutilisant les bibliothèques système de la console elle-même.
Je recommande de commencer par là dans le langage de ton choix.
Existe-t-il des documents de conception ou des ressources sur les tentatives précédentes, les travaux antérieurs, et ce qui rend ce projet différent ?
Ça ressemble à un projet intéressant à suivre. Vu le manque actuel d’options portables chez Sony, je me demande comment cela tournerait sur Steam Deck.
0: https://www.reddit.com/r/SteamDeck/comments/wodw8x/i_tested_...
Cela veut-il dire qu’ils ont créé un équivalent de DXVK pour Gnm/Gnmx ?[0]
[0] https://en.wikipedia.org/wiki/PlayStation_4_system_software#...
Voici les dernières avancées sur Bloodborne. C’est probablement ce que la plupart des gens attendent :
La chaîne YouTube de ce développeur : https://www.youtube.com/watch?v=wC6s0avpQRE
Je ne comprends vraiment pas pourquoi Sony laisse encore presque volontairement à l’abandon ce jeu de rang S à l’importance culturelle majeure. Ils attendent d’en faire un titre de lancement de la PS6 ?
Certains peuvent être téléchargés, mais d’autres ne sont disponibles qu’en streaming, ce qui oblige à avoir une bonne connexion Internet pour jouer à des jeux PS2. C’est absurde.
Il y aura toujours une demande pour jouer aux anciens titres, et c’est pour cela que ce genre d’émulateurs existe.
Je me demande si le développement de l’émulation devient plus facile maintenant que les consoles modernes sont en pratique des systèmes PC réduits.
Heureusement, la PS4 a été hackée, et presque tous les fichiers et informations ont été déchiffrés et dumpés. Le SDK officiel de la PS4 a aussi fuité.
Maintenant qu’on sait comment la console exécute les jeux, l’étape suivante consiste à utiliser ces informations pour les lancer en dehors de la console. Le système de la PS4 est une version modifiée de FreeBSD, donc son fonctionnement est très proche de celui d’un PC. Un exécutable PS4 n’est qu’un fichier ELF personnalisé.
Donc, pour exécuter un jeu PS4 hors de la console, il faut mapper directement l’exécutable du jeu et fournir les symboles nécessaires d’une manière ou d’une autre, par exemple en les implémentant soi-même ou en réutilisant les bibliothèques PS4.
Mais l’accès à l’information me semble tout de même être un facteur majeur.
Plus généralement, l’industrie a aussi beaucoup progressé en matière de traduction binaire. Rosetta 2 en est un exemple. C’est devenu un outil de plus pour porter des binaires vers un autre environnement hôte.
Je me souviens qu’un autre émulateur PS4 appelé Spine avait aussi attiré l’attention il y a quelques années. Je me demande ce qu’il est devenu.
https://github.com/devofspine/spine
Il n’y a pas de code source, seulement des binaires.