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 比较,能快速定位开发中的问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

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