Об этом проекте
JSNES — это полнофункциональный эмулятор Nintendo Entertainment System (NES), написанный на JavaScript. Он работает как в браузере, так и в среде Node.js, что делает его подходящим для веб-проектов ретро-игр, встраиваемых эмуляторов или серверных инструментов.
Библиотека предлагает две основные точки входа:
- `jsnes.Browser` — высокоуровневая обёртка, которая автоматически обрабатывает рендеринг на canvas, воспроизведение через Web Audio API, ввод с клавиатуры и геймпада, а также синхронизацию кадров. Она может загружать ROM из URL или сырых данных и предоставляет методы для снимков экрана, паузы/возобновления и очистки.
- `jsnes.NES` — низкоуровневое ядро для пользовательских интеграций. Оно выдаёт сырые кадровые буферы (256×240 ARGB Int32Array) и аудиосэмплы через колбэки, оставляя синхронизацию, рендеринг и обработку ввода разработчику.
Ключевые особенности:
- Поддержка стандартных контроллеров NES (два игрока) с настраиваемыми привязками клавиш, сохраняемыми в localStorage.
- Поддержка Gamepad API для современных контроллеров.
- Эмуляция светового пистолета Zapper.
- Сохранение SRAM с батарейным питанием через колбэки для состояний сохранения.
- Сериализация сохранения/загрузки состояния (`toJSON`/`fromJSON`).
- Регулируемая частота кадров и мониторинг FPS.
- Включён пример React-компонента; полноценный React-фронтенд находится в каталоге `web/`.
Установка выполняется через npm (`npm install jsnes`) или напрямую через тег script с unpkg CDN. Сборка использует форматирование Prettier и включает набор тестов.
JSNES возник из vNES Джеймса Сандерса и был вдохновлён JSSpeccy Мэтта Уэскотта. Проект активно поддерживается и используется в таких проектах, как NEStation для многопользовательской игры на NES через интернет.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.