【原創】NES第七波:制作NES的具體流程和學習大綱


    有網友看了前面六波教程,還是要跟我說一句:“不名所以,寸步難移。”

    我打坐想了整整五分鍾,還是問了問群友。得到一個結論,“我將NES的戰場藏起來了!”

    原來是我的不對,那么接下來,我就為大家打開戰場之門。

 

。。。

一、制作NES的具體流程:七步

   第1步:設計畫面,【還有別的,例如BGM、人物。。。這些對於初學者不重要。初學者就整個HELLO WORLD。那么你倒是要想想這串寫在哪個位置。找個方格本畫一畫,定個坐標系。】

   第2步:准備素材,【我們只說HELLO WORLD用的素材吧,說多了也是白說。你會問這是字母呀,怎么要素材。呀!NES不是電腦,不自帶字體呀。】

   第3步:選一款編譯工具,學會用法。【后面寫代碼也是按對應的編譯工具去寫,總是會有區別的,不怎么通用。只有百曉生明白每個編譯工具的區別,初學者還是只學一種。我推薦學兩種(互補長短)。】

   第4步:擼代碼。【呀!你不會,那學呀,我下面會注解一下HELLO WORLD代碼。】

   第5步:測試代碼。【天下最無趣的事兒。】

【你又要跳出來問我,說好的BGM呢,能不能用mp3或wav。素材是不是用jpg或bmp。我說你想多了。NES那個年代,MP3的爹媽還沒認識呢。同理jpg也是想多了。等搞明白了顯示的辦法,我再說說音樂的事。音樂只能第3方軟件造NSF,而用作NES的BGM,要學會看代碼才行。而且代碼龐大。音樂是以數據的方式存在的。】

    第6步:編譯與文件合並。【代碼編譯之后只不過是PRG【程序BIN】,還要合並NES的文件頭和素材。初學者對"NES文件頭"的認識不需要太多。】

    第7步:測試測試,上模擬器!【有任何不滿意或者意外,或者失敗。回到第4步。】

 

二、學習大綱:下面是戰場地圖(必須依着大綱次序學習,不要跳級。心急也要學半桶水才行。)

1 學習二進制。有人學會二進制對十進制的轉換就叫喚着自己學會了二進制。無語。你感授到二進制的力量沒有?你見識過圖靈機的代碼沒有?你知道圖靈機是怎么工作的?二進制是與邏輯運算有等效關系的。那就是說,也要學一學邏輯運算。對於邏輯簡化的過程還是要學一學。

2 學習邏輯門電路。停停,學編NES游戲與門電路有什么關系?有兩重關系,一是程序的算法,有很多靈感來自門電路,門電路與程序是同源的。二是NES程序是無API的、是無系統的,所以是最底層,必然與硬件有接觸,而且必須寫驅動硬件的代碼。(害怕了嗎?)

3 學習6502匯編的尋址和指令。呀!我們的C語言呢?誰誰誰不是說好了可以用C語言的。那你去找那個誰。我在NES上還玩不轉C語言。怎感覺繞着圈寫匯編。還不如我的C#。等學會了可以跟我去用C#玩轉NES。

4 學習iNES結構和文件頭。學會怎么拼接各個數據塊。PRG(程序BIN)也可以看作一個數據塊。文件頭是模擬器用來解讀NES的數據包。包含NES文件的一些特征和數據塊信息。

5 學習PPU。這是一個硬件。你要學會驅動它。去實現顯示一個畫面或大標題。如果說CPU和它的總線組成一個小電腦,那么PPU和它的從屬總線也組成一個小電腦。顯示的方法全都在於如何驅動PPU。你要問我要驅程,還要問問能為能升級?說笑了。得你自己去寫呀。要深入的話要從NES的電路圖中的總線分配芯片的接線方法。我自己編了一個軟件來分析。。。PPU的顯示數據怎么編的?

6 學習手柄的驅動代碼。呀手柄就一個4021門電路。是類似SPI的傳送方式。要理解的話要依靠NES的電路圖才能明白。

7 學習6502CPU的內部運行,還有中斷。主要學NMI。WHAT什么什么英文。這個在學6502匯編時,從6502CPU的資料中有說過其運行過程。

7 學習APU,這是音樂生成器。你也要學會驅動它。哈哈,沒聽說過音樂要生成的,不是錄錄錄的嗎?呀!MIDI與電腦聲卡怎么工作的?弱弱的說,不是調音的嗎?嘻嘻。算了。

8 學習切頁和Mapper,這又是什么。6502只有8位,它的地址總線是16位,那么總容量(RAM+ROM)=64KB。就這么點兒,切頁是替換的意思,換一頁新的來,以空間就大了,就好比一眼只能同時看一本書的兩頁,如果翻頁來看就可以看完整本書了。Mapper是文件頭的一個參數,它指定了切頁的類型。還有一些別的擴展功能。其實Mapper是指代卡帶的類型。

9 學習游戲的組織,上面說的只是硬件驅動的基本知識,讓你能夠玩得轉NES。但是編一個游戲,那就是游戲在玩轉你了。例如,怎么讓一個主角站地圖的地面上,不是站在空中,而不是一下跌穿地板,再從上面跌下來。怎么判斷遇怪,怎么處理弓箭、子彈或炮彈。

到這里,一個基本的游戲就出現了。例如:貪吃蛇。

10 滾屏、四向無窮迷宮、分裂屏幕顯示、超過固有顏色限制、背景后面的鬼影、漢字制作與顯示、字庫、漢字輸入、動力音樂等怎么做到的?呵呵,是不是想得太遠。從未入坑到棄坑。

 

看到這里,我確定有90%以上的人要棄坑了。這個數字我覺得寫小了。

這就是戰場。看一眼就會嚇跑的戰場。

。。。

 

    我本想慢慢將NES的點滴寫出來,不過我寫得太慢,又沒有太多時間。我想着我網盤有那么多資料。就算不等我的教程,也可以從我的網盤找到足夠自學的東西。。。

 

    寫教程已不是第一次了,我寫過好幾次了,都是寫前幾篇就沒有了。。沒寫完的原因很簡單,一桶水是倒不出完整一桶水的。我只有半桶,那只能倒出1/3就很好了。有時想着碼字,想着想着就想遠了,最后得一結論:還沒學深入。

 

維京獵人 2021-7-20


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM