GoNES是一款通过GO语言编写的NES模拟器模拟器,这款模拟器可以让你在电脑上运行大家熟悉的红白机游戏。红白机是大家小时候最值得怀念的游戏时光,可能很多人用的是国内的山寨小霸王,不过玩的东西都一样,这款GoNES模拟器让你在电脑上能重温当年的那些游戏了。
开发说明:
上个月在 V 站看到有同学发布了一个 Rust 写的 Gameboy 模拟器。当时我恰好在系统化学习 Go 语言,作为马里奥 /马力欧 /玛丽(误)的忠实粉丝,就想着自己能不能用 Go 写个模拟器玩玩。于是我瞄准了 NES 模拟器,考虑到 NES 是上个世纪 80 年代的古董硬件,可能比较容易实现。
接下来我开始在网上搜索关于 NES 硬件的信息。忽然有一个神奇的网站出现在我眼前,它就是 nesdev.com 。这个网站有一个Wiki,里面的内容包罗万象,有 NES 的硬件细节,也有 NES 游戏开发的教程。对照着文档,大概用了一天的时间完成了 INES ROM 文件(网上下到的.nes 文件都是这种格式)的读取,然后用了不到一周的业余时间就基本实现了 NES CPU ( 6502 )指令解释器。NES 的 PPU (类似显卡)是难点,大概陆陆续续写个几个星期才完成基本功能。主要因为 NES 的硬件太弱,很多游戏为了压榨机能在开发过程中用了大量的 hack,如果对 PPU 的模拟必须不够精确,游戏运行时就会出现各种奇怪的现象。用的 GUI 库是 fyne.io ,在部分操作系统上会内存泄漏,打算之后换个其他的库试试( Go 语言目前好像没有成熟的 GUI 库)。另外 APU (类似声卡)的模拟还没有实现(主要我对声学一窍不通,也暂时不想随便引用个第三方库解决,就先拖着了)。
另外一个难点是卡带的模拟。NES 原生只有 2kB 内存+2kB 显存,为了拓展内存和显存的容量,很多游戏的卡带带有一个俗称 Mapper 的芯片。配合卡带上额外的 ROM 或 RAM 芯片,Mapper 可以将卡带上 ROM 或 RAM 的一部分空间(称为 bank )映射进 NES 的内存或显存地址空间,还可以在游戏运行中动态切换。麻烦的是,不同的游戏使用的 Mapper 芯片是不同的,你必须先实现了对某种 Mapper 的模拟,才能运行使用这种 Mapper 的游戏 ROM,然而已知的 Mapper 种类就有几百种。目前我的模拟器只实现了 INES 文件格式定义的 0-3 号 Mapper,但已经可以运行不少游戏了(包括超级马力欧兄弟一代和魂斗罗)。
使用方法:
从终端运行gones:
gones <game> .nes
或者,如果您使用的是GUI,只需将.NES文件拖到gones二进制文件即可。
然后游戏将开始






















大小: 91.6M
大小: 657KB
一流游戏变速器V0.3 绿色免费版
起凡游戏平台2022官方版v2.4.0.0 最新版
Flash游戏修改大师V3.3 绿色版
快玩游戏盒v3.6.5.8 官方最新版
游窝游戏盒v1.2.3.5官方最新版
宅霸联机平台4.5.0官方版
QQ游戏20215.28 官方正式版
VirtuaNES(FC模拟器)0.97 简体中文版
游侠对战平台V7.06 官方版
最成功的GBA模拟器1.80 SVN1131 中文版
PS2模拟器PCSX20.9.9 SVN4897 全插件汉化版
JoyToKey汉化版6.6 绿色汉化版
snes模拟器(Snes9x)1.53 简体中文版
Mame32 Plus! 模拟器105U5中文版
金山游侠V 官方正式版
我的世界国服【网易版】1.8.0.35383 官方中文版
origin平台v10.5.112.50486 简体中文版
GBA-GBC模拟器(VisualBoyAdvance-M)2.0.0 官方最新版
腾讯start云游戏平台pc版客户端v0.11.0.13794 官方最新版
vs对战平台v5.2 官方正式版
完美游戏平台PGPv2.9.51.1128 官方最新版