这个项目能做什么
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 游戏。
评论
0 评分人数达到10人后显示
登录后参与讨论。