NES 模拟器开发教程 00 - 总览

从开始开发 NES 模拟器 tsnes 到现在已经近一个月时间了。目前已经实现了 NES 必备的组件:CPU、PPU、APU、手柄、卡带、部分常用 Mapper。由于 NES mapper 数量实在太多,目前只实现了 mapper0 到 4 以及我喜欢的几个汉化游戏的 mapper。不过仅靠这些 mapper 也能运行大多数游戏了

由于我的模拟器使用 typescript 开发,所以可以直接在浏览器运行,在线演示地址
效果如图:

image.png

回想到一个月前,自从有了开发 NES 模拟器想法后,开始在网上寻找相关教程,结果一个完整的教程都没找到,能找到的教程的基本都是烂尾状态。无奈之下只能硬啃 nesdev,然后下载好几个模拟器源码参考着看

由于 nesdev 对新手极其不友好,仅仅适合作为参考资料使用,所以为了后来也想开发 NES 模拟器的人能更轻松地入门,于是萌生了写下这一系列教程的想法

注:因为篇幅限制,我不会涉及到 NES 所有的细节(否则可以写本书了)。但是会讲清楚每个部分工作原理,设计思路,以及关键部分如何实现,有了一定了解后再去看 nesdev 上的资料就会轻松许多

路线图

我开发模拟器大致仅过了这么几个阶段,后续文章我也会按照这样的顺序来介绍:

1. NES 系统结构

介绍 NES 基本组成,各个部分功能。以及模拟器对外提供的 API 设计

2. NES 文件结构及 NES 开发和调试

介绍 NES 文件的基本结构以及如何自己编译运行一个 NES 程序

3. NES 卡带和 Mapper

介绍卡带的内存映射和 Mapper 的作用,以及最简单的 Mapper:Mapper0

4. CPU

介绍 NES CPU 的工作原理和设计

5. PPU(Picture Processing Unit)

介绍 NES 图像显示部分的工作原理和设计(较为复杂,可能会分成几篇文章)

6. 输入设备(手柄)

介绍 NES 输入设备的工作原理和设计

输入设备不一定要完全放在 PPU 之后开发,因为 PPU 开发到一半,你可能需要开发输入设备以实现人物的运动来验证 PPU 是否正确工作

7. APU(Audio Processing Unit)

介绍 NES 音频的工作原理和设计

8. Mapper4

介绍大型游戏常用的 Mapper4 的工作原理和设计

TIPS

这里有一些建议能帮助你的开发

  • NESDoc
    这篇文档写得比较简单,可以先浏览一遍
  • nesdev
    这里有最完善的 NES 相关资料
  • fceux
    该模拟器具有非常强大的调试功能,能够调试 CPU 指令,修改内存,查看 PPU,生成 log 等等,对于理解 NES 各部分的工作原理有非常大的帮助
  • Log 比较
    善用 fceux 的 log 功能,也可以下载一些较为简单的 NES 模拟器修改源码生成 log,与自己模拟器的 log 比较,能快速定位开发中的问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 4,292评论 0 3
  • 2019年3月31日—4月6日 【本周打卡】 放假松懈没早起 【一周运动】 本周练习手臂力量 【本周三只蛙】 1、...
    漏漏_1bb2阅读 1,067评论 0 0
  • WKWebView使用遇到的坑,WKWebView返回向上移,代理报错,返回页面报错 解决WKContentVie...
    younger_times阅读 9,153评论 1 1
  • 爆胎的恐惧【二】什么轮胎容易爆胎? 小留流第137篇 1900年世界上诞生了实心橡胶轮胎,这轮胎是最不爱爆...
    海淀老头儿阅读 4,164评论 13 1
  • 再多的语言也抵不上一张张有视觉冲击力的美照,以及美图背后的风土人情。 读万卷书不如行万里路。 古人诚不欺我。
    mahabharatal阅读 3,811评论 0 0

友情链接更多精彩内容