紅白機的遊戲是怎樣開發出來的?

紅白機的遊戲是怎樣開發出來的?紅白機的遊戲是怎樣開發出來的?紅白機的遊戲是怎樣開發出來的?
2 個回答
天空明悟
2017-10-14


FC遊戲也有類似於今天的主機遊戲的開發環境,但並不唯一。簡而言之,就是一臺用於開發的電腦主機以及若干仿真外設。當然80年代的電腦主機和現在差別很大。代碼圖形也都是在這臺主機上完成。編寫語言為ASM(彙編語言)。卡帶機時代主要的開發語言就是彙編,那時候不會用C語言。下圖是一些開發環境的例子,80年代初期用的是HP 64000,上面安裝的PASCAL,但並不唯一。不同廠商所使用的環境有所差異。編寫好的程序通過Emulation Probe上仿真測試,由於Emulation Probe代價很昂貴,並不是所有廠商都能有。沒有該設備的情況下,就直接通過ROM仿真器插在FC實機卡槽上測試。關於HP 64000的介紹,可以參考維基頁面HP 64000紅白機的遊戲是怎樣開發出來的?

80年代後期標準開發環境是由INTELLIGENT SYSTEMS開發制定。由一塊FC仿真板連接到富士通FMR系列電腦上進行開發調試。富士通FMR系列維基介紹FMRシリーズIS是任天堂旗下所屬公司,作為硬件和軟件的開發支援公司,同時IS也有自己的知名遊戲(火焰紋章,紙片馬里奧,高級戰爭,瓦里奧製造等)紅白機的遊戲是怎樣開發出來的?

日本FC的官方授權遊戲最後一款是1994年的冒險島4。在那之前或者之後,無論是中國國內還是國外,製作盜版的FC遊戲卡帶,都會有各自的開發硬件和仿真器。圖上這個就是個簡易的仿真板,國外FC遊戲愛好者自己做的。紅白機的遊戲是怎樣開發出來的?紅白機的遊戲是怎樣開發出來的?改造過的NES主機(美版紅白機),連接到仿真板用於調試測試。紅白機的遊戲是怎樣開發出來的?

用於燒錄測試的卡帶。

在電腦技術發達的今天,仍然會有很多懷舊愛好者會HACK或者製作新的FC遊戲。現今開發FC遊戲,基本上全部都能在windows電腦上完成了。用於仿真開發的軟件也非常齊全。比如NESASM,CC65,VirtuaNES模擬器等。當然,製作出來的遊戲,可以在模擬器上運行,但並不表示做成卡帶能在實機上玩。這時候仍然需要燒錄卡或者其他卡帶仿真設備來測試了。下圖為2010年和2012年由Sivak Games(國外民間愛好者)製作發行的戰地小子1和2的實體卡帶。(這個是美版紅白機遊戲卡帶,造型外觀都要比日版的大一圈)紅白機的遊戲是怎樣開發出來的?下圖是現在有售的通用FC燒錄卡,對於懷舊玩家來說可以在實機上玩到大部分遊戲。對於開發愛好者來說,則可以用來進行實機調試。紅白機的遊戲是怎樣開發出來的?

工程师杰哥健身
2017-10-15

對nes的學習和研究我也有快十年的歷史。

剛開始是閱讀模擬器代碼,期間查漏補缺,學習硬件知識,直到最後還是從最簡單最基礎的做起,寫nes的測試程序。簡而言之,當時我連程序都不會寫,就想到寫模擬器,這是本末倒置。

去年在幾個大神的指點下,已經開始用fpga對ppu進行時序上的復刻(其實已經有國人完成這一壯舉,從芯片版圖分析電路,分析出門電路,仿真,最後用FPGA實現)。其實有很多開源的nes fpga代碼,幾乎都是功能上的仿真,不能達到時序上的一致。

回到問題上來:

NES的CPU是6502,NES代碼都是用6502的彙編語言編寫的。

為何不用C,理由很簡單,那時候C剛剛發明。此外就算現在有了C編譯器(cc65),但是效率低,佔用資源高,總之缺點很多。

筆者有幸剛工作(2007年)的時候,就參與了很多彙編語言的項目,那時彙編也早就是個老古董了,當時我也是很抗拒使用,但是後來發現真的是很奇妙,能顯著優化代碼的空間和執行時間,對處理器有了進一步的理解。

NES遊戲的開發環境:

軟件就是彙編器了

硬件的話,那個年代我不太瞭解。看資料說是APPLE II(基於6502)和其他的一些仿真設備等。當然現在都是先在模擬器上測試的。

怎麼才算是掌握了NES開發:

筆者以前看過一些愛好者做過的一些NES遊戲,從遊戲角度來說,可以算個遊戲了。但是從NES硬件來說,根本沒有利用NES的機能。

能明白以下幾點,可以算是瞭解NES部分機能

1. SMB(超級瑪麗)中橫屏滾動,魂鬥羅的豎屏滾動是如何實現的?

還記得小時候,玩SMB時,MARIO走過一段後,背景往左移動(在資源匱乏的年代,這個真的是太神奇了),一直想知道,之前的背景到哪裡去了

2. SMB的分屏處理

小夥伴有沒有注意到,SMB 人物移動時候,屏幕分上下2屏,上屏的分數金幣那一欄是固定的,而下屏背景和人物是滾動的,這裡面涉及到了sprite 0 hit檢測,奧祕就在那個金幣上

3. 切BANK技術

最簡單的NES卡帶,以SMB為例,代碼/ROM佔用32K, 圖像/VROM佔用8K

但是魂鬥羅的卡帶,代碼/ROM 128K,沒有圖像數據。 其中就涉及到了BANK技術,此外圖像數據也放在代碼空間中

關於1和2點

網上有SMB彙編代碼的註釋和解析,可以搜索關鍵字SMBDIS ,好複雜的系統,沒有耐心堅持下去。

後來我找到一個大神做的mario往前移動的,背景就滾動的簡單DEMO(Advanced Nerdy Nights #4 (Sprite 0 Hit for a Status Bar) ), 一下子就明白了。

關3點

利用硬件來實現的,那些硬件就是我們現在都嫌棄的74系列的TTL芯片,看大家興趣,我再寫吧。

此外我發現,寫verilog代碼如果沒有數字電路的基礎,等於白搭,我現在又重新翻數字電路)

有錯誤的地方,請指正吧

目前就寫這麼多,有需要在更新吧

相關推薦

推薦中...