撸一个VS Code插件——红白机模拟器 支持手柄 支持保存

837 阅读2分钟

分享我自己写的VS Code红白机模拟器

前言

我曾经利用 jsnse 这个库封装了一个vue组件的nes模拟器:nes-vue: Vue 3 的NES(FC)模拟器组件 (gitee.com),最近心血来潮想试试能不能开发一个VS Code的插件版本。

一搜发现竟然已经有了,作者还在掘金上分享过:1分钟将vscode撸成小霸王 - 掘金 (juejin.cn),但我试了一下,发现这个插件现在已经不能用了(我目前用的VS Code版本1.74,也许旧版本的还能用,我没试。),受到它的启发,我撸了一个目前能用、且功能更强大的版本。

市场地址:红白机 - Visual Studio Marketplace

仓库地址:VS Code插件 —— 红白机模拟器

使用

在VS Code插件市场搜“红白机”就能找到:

红白机1.jpg

安装后,点击侧边栏的图标,就可以选择游戏进行游玩了:

红白机2.jpg

功能

  • 支持手柄
  • 支持连发键
  • 支持即时保存、读取
  • 支持切换分辨率
  • 支持暂停、静音
  • 支持加载本地ROM
  • 支持双人

几点说明:

  • 出于VS Code的安全策略,选择游戏后,必须手动点击屏幕中的 点我开始游戏 才能运行,我估计 小霸王 这个插件现在不能用了,就是因为这个。
  • 因为始终只有一个存档,所以读取时要注意,游戏必须正在运行,并且确保运行的游戏与保存的是一致的。
  • 手柄即插即玩,但我只测试了PS手柄,也不清楚按键映射是否符合其他人的习惯,欢迎提意见。
  • 个别游戏的画面边缘会有显示不全的问题(例如坦克1990),可以去掉勾选“剪切画面边缘”,但大部分游戏还是建议勾上。

如果想要更多的功能,欢迎反馈。

远程ROM地址

我默认提供了20多个游戏的远程ROM地址,利用的是 Github Page ,理论上不太需要担心会失效的问题。

远程ROM不会下载到本地,所以每次选择游戏时,都会有个加载的过程,如果对Github的网速不好,个别游戏可能需要加载较长时间。

如果你想配置自己的远程ROM,可以点击扩展设置

红白机3.jpg

然后编辑settings.json

红白机4.jpg

可以在vscodeNes.romPath这个字段中,参照已有格式,任意增删改。

红白机5.jpg

注意,游戏地址只能是在线地址,本地ROM可以直接在这里添加:

红白机6.jpg

关于jsnes这个库

如果你对 jsnes 感兴趣,可以留言告诉我,因为这个库的官方文档写得太简陋,官方提供的示例又太复杂,新手第一次用会完全不知如何下手,更别提如何改分辨率、如何保存读取等等,我找时间分享一下我对它的使用经验,