任天堂紅白機模擬器專案重啟 - 模擬器

Daph Bay avatar
By Daph Bay
at 2016-10-25T01:48

Table of Contents


純拉賽文...輕鬆看就好

https://youtu.be/JDWlDcBtvmU

由於PC模擬器寫到後來撞牆,沒了動力,主要是周邊裝置IO文件看得不是很懂,

又非電子系所畢業,硬體不太行,K了很吃力,後來就沒進度先放著.....
(INTEL真的出一堆數字編號的控制器晶片..)

趁著這個空檔突然想起以前寫過的任天堂紅白機模擬器(其實完成度根本啥都稱不上),

想把這舊專案重啟整個重新大更新,回去找以前的code,因為覺得沒啥參考價值,

沒放出來到網路上,所以檔案沒備份好,只剩下CPU code這塊,

就利用這僅存的部分繼續完成,反正之前的東西砍掉也沒差.

紅白機模擬器好不好寫? 真的建議初學者寫gb來練習比較好,

相比下nes的真的比較有挑戰性.

如果你只是要一個體驗,沒打算實作到一定的完整度,是也可以考慮nes,

最簡單的處理方式就是找mapper0 而且畫面沒有scrolling的rom來測試,

Donkey Kong是很適合的遊戲,只要固定在畫面更新時一次性把整個背景和sprites

繪出來就好,但這只能夠讓部分遊戲看起來好像有一個樣子,

真正說起來nes難是難在透過正確的timing,在正確的時間下一條一條去輸出scanlie,

然後不管是畫面輸出或是對PPU的記憶體進行讀寫都會跟 buff 的處理方式有關係,

內部還有暫存器會在特定的時間點更新,錯了一個環節畫面可能就錯亂掉了

(特別牽涉到 x y的scrolling這種遊戲).

其實nes撰寫有點超過我的能力(我本來悟性就不高...),

這次重啟專案主要目的就是希望可以讓timing正確一點,

至少可以處理到有scrolling特效遊戲,用比較合乎常規的方式去達成,

而不是亂做一個樣子,但頗為困難,所以不得以最後借助兩款open專案,

https://github.com/scottferg/Fergulator
這款我主要是參考它timing的方式以及每行scanlie的正確處理,
我主要目的不是移植別人的東西,而是瞭解觀念(雖然還是有問號 orz..),
重新用自己風格和想法撰寫,因為我的是c#,這款是go,所以日後我專案放出來,
除非用心去找,不然是不太好看出參考的痕跡.

https://sourceforge.net/projects/mynes/
這款我主要是參考PPU記憶體讀寫牽涉到BUFF這塊,同樣都是C#專案,
有部分method的code接近,但在日後應該會用我自己的想法再度改寫些.

至於timing為何不參考mynes這款,mynes是完成度我認為有95%的完美模擬器,
而它的timing完成度應該有99%正確性(數字自己亂估,不用太認真),
寫法相當複雜,以學習性來說Fergulator理想很多,不得不推薦一下mynes這款模擬器,
不錯,精確度和mapper可能比很多模擬器更好,網路上都有測試比較過.

這重啟專案目前會再補足一些東西,應該是近期會釋放出來,以學習跟教育為用途,
sprite0hit 跟 SpriteOverflow 尚未實作,sprite跟背景之間的穿透處理還沒正確做完,
目前也還沒遊戲手把輸入功能,code很亂需要整理和優化
(但即使還沒優化效能目前很夠用) , 最後就是super mario bros畫面背景還有問題
orz...然後會想再多支援幾個簡單的mapper(可能真的只是支援很簡單的幾個mapper),
完成後會放上github.

最後談到nes的耗費效能...其實現在的電腦不管是任何程式語言甚至是script language,
應該跑nes模擬器都沒啥問題,連javascript跑起來也不差了...
效能瓶頸比較要注意的是畫面顯示這塊會佔用最多,至少你的顯示方式,
在不做任何其他事情的時候,單純只是顯示靜態畫面要達到最好有2.300 fps為基準,
因為後續還要扣除掉模擬器的運作時間.畫面特效處理等等,顯示越快,
你能用的時間越充裕,目前我是在沒code優化狀態下還可以搭配XBRZ 5X
(xbrz 5x filter有出了...),而且這部分還是純c#寫的,都還ok,
但filter的部分有整個自己優化處理過了.

其實還想些一些東西,但真的模擬器難不是難在寫出,而且好好地寫好,
雖然興趣廣,但功能完善度東缺西缺的,應該會先補齊(如果可以的話).



--

All Comments

Wallis avatar
By Wallis
at 2016-10-27T15:25
推erspicu大實作!
Eartha avatar
By Eartha
at 2016-10-31T16:07
會寫程式就已經很神了阿.....真的
James avatar
By James
at 2016-11-03T19:58
最近都再用平板玩紅白機~~
Olivia avatar
By Olivia
at 2016-11-07T08:59
專業好文推!辛苦了

請問一款FC的忍者遊戲

Elma avatar
By Elma
at 2016-10-24T16:10
※ [本文轉錄自 Nintendo 看板 #1O3S7L4V ] 作者: fhorn (龍眠) 看板: Nintendo 標題: [問題] 請問一款FC的忍者遊戲 時間: Mon Oct 24 16:09:54 2016 各位大大 最近想回味以前的紅白機遊戲 想到很久以前有玩過一款忍者遊戲 但想不起遊戲名 ...

實況大聯盟WII的哪一版可改能力球速不快?

Leila avatar
By Leila
at 2016-10-24T14:33
2008 還 2009 美版 可改能力 可是球速有夠快打不到 跪求球速不快 可改能力的 WII版 另外海賊WII的模擬器版本有可以 不用I7就能跑的嗎? - ...

(Multi-System) BizHawk v1.11.8.1

Hedwig avatar
By Hedwig
at 2016-10-24T12:01
2016.10.26 BizHawk v1.11.8.1 Changelog: - This is a patch fix to 1.11.8 that fixes mGBA savestates 2016.10.23 BizHawk is a A multi-system emulator wri ...

安裝VMware模擬macOS作業系統環境(內有

Steve avatar
By Steve
at 2016-10-24T09:06
想在PC上使用MAC 安裝VMware模擬macOS作業系統環境(內有安裝教學) https://www.kocpc.com.tw/archives/115734 檔案下載 這次我們是以 VMware Workstation Pro 來模擬 macOS ,所以我們需要以下軟體: VMware Workst ...

ザ・ゲームメーカー

Wallis avatar
By Wallis
at 2016-10-24T00:10
https://www.youtube.com/channel/UCNfeiwWBOlDu7o6uO3NlSdg 看起來是 Game Center CX 出的懷舊專輯? 除了介紹遊戲外,也有很多不同的單元 有些公司有請一位老骨頭來談當年的事情 像是當初不是去公司應徵而是直接被人詢問要不要來做遊戲 忍 ...