国产免费无码不卡A片视频喷水_3p一女两男三飞做爰视频_91九色视频在线观看_14小箩洗澡裸体高清视频_影音先锋成人网

當(dāng)前位置: 首頁 > 資訊

FC街霸修改教程2---PPU和專用擴(kuò)展芯片說明

日期: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)簽:

熱門推薦

猜你喜歡