任天堂的图形显示技术 1992-10-30 任天堂的屏幕显示共有五个页面,由前到后依次为卡通0页、背景0页、卡通1页、背景1页、和底背景页。这五个页面只有背景0页和背景1页各占用1KB的屏幕缓冲区,而卡通页与底背景页均为虚页面,在内存中无具体的缓冲区,其中卡通页只能用定坐标显示的办法显示64个8×8点阵的图形块,而底背景页只是一个颜色页,不能显示任何图形,当然也就无需缓冲区存在了。 为了在1KB的背景页里显示出256×240的分辨率的图形,任天堂硬件规定;在背景页缓冲区里每一个字节代表一个8×8点阵的图形块,整个页面纵向使用30个字节,横向使用32个字节,从而构成纵向30×8=240个点、横向32×8=256点的分辨率。 为颜色显示的需要,屏幕上的一个点在图形ROM中占用两个位(BIT),利用这两个位可实现4个颜色状态(00、01、10、11),这4个颜色状态并不固定为4种颜色,而是由显示缓冲区的另外两个位指向,从16个背景颜色寄存器的调色板中任选出4种来,因此,也可以说背景页上的每一个点可显示16颜色,如果让该点的颜色连续变化,根据图形处理器(PPU)可产生64种颜色的条件,该点也可连续变化出64种颜色。 在实际应用过程中,任天堂的5个页面均可开可关,或单独显示,或相互叠加,具体由CPU驱动$2001这一页次寄存器中的软开关来设定。为了使画面自然显示,绘图动作一般在幕后进行,因此两个背景页一般只显示其中一页,另一页用来完成幕后绘图动作。但有时为了某种特殊效果,有的软件故意将绘画动作显示于当前页,如《FANCY MAR10》,用来造成一种梦幻的效果。又如《SUPER CONTRA》,其封面先显示三个蓝字,然后红色的“SUPER”等字慢慢叠加于其后,这就是采用了幕后绘图,然后慢慢叠加于当前页的技术。 在背景页显示的图形,一般是静止不动的,但也有些软件,其背景图形可以完成某些动作,如《1944》中波光鳞鳞的海洋,《LIFE FORCE》中汹涌澎湃的火山,都是非常壮观的动感背景,这是怎么实现的呢? 原来,这些软件的图形字模库并非存于ROM中,而是存于RAM中,在屏幕显示时,图形RAM中的内容不断地被CPU改变,PPU又将已改变的图形送往屏幕显示,于是便形成大面积的动感效果。 任天堂的图形处理技术是相当巧妙的,感兴趣的读者不妨也做些观摩,相信也能揭开不少奥妙。