NES 模擬器開發(fā)教程 00 - 總覽

從開始開發(fā) NES 模擬器 tsnes 到現(xiàn)在已經(jīng)近一個月時間了。目前已經(jīng)實現(xiàn)了 NES 必備的組件:CPU、PPU、APU、手柄、卡帶、部分常用 Mapper。由于 NES mapper 數(shù)量實在太多,目前只實現(xiàn)了 mapper0 到 4 以及我喜歡的幾個漢化游戲的 mapper。不過僅靠這些 mapper 也能運行大多數(shù)游戲了

由于我的模擬器使用 typescript 開發(fā),所以可以直接在瀏覽器運行,在線演示地址
效果如圖:

image.png

回想到一個月前,自從有了開發(fā) NES 模擬器想法后,開始在網(wǎng)上尋找相關(guān)教程,結(jié)果一個完整的教程都沒找到,能找到的教程的基本都是爛尾狀態(tài)。無奈之下只能硬啃 nesdev,然后下載好幾個模擬器源碼參考著看

由于 nesdev 對新手極其不友好,僅僅適合作為參考資料使用,所以為了后來也想開發(fā) NES 模擬器的人能更輕松地入門,于是萌生了寫下這一系列教程的想法

注:因為篇幅限制,我不會涉及到 NES 所有的細節(jié)(否則可以寫本書了)。但是會講清楚每個部分工作原理,設(shè)計思路,以及關(guān)鍵部分如何實現(xiàn),有了一定了解后再去看 nesdev 上的資料就會輕松許多

路線圖

我開發(fā)模擬器大致僅過了這么幾個階段,后續(xù)文章我也會按照這樣的順序來介紹:

1. NES 系統(tǒng)結(jié)構(gòu)

介紹 NES 基本組成,各個部分功能。以及模擬器對外提供的 API 設(shè)計

2. NES 文件結(jié)構(gòu)及 NES 開發(fā)和調(diào)試

介紹 NES 文件的基本結(jié)構(gòu)以及如何自己編譯運行一個 NES 程序

3. NES 卡帶和 Mapper

介紹卡帶的內(nèi)存映射和 Mapper 的作用,以及最簡單的 Mapper:Mapper0

4. CPU

介紹 NES CPU 的工作原理和設(shè)計

5. PPU(Picture Processing Unit)

介紹 NES 圖像顯示部分的工作原理和設(shè)計(較為復(fù)雜,可能會分成幾篇文章)

6. 輸入設(shè)備(手柄)

介紹 NES 輸入設(shè)備的工作原理和設(shè)計

輸入設(shè)備不一定要完全放在 PPU 之后開發(fā),因為 PPU 開發(fā)到一半,你可能需要開發(fā)輸入設(shè)備以實現(xiàn)人物的運動來驗證 PPU 是否正確工作

7. APU(Audio Processing Unit)

介紹 NES 音頻的工作原理和設(shè)計

8. Mapper4

介紹大型游戲常用的 Mapper4 的工作原理和設(shè)計

TIPS

這里有一些建議能幫助你的開發(fā)

  • NESDoc
    這篇文檔寫得比較簡單,可以先瀏覽一遍
  • nesdev
    這里有最完善的 NES 相關(guān)資料
  • fceux
    該模擬器具有非常強大的調(diào)試功能,能夠調(diào)試 CPU 指令,修改內(nèi)存,查看 PPU,生成 log 等等,對于理解 NES 各部分的工作原理有非常大的幫助
  • Log 比較
    善用 fceux 的 log 功能,也可以下載一些較為簡單的 NES 模擬器修改源碼生成 log,與自己模擬器的 log 比較,能快速定位開發(fā)中的問題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • --- layout: post title: "如果有人問你關(guān)系型數(shù)據(jù)庫的原理,叫他看這篇文章(轉(zhuǎn))" date...
    藍墜星閱讀 914評論 0 3
  • 2019年3月31日—4月6日 【本周打卡】 放假松懈沒早起 【一周運動】 本周練習手臂力量 【本周三只蛙】 1、...
    漏漏_1bb2閱讀 119評論 0 0
  • WKWebView使用遇到的坑,WKWebView返回向上移,代理報錯,返回頁面報錯 解決WKContentVie...
    younger_times閱讀 3,875評論 1 1
  • 爆胎的恐懼【二】什么輪胎容易爆胎? 小留流第137篇 1900年世界上誕生了實心橡膠輪胎,這輪胎是最不愛爆...
    海淀老頭兒閱讀 838評論 13 1
  • 再多的語言也抵不上一張張有視覺沖擊力的美照,以及美圖背后的風土人情。 讀萬卷書不如行萬里路。 古人誠不欺我。
    mahabharatal閱讀 709評論 0 0

友情鏈接更多精彩內(nèi)容