Super ZSNES - Émulateur SNES basé sur le GPU
(zsnes.com)- Une réécriture complète de ZSNES, sous la forme d’un émulateur SNES basé sur le GPU, avec un cœur CPU et audio plus précis ainsi qu’un cœur PPU basé sur le GPU
- Prend en charge le Mode 7 haute résolution et des améliorations spécifiques à certains jeux, avec une interface utilisateur haute résolution et une UX améliorée, ainsi que des fonctions pratiques comme l’avance rapide, le rembobinage, les save states et l’historique de sauvegarde automatique
- Le Super Enhancement Engine prend actuellement en charge 7 jeux populaires et propose un renforcement manuel des détails en haute résolution, des texture/normal maps, l’overclock, le widescreen, le remplacement de l’audio non compressé et même des effets 3D basés sur le Mode 7
- Toutes les améliorations peuvent être désactivées individuellement, et les données d’amélioration ne contiennent ni ROM ni données protégées par le droit d’auteur ; l’utilisateur doit donc fournir lui-même ses ROM
- Téléchargeable sur Windows, Mac, Linux et Android ; le projet est encore au stade early build, avec des bugs d’émulation, des special chips non encore implémentés, ainsi que d’autres optimisations et fonctions prévues comme le Netplay
Téléchargement et plateformes prises en charge
- Windows : Download
- Mac : Download
- Linux : Download
- Android : Google Play
- iOS semble être indiqué comme Coming Soon
État du développement et fonctions prévues
- Le projet est actuellement au stade early build, donc des bugs d’émulation subsistent
- Les special chips comme DSP1 et SuperFX ne sont pas encore implémentés
- Beaucoup d’optimisations restent à faire, donc les performances peuvent être un peu lentes
- Sont prévus à l’avenir : bug fixes, émulation des special chips, optimisations supplémentaires, davantage de fonctions d’amélioration et le Netplay
1 commentaires
Réactions sur Hacker News
Le remplacement de l’audio non compressé pourrait être vraiment sympa, et je suis curieux de voir ce que ça peut donner
Mathew Valente, alias TSSF, a déployé un effort étonnant pour retrouver les échantillons originaux que Nobuo Uematsu a utilisés pour Final Fantasy à l’époque SNES et PSX
Presque tout venait d’échantillons issus de synthétiseurs matériels et logiciels de l’époque, et il a retravaillé les morceaux avec les échantillons d’origine ; ce n’était pas un simple glisser-déposer, mais un processus demandant beaucoup de jugements techniques, musicaux et subjectifs
Le résultat est vraiment magnifique, et si vous aimez la musique des Final Fantasy classiques, la chaîne devrait beaucoup vous plaire
Une vidéo que j’aime particulièrement est celle-ci : https://www.youtube.com/watch?v=XQhxNkZH-DE
Je partage l’avis de Pitchfork à propos du morceau classique Stickerbush de Donkey Kong Country
Si on recrée les instruments décompressés dans FL Studio, la composition reste, mais on perd la palette de timbres volontairement impure
On se retrouve avec un piano banal, des leads qui sonnent comme de vrais saxophones, et toute la texture surréaliste ainsi que la tension disparaissent ; c’est pour ça que je trouve déjà le terme « restauration » trompeur
Wise avait pensé ce morceau dès le départ dans les contraintes de la SNES, et voulait donner une impression d’infini à partir de sons limités
https://pitchfork.com/reviews/tracks/david-wise-stickerbush-symphony/
En comparant avec l’original, on entend qu’il arrive en retard à la 3e mesure : https://www.youtube.com/watch?v=JLrsUOA4Vb4
Il suffit de suivre le lien horodaté ci-dessous, et il y a aussi une vidéo consacrée à Super ZSNES dans son ensemble
https://youtu.be/r5twUkvYFpA?t=617
Il existe aussi des packs MSU-1 intégrant ses pistes, ce qui permet de jouer avec un audio amélioré
ZSNES, c’était une part essentielle de mon enfance
Je l’ai téléchargé quand il venait de sortir, à la fin des années 1990 et au début des années 2000, pour émuler les jeux que j’adorais, et c’est aussi là que j’ai profité de projets de fan-traduction comme Star Ocean et Tales of Phantasia
Il y avait même des passages où des objets transparents comme des nuages recouvraient tout l’écran, et il fallait désactiver manuellement la couche du dessus
Quand mes parents n’étaient pas à la maison, je mettais mes save states sur une disquette pour les transférer sur un Pentium 166MHz, et je jouais en cachette avec le son et la transparence activés
Il me semble que j’ai fait pareil avec la majeure partie de Super Mario World et quelques Final Fantasy, et c’était vraiment une super époque
La ténacité presque folle de la communauté de traduction, capable de patcher des jeux japonais sans code source pour nous apporter des pépites jamais sorties sur notre marché, était impressionnante
La traduction prenait parfois quelques libertés, mais rien que la scène du bateau en valait largement la peine
Et grâce à ZSNES, pouvoir ajuster la vitesse et faire des sauvegardes/chargements rapides à tout moment, c’était absolument génial
L’année où mon école testait l’introduction des ordinateurs portables comme outil pédagogique, j’assistais à un cours de maths où on était censés afficher les supports du cours
Sauf qu’un élève avait installé ZSNES sur son portable et jouait à Killer Instinct en plein cours
Le site sous-estime énormément à quel point ce projet est impressionnant
MVG a fait une très bonne vidéo d’ensemble : https://www.youtube.com/watch?v=r5twUkvYFpA
Côté émulateurs SNES, la précision est déjà un terrain dominé par higan/bsnes, donc plutôt que de refaire le même chemin, ils suivent leur propre voie
Ce qui m’inquiète davantage, ce sont les exigences matérielles
La réputation du ZSNES d’origine venait justement du fait qu’il tournait très bien sur du matériel limité grâce à toutes sortes d’astuces ingénieuses
La nostalgie est vraiment puissante
https://imgur.com/a/R63BKTe
Il semble qu’on pourrait aussi émuler le PPU en capturant intégralement l’état final des registres pour chaque pixel, puis laisser le GPU rendre chaque pixel à partir de cet état, en gérant le layer blending, le color math et les calculs du mode 7
Si la précision absolue n’est pas critique, on pourrait aussi le faire ligne par ligne
D’après l’analyse des draw commands dans la vidéo de MVG, il ne semble pas que l’implémentation du PPU de Super ZSNES fonctionne ainsi
Les BG semblent être rendus par tuiles, les OBJ probablement aussi, et le mode 7 a l’air d’être rendu ligne par ligne
La précision en pâtit un peu, mais cela semble probablement nécessaire pour mettre en œuvre les astuces d’amélioration visuelle qu’ils ont ajoutées
La méthode actuelle, qui consiste à dessiner des quads avec une API fixed-function ancienne puis à mélanger une bump map dans l’image finale, est assez étrange
Il existe déjà beaucoup d’outils capables de faire des choses vraiment superbes avec le GPU, et pourtant ils ont choisi cette voie ; personnellement, je trouve les shaders de post-traitement créés pour d’autres émulateurs plus impressionnants
Les émulateurs SNES existent depuis si longtemps que je me demande parfois si le nombre de personnes ayant joué à des jeux Nintendo sur émulateur n’a pas fini par dépasser celui des joueurs sur de vraies consoles Nintendo
C’est très cool, et j’apprécie surtout les améliorations de précision
En revanche, je me demande si le GPU est vraiment nécessaire
La SNES est un système tellement ancien qu’un CPU ne suffirait pas largement, et même si le GPU est plus efficace, je ne sais pas si cela vaut le coût de supporter une bien plus grande variété de configurations matérielles
Et comme ils utilisent Unity, ils n’ont pas non plus à gérer eux-mêmes tout le support GPU de bas niveau
higan (bsnes) fait déjà de l’émulation SNES cycle-accurate sur CPU depuis plus de dix ans, donc à ce niveau-là, c’est clairement possible
Au-delà, par exemple si on descend au niveau transistor, les choses se compliquent
AFAIK, à ce niveau on arrive à faire tourner pong, mais MetalNES est encore très loin du temps réel ; la limite se situe donc quelque part entre les deux
C’est probablement le genre de projet qu’on fait surtout « parce que c’est amusant »
J’ai trouvé assez intéressant que la liste des fonctionnalités mentionne No vibe coding et classic development style
Ça l’est d’autant plus dans le contexte d’un projet au parfum rétro
En revanche, je me demande ce que cela signifie exactement : aucune utilisation de l’IA, vraiment ?
Par exemple, pas même pour une revue de code ? Je veux juste comprendre clairement, sans juger dans un sens ou dans l’autre
Blague à part, les LLM sont assez mauvais dans ce genre de domaine atypique et obscur
Surtout dans le rétro, ils ont tendance à aligner avec enthousiasme des banalités sur le côté formidable ou nostalgique, tout en répétant des détails anecdotiques peu importants — ou déjà connus — qu’ils comprennent de travers
Ça ressemble un peu à afficher une section de commentaires Reddit
Un peu comme pour les meubles, les tapis, d’autres objets artisanaux, ou même Lamborghini
Il y a à peine un mois, l’une des grosses critiques contre DLSS5 était qu’il trahissait la vision originale des artistes ; et un mois plus tard, les joueurs occasionnels s’extasient devant un émulateur qui leur permet de transformer librement les visuels d’un jeu via une interface point-and-click
S’ils y avaient ajouté un serveur MCP, ça aurait encore plus fait exploser les réactions
Si le but est de s’amuser, il vaut mieux le faire soi-même
No Vibe Coding. Classic development style
J’ai l’impression que cela devient peu à peu une fonctionnalité que les gens veulent réellement
Ou peut-être un autre algorithme que je n’approuve pas
Une question brûlante qui me tient éveillé la nuit quand je pense à un émulateur de matériel vintage
Une interview des créateurs de ZSNES avec Zophar de Zophar's Domain, publiée il y a quelques mois, était assez intéressante
https://www.youtube.com/watch?v=iG-oqvj4Tqk
Quand j’étais enfant, ces types étaient vraiment incroyables à l’époque des débuts
Je me souviens encore du moment où j’ai lancé ZSNES pour la première fois et joué à des RPG japonais sortis uniquement au Japon, traduits par des fans
C’était comme l’ouverture d’un monde entièrement nouveau, et rien que pour ça, je leur suis vraiment reconnaissant