À propos du projet
JSNES est un émulateur complet de Nintendo Entertainment System (NES) écrit en JavaScript. Il fonctionne à la fois dans le navigateur et dans les environnements Node.js, ce qui le rend adapté aux projets de jeux rétro sur le web, aux émulateurs intégrés ou aux outils côté serveur.
La bibliothèque propose deux points d'entrée principaux :
- `jsnes.Browser` — une enveloppe de haut niveau qui gère automatiquement le rendu canvas, la lecture audio via Web Audio API, les entrées clavier et manette, ainsi que la synchronisation des images. Elle peut charger des ROM depuis des URL ou des données brutes et fournit des méthodes pour les captures d'écran, la pause/reprise et le nettoyage.
- `jsnes.NES` — un noyau de bas niveau pour les intégrations personnalisées. Il émet des tampons d'images bruts (256×240 ARGB Int32Array) et des échantillons audio via des callbacks, laissant la synchronisation, le rendu et la gestion des entrées au développeur.
Les fonctionnalités clés incluent :
- Prise en charge des manettes NES standard (deux joueurs) avec des associations de touches configurables persistées dans localStorage.
- Prise en charge de l'API Gamepad pour les manettes modernes.
- Émulation du pistolet optique Zapper.
- Persistance de la SRAM sauvegardée par batterie via des callbacks pour les états de sauvegarde.
- Sérialisation des états de sauvegarde/chargement (`toJSON`/`fromJSON`).
- Fréquence d'images réglable et surveillance des FPS.
- Exemple de composant React inclus ; un frontend React complet se trouve dans le répertoire `web/`.
L'installation se fait via npm (`npm install jsnes`) ou directement par une balise script depuis le CDN unpkg. La compilation utilise le formatage Prettier et inclut une suite de tests.
JSNES est issu du vNES de James Sanders et a été inspiré par JSSpeccy de Matt Wescott. Il est activement maintenu et utilisé dans des projets comme NEStation pour le NES multijoueur sur Internet.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.