这个项目能做什么

JSNES 是一个用 JavaScript 编写的全功能任天堂娱乐系统(NES)模拟器。它既能在浏览器中运行,也能在 Node.js 环境中运行,因此适用于基于网页的复古游戏项目、嵌入式模拟器或服务器端工具。 该库提供两个主要入口点: - `jsnes.Browser` — 一个高层封装,可自动处理画布渲染、Web Audio API 播放、键盘和手柄输入以及帧时序。它可以从 URL 或原始数据加载 ROM,并提供截图、暂停/恢复和清理等方法。 - `jsnes.NES` — 一个用于自定义集成的底层核心。它通过回调发出原始帧缓冲(256×240 ARGB Int32Array)和音频采样,将时序、渲染和输入处理留给开发者。 主要特性包括: - 支持标准 NES 控制器(双人),可配置按键绑定并持久化到 localStorage。 - 支持现代控制器的 Gamepad API。 - Zapper 光枪模拟。 - 通过回调持久化电池供电的 SRAM,用于保存状态。 - 保存/加载状态序列化(`toJSON`/`fromJSON`)。 - 可调帧率和 FPS 监控。 - 包含 React 组件示例;完整的 React 前端位于 `web/` 目录中。 可通过 npm 安装(`npm install jsnes`)或直接使用 unpkg CDN 的 script 标签。构建使用 Prettier 格式化,并包含测试套件。 JSNES 起源于 James Sanders 的 vNES,并受到 Matt Wescott 的 JSSpeccy 启发。它目前仍在积极维护,并被用于 NEStation 等项目,以实现通过互联网进行多人 NES 游戏。