@經過一些google網路資料的查詢,第一次知道,原來四十年前的任天堂紅白機,雖然號稱family computer(家用電腦遊戲機),但其實紅白機的cpu的性能是非常簡化的。
@第一,紅白機的cpu只能做整數計算,不能計算小數點的浮點數。
@第二,紅白機的cpu只能做組合語言的二進位及十六進位的堆疊運算,不能做加減乘除,以及sin,cos等三角函數運算。@紅白機如此簡化的cpu,要做出馬利兄弟那樣的靈活動作,或是魂斗羅,魔界村那樣的雲會飄,背景會捲動等精緻畫面,再再的考驗紅白機的遊戲程式設計師的功力與創意。馬莉兄弟之所以能空中轉體,按相反鍵會剎車等靈活動作,是因為馬利兄弟的人物移動時,每個移動軌跡都切分為類似九宮格的部分,馬利兄弟的靈活動作,就是切分的九宮格移動軌跡,所做出的細微動作變化,先算成十六進位碼,然後再重寫回遊戲程式碼的段落裡面。可是紅白機的CPU是不能計算小數點的,要切分成九宮格的移動軌跡,只有先寫一個數字,然後再寫程式指令,把數字切分成100等分,造成0.01的程式碼效果。
@如此,馬利兄弟就可以在紅白機CPU不能計算小數點之下,做出精確計算小數點的空中轉體,反向剎車等靈活動作。
@因為紅白機的CPU的太簡化,所以紅白機遊戲程式設計師們,就發展出,PPU法,查表法,等組合語言程式的優秀技術。例如查表法,就是把加減乘除,SIN,COS三角函數,等計算結果先列表在遊戲程式碼裡面,然後遊戲遇到遊戲人物需要各種動作的數學計算時,不用算,直接用組合語言指令查表,然後遊戲人物就會快速地做出前進,後退,轉彎或跳躍等動作,這種因為CPU沒有加減乘除功能,所以把加減乘除的結果直接列表,用指令查詢來模擬真正的電腦CPU的效果,真的是遊戲程式設計師的巧思與天才的呈現。
@而這種直接把數學計算結果列表,不用計算只要查表的程式設計方式,在今日的網頁CSS動態效果,和一些AI即時查表運算上,還是有紅白機時代的延伸技術還在使用的。
@筆者五專電機科時,畢業的專題,是組合語言的晶片連接試波器的應用,可是當時是我同一組的同學做的,我根本不懂是混畢業的。(現在很多私立科技大學,這種陋習還在)但是在三十五歲再拾起BASIC,JAVA等電腦程式來溫習時,反而會好奇當年畢業專題的組合語言控制晶片,是怎麼做出來的。
@經過GOOGLE查詢資料,和問人工智慧約六七十個組合語言控制紅白機晶片的問題之後,大概了解,當年紅白機的CPU和晶片,用組合語言程式來做瑪莉兄弟,薩爾達傳說等遊戲,其實和用8051晶片和組合語言程式,來做機器手臂,生產線自動控制的原理是一樣的,只是一個是做遊戲,一個是做工廠的各種電子零件產品,有如此的分別。
@我原本以為的紅白機遊戲,其實代表的是四十年前,日本的半導體晶片產業,和電腦程式能力,能夠佔世界大半的市場,並威脅到美國的半導體業的日本工業的昭和時代啊......