PPU6528的接口和寄存器
一、显示状态寄存器
显示状态寄存器用于控制背景页切换、卡通卡切换、点阵切换和底背景颜色切换等。寄存器使用了两个字节,即$2000-$2001,每个字节有8位,共可表示16种不同状态。但目前并没有全部使用这些状态开关。
对于$2000有三个状态开关,即:
BIT0:背景页切换开关,置0显示第一背景页($2000$23FF),置1显示第二背景页($2400$27FF),目前大部分游戏软件及FBASIC语言软件均以第一背景页为主背景页,即BIT0置0状态。
三、PPU卡通页地址寄存器
PPU的卡通页地址可设于CPU地址$0_$FFFF之间任意地方,其地址高位寄存器在$4014、地址低位寄存器在$2003。通常卡通页地址被设于第二页即$200_2FF,这时$4014被置为02,$2002被置为00。若$2002被置为0F,则表明卡通页地址在$20F_$30E。这一灵活性为卡通人物的切换创造了更好的条件。本来硬件只允许64个8×8卡通块在屏幕上的运动,现通过卡通页寄存器的切换,将使屏幕上出现更多的卡通块,从而增强了娱乐效果。在软件《一九四四》、《KAGE》、《POOYAN》中均使用了这一技巧。
四、PPU背景页坐标寄存器
PPU背景页坐标寄存器位于$2005。
PPU以此寄存器中数值作为屏幕左上角的坐标。通常用以下程序来设定坐标:
LDA # $ 00
STA $ 2005
STA $ 2005
LDA $ E(EFF)
STA $ 2005
LDA $ F(FF0)
STA $ 2005
RTS
五、PPU内存地址寄存器
PPU本身可管理16KB的地址空间,地址为$0000-$4FFF。其中$0000-$1FFF为图形数据存储区,通常称为图形ROM;$2000-$4FFF为屏幕缓冲区和配色区。这16K空间不能被CPU所直接寻址,而必须在PPU内存地址寄存器$2006中设定地址,再从PPU内存数据接口$2007中读写该地址的数据。
六、PPU内存数据接口
PPU内存数据接口位于$2007,它与内存地址寄存器$2006配合使用,CPU通过它可读写PPU内存$0000_$3FFF中的任一单元,从而实现图形刷新和屏幕切换。下面是几个程序实例:
例1:在屏幕左上角显示“A”字
LDA $ 2002
LDA # $ 20
STA $ 2006
LDA # $ 00
STA $ 2006
LDA # $ 31
STA $ 2007
RTS
例2:读出屏幕右上角数据
LDA $ 2002
LDA # $ 20
STA # 2006
LDA # $ 1F
STA $ 2006
LDA $ 2007
LDA $ 2007
STA $ 00
RTS
七、PPU颜色寄存器
PPU共有32个颜色寄存器,位于$3F00-$3F1F区间。其中$3F00-$3F0F为背景页颜色寄存器,$3F10-$3F1F为卡通页颜色寄存器,每个寄存器可从64种颜色即$0-$3F中任选一种寄存,并允许重复。在正常软件颜色设置时,一般为四个寄存器必有一个设为黑色,此外为了表现软件图像的立体感,通过颜色深浅变化和亮度调配使图像有凹凸感,需要将众多寄存器设置成同一颜色系,从而造成屏幕显示颜色数量的减少。相反某些不追求立体感的软件,象《RAINBOWISLAND》,其屏幕效果倒给人以色彩缤纷之印象。
八、综述
PPU以其强大的功能、方便的I/O接口为CPU的图像控制提供极好的环境。其实任天堂CPU6527的主频只有1.3MHZ左右,连8088和8086都比不上,然而同是一个《CONTRA》软件,同样出于日本KONAM1之手,其PC版本就比任天堂版本逊色了几多。其中PPU所起的作用,那是不言而喻的。(福建陈盛旋)