日期:2023-08-31 20:21:22 來源:嗶哩嗶哩
PPU內(nèi)存
$0000-$1fff,一共8k內(nèi)存,用途寫的是“圖案表”。游戲卡上的CHR芯片數(shù)據(jù)放到這里,大于8k時通過擴(kuò)展芯片分段放到這里,有的游戲卡里沒有CHR芯片時,是通過PRG芯片里的游戲程序?qū)RG芯片里的數(shù)據(jù)放到這里。PPU管理的內(nèi)存數(shù)據(jù)其實(shí)都是顯示到電視的圖案,圖案表里存放的是圖案的貼圖塊。
(資料圖片僅供參考)
一般情況下,$0000-$0fff(藍(lán)色部分,稱作圖案表0),這4k內(nèi)存里的貼圖塊用做游戲的背景使用。$1000-$1fff(綠色部分,稱為圖案表1),這4k內(nèi)存里的貼圖塊用做游戲的精靈使用,精靈主要就是玩家操縱的游戲角色。
從$2000開始,后邊的內(nèi)存就是和電視里顯示的游戲圖像相關(guān)的了,《任天堂產(chǎn)品系統(tǒng)文件》里有詳細(xì)的介紹,“命名表”就是有圖案表組成的背景圖像,也是電視里所要呈現(xiàn)的游戲背景圖像?!皩傩员怼本褪恰懊怼崩铩罢{(diào)色板”的配色數(shù)據(jù),在《電腦游戲機(jī)硬件與編程特技》一書里有詳細(xì)說明,似乎是因?yàn)橛布拗贫鴥?yōu)化出的一個東西。
當(dāng)背景圖案過于復(fù)雜,使用的圖案塊數(shù)量大于“圖案表”容量時,擴(kuò)展芯片就派上用場了,將圖案塊數(shù)據(jù)分段放入“圖案表”內(nèi)存,然后拼出一個完整的背景圖案。假如根據(jù)時間可以選擇放入不同的數(shù)據(jù)段,可以讓背景圖案產(chǎn)生動畫效果。關(guān)于精靈(玩家控制的游戲角色)的“圖案表”也是這個原理,根據(jù)不同的人物動作數(shù)據(jù)放入“圖案表”不同的圖案塊數(shù)據(jù),讓游戲中人物角色不至于花屏。
左邊“命名表”里圈出的兩個小人圖案,就是從右邊“圖案表”圈出的圖案塊數(shù)據(jù) ,假如根據(jù)時間改變“圖案表”里所圈出的圖案塊時(當(dāng)然其他的圖案塊不變),背景房子上窗戶里的小人會顯示動起來,像魂斗羅(日版)標(biāo)題畫面里的火焰應(yīng)該就是這種操作。
精靈也是這個操作,每個動作的數(shù)據(jù)擴(kuò)展芯片會將對應(yīng)的圖案塊數(shù)據(jù)存入精靈所使用的“圖案表”中。前面說的有瑕疵,應(yīng)該是游戲程序操作擴(kuò)展芯片將對應(yīng)的圖案塊數(shù)據(jù)存入精靈所使用的“圖案表”中。
我覺得《任天堂產(chǎn)品系統(tǒng)文件》應(yīng)該解釋的就這些啦!
下邊說一下擴(kuò)展芯片:
/wiki/INES_Mapper_091
因?yàn)槠涫且粔K牛屎芯片,沒有型號(有部分游戲卡是用mmc3芯片改裝的,這里忽略),所以下面都會以模擬器里的稱呼“91映射器”或是“mapper 91”代替。
CPU分段規(guī)定:(都是從NESDEV 網(wǎng)站查到的)
CPU $8000-$9FFF: 8 k ??可以選擇PRG-ROM 段
CPU $A000-$BFFF: 8 k? ?可以選擇PRG-ROM 段
CPU $C000-$FFFF: 16 k? PRG-ROM的最后16k段,是個固定的。
Mapper 91 規(guī)定了cpu內(nèi)存的$8000-$ffff(一共32k)分成了3個段,前兩個為8k段,每個8k段是可以選擇PRG-ROM?段的,可以是PRG里的任何8k段,通過游戲程序選擇。這說明了PRG-ROM里的數(shù)據(jù)是以8k為一段分的。cpu內(nèi)存最后一段為16k段,PRG-ROM里的最后8k+8k=16k段放到這里,是固定的,說明開機(jī)后最后這16k自動固定到$c000-$ffff這里。
為什么自動固定?因?yàn)槌绦虻娜齻€中斷地址在$fffa-$ffff里,幾乎所有fc游戲的PRG-ROM…末端都是固定到CPU內(nèi)存末端的,要不開機(jī)后找不到程序入口游戲就運(yùn)行不了了。
畫的有點(diǎn)亂,意思是PRG-ROM里的8k段可以通過程序隨意變成cpu內(nèi)存的那個位置。這個過程有個名詞叫“切bank”。
PPU分段規(guī)定:
PPU $0000-$07FF: 2 k ??可以選擇CHR-ROM 段
PPU $0800-$0FFF: 2 k ??可以選擇CHR-ROM段
PPU $1000-$17FF: 2 k ??可以選擇CHR-ROM段
PPU $1800-$1FFF: 2 k ??可以選擇CHR-ROM段
PPU這8k內(nèi)存分了4個段,都是可以選擇CHR-ROM段的。也就是說“圖案表0”分了2個段,“圖案表1”分了2個段。程序可以通過擴(kuò)展芯片分配CHR-ROM里的任意2k段到這兩個圖案表里,目的就是改變背景圖案和改變精靈動作圖案。
究竟怎么分配呢?mapper91資料里有介紹:
$6000: Select 2 KiB CHR-ROM bank at PPU $0000-$07FF
$6001: Select 2 KiB CHR-ROM bank at PPU $0800-$0FFF
$6002: Select 2 KiB CHR-ROM bank at PPU $1000-$17FF
$6003: Select 2 KiB CHR-ROM bank at PPU $1800-$1FFF
當(dāng)在游戲程序里將CHR-ROM里的段序號(上圖紅色數(shù)字)寫入規(guī)定的地址($6000、$6001、$6002、$6003)時,該段數(shù)據(jù)就是“圖案表”里所對應(yīng)的數(shù)據(jù)了。
PRG-ROM分配方法也介紹了:
$7000: Select 8 KiB PRG-ROM bank at CPU $8000-$9FFF
$7001: Select 8 KiB PRG-ROM bank at CPU $A000-$BFFF
當(dāng)游戲程序代碼將PRG-ROM里的段序號寫入規(guī)定的地址時,該段數(shù)據(jù)就變成那兩段內(nèi)存里對應(yīng)的數(shù)據(jù)了。具體是怎么變化過去的,我也不知道。就記住這些規(guī)定的地址是個端口就行。記住向這些端口寫個數(shù)據(jù),就能設(shè)置或是得到一些功能就行啦。
關(guān)于mapper91的其它端口功能還有命名表鏡像設(shè)置端口和IRQ啟動和停止端口,命名表鏡像在《任天堂產(chǎn)品系統(tǒng)文件》里有介紹,SF3里使用的是垂直鏡像,沒啥說的。IRQ方面我也弄不太懂,好像就是在電視機(jī)的掃描線到某個位置(應(yīng)該在運(yùn)行到電視屏幕看不到的掃描線處)設(shè)置一個掃描線數(shù)值,然后寫入IRQ啟動端口一個數(shù)(寫什么數(shù)好像沒有規(guī)定,怎么寫之后分析游戲程序代碼時再講),當(dāng)掃描線再次運(yùn)行到這個數(shù)值時,IRQ就運(yùn)行IRQ中斷里的程序了,IRQ程序運(yùn)行時還得寫一下IRQ停止端口來確定一下。
想詳細(xì)了解IRQ只能自行網(wǎng)絡(luò)搜索了,呵呵呵呵。
mapper91 映射器知識總結(jié):
記住$6000、$6001、$6002、$6003、$7000、$7001、$7006、$7007這幾個端口功能就行了!
標(biāo)簽:
FC街霸修改教程2---PPU和專用擴(kuò)展芯片說明
推文標(biāo)題“努力努力白努力”被指傳播消極情緒,茶顏悅色致歉
建立“一生一檔” 做好分流安置 確保受災(zāi)學(xué)生如期開學(xué)
全國首個考古工地安全專業(yè)標(biāo)準(zhǔn)獲批,將于今年9月底起實(shí)施
“金九”行情能否如期而至?六大券商看市:把握三大主線
創(chuàng)業(yè)板指漲逾1% 上漲個股近3600只
荸薺甘蔗燉梨湯(關(guān)于荸薺甘蔗燉梨湯簡述)
俄烏之戰(zhàn),美國實(shí)現(xiàn)三大目的,輸出通脹,削弱俄羅斯,收割歐洲?
北京房地產(chǎn)市場迎來重大利好政策
如何消除皺紋最簡單方法 怎樣去除皺紋最好的7個方法
半年新增2700家,電競酒店開啟“亞運(yùn)時間”!
德國7月進(jìn)口價格指數(shù)同比下降13.2% 創(chuàng)1987年以來最大跌幅
領(lǐng)導(dǎo)辦公室擺什么綠植好
萊蕪市綠原投資開發(fā)有限公司(關(guān)于萊蕪市綠原投資開發(fā)有限公司簡述)
蓮沼剛(關(guān)于蓮沼剛簡述)
駐馬店驛城區(qū)水屯鎮(zhèn):入戶走訪,筑牢防溺水安全網(wǎng)
建科股份8月31日開盤跌幅達(dá)5%
前7月甘肅省城鎮(zhèn)新增就業(yè)22.06萬人
中考高職專科學(xué)校在全國排名(中專生高職高考)
哈特首發(fā)鶯歌替補(bǔ)?科爾:對這場比賽感到滿意 還沒做出任何決定
華廈眼科08月30日被深股通減持31.07萬股
(新華全媒+)春播希望 秋收幸福——稻農(nóng)老陳育種記
綏中雪佛蘭賽歐價格及配置詳解
北方華創(chuàng)(002371):23H1收入同比高增長 半導(dǎo)體設(shè)備盈利能力大幅提升
大颶風(fēng)將登陸美國佛羅里達(dá)州,巴菲特的“豪賭”將接受考驗(yàn)