王建興

王建興

本業為軟體開發,專長是電腦網路、分散式系統、軟體架構和程式設計。

最重要的業外興趣是經典老車,因為對於老車的偏好,愛上了小玩具車的收藏。喜歡咖啡和酒,一個白天喝、一個晚上喝。

最常掛在嘴邊的口頭禪:「所以我說人帥就是好」。
王建興

任天堂紅白機真是一代傳奇主機,多少經典之作,在那個年代啟蒙了好多人對遊戲世界的理解。

即使江山代有新機出,帶來更炫麗的聲光效果,但經典遊戲的遊戲性不但不容易超越,反而歷久彌堅。紅白機在我心目中就是有著不可替代的地位。

maxresdefault

記得大四下學期的某個晚上,隔天還有個研究所考試,但半夜我還在改著我的 6502 CPU 的 emulator,完全不顧再幾個小時之後,就要登場的生平第一次研究所考試。

MOS 6502。(圖片來源)

MOS 6502。(圖片來源

為什麼需要寫這 6502 CPU 的 emulator?其實我是在寫任天堂紅白機(即 NES)的模擬器。因為紅白機用的是 6502 這顆 CPU,想要做出一個紅白機的模擬器,第一步便是模擬這顆 CPU 的指令集。為此,先去圖書館借了一本講 6502 指令集的書,對於之前只接觸過 80×86 組合語言的我來說,這套指令集顯得有點新鮮。畢竟 x86 是那麼的 CISC ,而 6502 比較精簡一點。

最初用 C++ 實作了一版,但效能不太行,接著火大用 80×86 組合語言重寫了一版,然後開始處理和紅白機有關的部分,像是繪圖及音效。

紅白機的繪圖雖然也是記憶體映射到特定的記憶體位置,和 PC 相似,但是顏色運用卻相當受限。為了寫繪圖的部份,讀了國外網站上的好些文件。

記得沒錯的話,整個畫面總共可以用到十六色,這十六色都在調色盤裡記錄其 RGB 值,但這並不意謂著可在遊戲中處處使用這十六色(如 PC 的 EGA 即為如此),它將畫面再切分為若干個 tile(方格),在每個方格裡只能用四色,而整個畫面即為諸多的方格所組成。

所以從這點來看,便不難明白小時候我們所看到的紅白機畫面,所呈現出來的顏色特性。

在這麼受限的硬體特性之下,遊戲開發商仍舊能夠在超小的儲存容量空間下發揮,創造出一個又一個的經典遊戲。

當我寫的模擬器載入《超級瑪莉》遊戲的 ROM 之後,遊戲執行開場畫面。只看到瑪莉歐往前奔跑接著撞擊磚塊,我忍不住掉下淚來。

之前說的那場研究所考試,好像也沒那麼重要了。

推薦閱讀

  • 林宜謙

    經典遊戲的遊戲性不但不容易超越! 寫的真好. 不曉得為什麼, 看了有點淡淡的愁悵感.