第十八章 破解6502密碼(上)
傍晚,橫井俊平從任天堂總部出來,果然在自己的郵箱內(nèi)找到了冬野美紀(jì)投入進(jìn)來的那本小日志。
摸了摸衣袋內(nèi)硬硬的鑰匙。雖然今天是節(jié)日,但橫井俊平卻開著車,很快趕回了自己的公寓。來不及換上浴衣,他回到了自己的辦公桌前,打開了日志本。
王秋陽的回復(fù)寫得非常工整,不光日文寫得漂亮,其中的漢字更是讓橫井俊平有一種賞心悅目的感覺。他現(xiàn)在已經(jīng)完全可以肯定,這篇提案絕非出自冬野美紀(jì)之手。
王秋陽首先回答:其一,6502芯片最大能夠支持到二十四色同顯,另外的色號您可以理解為視覺暫留。
橫井俊平看到這第一行字,心中再次掠過失望的感覺,不過心情反而平靜了下來。因?yàn)樗_定這個(gè)投稿者是一個(gè)誠信,務(wù)實(shí)的人。畢竟做匯編的人,不能說大話,更反對夸夸其談,數(shù)據(jù)代表一切。0就是0,1就是1。
果然,王秋陽后面的回復(fù),和橫井俊平推論的相差不多。
王秋陽說,6502芯片的同屏發(fā)色數(shù),原本應(yīng)當(dāng)支持二十四色,十二色的同顯是人為控制了它的上限。這是由6502的運(yùn)算量所決定的。因此單一的6502芯片,可以達(dá)到二十四色同顯,但只能夠用于靜止的畫面。
橫井俊平感慨說:“能夠用于靜止畫面,也算不錯(cuò)了?!碑?dāng)然顯示出這樣的畫面后,主機(jī)就不能再做任何事情,或許可以利用這個(gè)性能開發(fā)出一些插畫,也算是能夠提升游戲質(zhì)量?
繼續(xù)看了下去,橫井俊平的情緒卻再次被調(diào)動(dòng)了起來。
因?yàn)橥跚镪柨隙ǖ恼f,如果稍適升級,同顯二十四色可以運(yùn)用在游戲上!
怎么可能?
橫井俊平心中一陣微跳,迫不及待的觀看后面的內(nèi)容。
王秋陽比喻,6502芯片,就像一輛沒有裝離合器的跑車,任天堂現(xiàn)行使用的MMC芯片就是離合器。附加MMC芯片的卡帶,能夠讓FC同顯的色彩達(dá)到十四色。這并非是芯片有附增色彩的功能,它實(shí)際上是一個(gè)定時(shí)器,在運(yùn)算的縫隙中,讓CPU訪問到更多的色號。
橫井俊平忍不住輕拍了一下桌子,贊嘆道:“說得好!”
MMC芯片,正是由任天堂自主研發(fā)的游戲卡帶附加芯片。
因?yàn)镕C的CPU只能訪問32KB地址,PPU只能訪問8KB。而一張卡帶通常是由程序部分的PRG加上圖形部分的CHR組成。如果沒有特殊芯片的支持,對于FC的硬件性能來說,一張卡帶的游戲ROM只能做到40KB。
然而如今的FC游戲,ROM容量早就超過40KB了。其解決方案就是通過卡帶上附加的MMC(Multi-memory controller或memory management controller)芯片來解決大容量ROM內(nèi)的BANK切換。
所以,MMC芯片除了作為堆積切換以外,芯片本身也有圖像或者聲音方面的增強(qiáng)功能,相當(dāng)于給FC提升機(jī)能。在FC模擬器上,ROM對應(yīng)的構(gòu)成以及MMC信息被叫做Mapper(構(gòu)圖者)。
但是MMC芯片為什么能夠提升性能?這個(gè)問題卻沒有多少人去刨根問底。而王秋陽和橫井俊平一樣,對MMC芯片的性能作出了詮釋。
MMC切換PRG文件時(shí),是譯碼器,而切換CHR文件時(shí),是定時(shí)器。在內(nèi)存的不同頁面進(jìn)行跳轉(zhuǎn),讀取74LS161并將譯碼電路集成化,這才是MMC芯片最大的價(jià)值。
因此在MMC芯片誕生之前,F(xiàn)C的主機(jī)在實(shí)際上已經(jīng)達(dá)到了同屏十三的發(fā)色量。不過這其中有一個(gè)特定的背景顏色,它不能隨意更換,那就是黑色。
程序員在制作圖像時(shí),很早就發(fā)現(xiàn)了“留白”的設(shè)定。他們在背景畫上空出一定的面積,不顯示任何一種發(fā)色。這在游戲運(yùn)行后,會(huì)顯示出黑色。
這實(shí)際上就是利用了電腦本身的BUG。因?yàn)楫嬅嬖诹舭椎奈恢茫豢赡茉谡嬲饬x上失去這片屏幕的存在,所以電腦會(huì)出現(xiàn)假死機(jī)的狀態(tài),也就是俗稱的花屏。
6502死機(jī),屏幕顯示的就是黑色。
而在6502的色號欄中,默認(rèn)的黑色色號是1E。另外還有十種黑色是非默認(rèn)色號。
如果在這之前,程序員已經(jīng)選定出了十二種其他色號,那么6502的BUG就已經(jīng)生成。因?yàn)樗约猴@示出了第十三種黑色色號,這個(gè)時(shí)候程序員只用從剩下的色號中任選一種,就能夠在其他需要的地方使用黑色。
比如人物,道具的修邊,都是這樣完成的。
MMC芯片,就是將這個(gè)固定的黑色色號,變成了第十三種可選用色號。而原本的留白,還能夠繼續(xù)使用黑色,由此達(dá)到了同顯十四色的效果。
橫井俊平看到這個(gè)結(jié)論,也不得不嘆服。
任天堂的程序員很多,但真正把理論研究到這個(gè)程度的,目前還沒有出現(xiàn)過。他當(dāng)然不知道,王秋陽的結(jié)論是多少代玩家在電腦模擬器上,才得到這個(gè)成果。
因此王秋陽向橫井俊平闡述了一個(gè)大膽的結(jié)論:利用6502的這個(gè)BUG,可以繼續(xù)發(fā)掘下一個(gè)可同顯發(fā)色。這個(gè)發(fā)色就是灰階。
6502的總發(fā)色數(shù)是五十二。其中四十八種彩色,三種灰階,然后剩下黑色。雖然有人提出過是四色灰階,但實(shí)際上只有三種。20和30都是[255,255,255]。
這款灰階,用肉眼看是白色的。像馬里奧的白褲兜,天上的云彩,使用的就是這款色號。
也就是說重復(fù)的色號20和30,也能夠像黑色那樣進(jìn)行留白,然后變成可以使用的色號,而不占用發(fā)色數(shù)。
“這可能嗎?”
橫井俊平已經(jīng)完全被吸引住了。但是這個(gè)時(shí)候,他卻發(fā)現(xiàn)今天的論題已經(jīng)結(jié)束,不由得心里一陣失落。雖然不知道投稿者到底是何方神圣,但是他當(dāng)真想詛咒這個(gè)家伙。
居然這么吊人胃口?
拿起了電話,橫井俊平打通了冬野美紀(jì)的電話:“美紀(jì)醬?是我,后面的內(nèi)容什么時(shí)候可以再給我答復(fù)???”
冬野美紀(jì)的聲音也傳了出來:“怎么了橫井叔叔,您好像很著急???不過公司有規(guī)定,投放的稿件您得按要求回復(fù),我才能在后面回復(fù)您呢?!?p> “好,我馬上回復(fù)!你別玩太遠(yuǎn),我過會(huì)兒就把日志本放到你的公寓郵箱?!?p> “不行啊,學(xué)院剛好放假!我還準(zhǔn)備和同學(xué)們一起去看大文字燒呢。”冬野美紀(jì)嘻嘻直笑。
“你這丫頭……”
橫井俊平無奈的嘆了口氣:“橫井叔叔還沒吃飯呢!要不請你把同學(xué)一起帶上,我請你們吃晚飯,怎么樣?順便把日志本給你。”
“好?。 ?