注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深夜是徘徊在潮湿睫毛上的我的梦以及他的梦

是直到最后都无法放手的一种气息,是我们生命中最后的思念……

 
 
 

日志

 
 

菜菜鸟自编FC(NES)游戏,初阶经历记录05  

2009-06-26 13:35:55|  分类: FC开发记录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

近来好多人问我,显示图片的办法。

这里就总结一下:

图片的显示,从途径上分类,可分两种。一种是背景,另一种是精灵。

1背景显示

FC的图形处理,由PPU完成。背景的显示是通过PPU的缓存来完成的。

(1)字模的存放。这个跟mapper有关。我只说最简单的mapper0。就是没有切页的。在文件头定义了NES文件的长度和两个组成部分的长度。做NES文件,必须保证长度准确。如果mapper0,NES文件结构为“文件头+程序段+字模段”字模文件CHR作为字模段放在最后面,同时字模文件要有2个。

(2)字模的选用。前面说了,最少有2个字模文件。一个字模文件是给背景用的,另一个是给精灵用的。要程序中对端口设置,确定0页字模和1页字模,哪一页对应哪种。(这端口请看《任天堂产品系统文件》,我记不清楚,好像是$2000或$2001)mapper0只有2个字模页。

(3)字模的号tiler。每个字模用了16个字节。就是说0000~000F是0号字模,0010~001F是1号字模,0020~002F是2号字模,如此类推。

(4)显示的准备:配色。对端口设置就能配色了。(这端口请看《任天堂产品系统文件》,我记不清楚)

(5)PPU的内存页,也就是缓冲区。一共有4页。每页有不同的地址区。(这地址请看《任天堂产品系统文件》,我记不清楚)文件头同时也说明了PPU的内存页的连接方案。

(6)PPU缓冲区连续写入的方向。在端口是设定是横向还是纵向的。。(这端口请看《任天堂产品系统文件》,我记不清楚,好像是$2000或$2001)

(7)显示:

先说不滚屏的。

每个PPU缓冲区的地址就显示一个字模。就是向这地址与入字模号就行了。

地址的写入,给$2006分别写入地址的高位和低位。然后给$2007写入字模号。

连续写入,不用再写地址了。继续写字模号就行。

显示一幅图就用个循环连续写入就行。最合设定$2005为0,要2次。这也是高低位分两次写的原故。

滚屏就是改动$2005

(8)闪屏:

要明白,闪屏是电视造成的。我们只能要回扫线期间(vblank)去写$2007和$2005。消除闪屏方法有2种,一是禁止中断,等待回扫线期间才去写屏(显示图像)。二是允许中断,在中断中写屏。

 

2精灵的显示

(主要是坐标的。待续)

  评论这张
 
阅读(693)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017