android 开源fc模拟器_用 Go 撸了一个 NES/FC/红白机模拟器——GoNES

news/2024/12/2 13:53:28/

上个月在 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,但已经可以运行不少游戏了(包括超级马力欧兄弟一代和魂斗罗)。

目前这个项目还比较初期,只能慢慢完善了。如果很多人感兴趣的话我打算写几篇文章,做个自制 NES 模拟器的教程。

演示

演示游戏为 Nova The Squirrel,是一个仿星之卡比系列的开源山寨游戏。


http://www.ppmy.cn/news/165227.html

相关文章

《绝版游戏之小霸王模拟器》软件在最底下

目录 1.小霸王模拟器软件介绍: 2.小霸王模拟器特色: 3.小霸王模拟器功能: 4.软件下载: 1.小霸王模拟器软件介绍: 小霸王模拟器是一款可以让用户们进行各种经典红白机游戏模拟的软件。海量的fc中文系列游戏都是小伙…

怀旧在2022:游戏ROM下载+游戏模拟器推荐(安卓/iOS)

最近在我的新大三(旧)上终于通关了心心念念的NDS上的剧情解密神作《幽灵诡计》 剧情峰回路转之反转反转还出人意料,不枉我专门买了台3DS来玩! 而说到这里,我就在想估计大家或多或少都有一些童年时期没能通关的游戏&am…

nes 红白机模拟器 第2篇 InfoNES

InfoNES 支持 map ,声音,代码比较少,方便 移值。 在上个 LiteNES 的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏。InfoNES_LoadFrame () WorkFrame 中一直是 0 。 解决的过程很漫长&#x…

【SONY PS2模拟器】[PCSX2 V0.93 R7完美教程]+最新版模拟器

今天无事在做个PS2模拟器教程,有很多朋友也做过这个,但是到今天还有很多人不会用(下面讲的只是主要设置和运行游戏,模拟器和插件在目前都是最新的)希望这个教程对那些人有所帮助,哪里做的不好或有问题&…

Android手机fc模拟器,安卓fc模拟器

FC模拟器是一款专门模拟红白机游戏的fc模拟器内置1600款游戏下载,虽然fc游戏离我们已经很久远了,但是追溯下美好的童年还是极好的!本站提供fc模拟器下载。能运行其它模拟器不能运行的很多中文游戏。 功能介绍 1、100% 组合语言所写的 CPU 2、…

月光宝盒游戏机MAME街机模拟器方案源码项目解析----米饭模拟器(2)

上一章节中讲叙月光宝盒项目的由来和介绍,本章节从一个月光宝盒中单一的模拟器来说起: 那就是街机模拟器。街机模拟作为经典的游戏经久不衰,现在去游戏厅还能看见很多这样的游戏机。 这样的游戏机,画面上面 还能看到月光宝盒3/4的 字样&#…

任天堂红白机 ( NES ) 文档

--------------------------- | 任天堂红白机 ( NES ) 文档 | | 版本.2.00 | --------------------------- ------ | 目录 | ------ 1. 说明 A. 弃权声明 B. 为什么? C. 任务 D. 献给 E. 鸣谢 2. Acronymns A. 内部 B. 硬件 3. CPU A. 一般信息 B. 内存地址 C…

ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了 NES 游戏模拟器在 BF53x 平台上的运行。运行代码后,会通过文件系统打开工程目录下 ROM 内 的 NES 游戏 ROM…