日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 开源fc模拟器_用 Go 撸了一个 NES/FC/红白机模拟器——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,但已經可以運行不少游戲了(包括超級馬力歐兄弟一代和魂斗羅)。

目前這個項目還比較初期,只能慢慢完善了。如果很多人感興趣的話我打算寫幾篇文章,做個自制 NES 模擬器的教程。

演示

演示游戲為 Nova The Squirrel,是一個仿星之卡比系列的開源山寨游戲。

總結

以上是生活随笔為你收集整理的android 开源fc模拟器_用 Go 撸了一个 NES/FC/红白机模拟器——GoNES的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。