2015年1月26日 星期一

任天堂紅白機模擬器

任天堂紅白機 1983 年日本推出 , GameBoy 1989年推出,照理來說任天堂的硬體技術和複雜度應該會比較低,撰寫模擬器或許會比起寫GameBoy的簡單些,但事實並不是這樣.
也的確,任天堂紅白機除了因為有彩色輸出視訊的能力,因此跟GameBoy相比色彩的部分是進階一點點(也只有一點點,幾乎可以說是大同小異),其他的部分都簡單很多,特殊佔存器的數量少上不少,問題就是因為紅白機的構造簡單,換來是很多複雜的硬體處理規則,我覺得最主要有兩點是在撰寫紅白機模擬器相當棘手的部分(記憶體相關的問題與 ppu timing )

1.任天堂記憶體的部分映射規則很多,處理需要細心和了解夠透徹,另外Mapper種類繁多,如果有心要提高支援度,支援起來不是件小事情,記憶體映射又跟顯示的處理問題綁在一起.

2.任天堂因為CPU跟PPU兩塊是各自獨立的部分,視為兩個處理器,中間CPU透過記憶體佔存器溝通PPU,來讀寫PPU記憶體,這中間有滿複雜的規則.

3.因為ppu 跟 cpu獨自運作, timing處理起來反來比起GB更複雜,特別是FC的PPU運作方式,要把它timing的規則搞懂需要花點苦工和看你的悟性.

綜合以上,相比下撰寫GB模擬器還算是簡單一點的任務.

在 timing 跟 記憶體的問題處理上,最後我還是決定採用部分 poring 人家專案的方式來達成,以我現在的能力沒辦法在短時間內處理得很好和完全正確.


沒有留言:

張貼留言