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

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

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

 
 
 

日志

 
 

每周一Mapper(第二周 Mapper 76)(下)  

2009-08-07 23:43:32|  分类: fc资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

5 VROM具体切换

///////////////////////////////////

8000h Index/Control (3bit)

操作的端口是$8000

Bit2-0 Command Number

有效位是0~2,就是有效值范围是0~7

2 - Select 2K VROM at PPU 0000h-07FFh

输入2就是选择加载的地址为PPU内存的$0000-07FF,就是表0的前半段,一次2KB

3 - Select 2K VROM at PPU 0800h-0FFFh

输入3就是选择加载的地址为PPU内存的$0800-0FFF,就是表0的后半段,一次2KB

4 - Select 2K VROM at PPU 1000h-17FFh

输入4就是选择加载的地址为PPU内存的$1000-17FF,就是表1的前半段,一次2KB

5 - Select 2K VROM at PPU 1800h-1FFFh

输入5就是选择加载的地址为PPU内存的$1800-1FFF,就是表0的后半段,一次2KB

8001h Data Register (Indexed via Port 8000h)

端口$8001是写入数据段,切VROM的话,向这端口写入一个数X,就是将第XbankVROM数据段切页。这里(VROM)1 bank2K

///////////////////////////////////

向内存的$8000写入02就是将要切页到PPU $0000-$07FF(指内存)

假设你的PROM段只有64K

(这里PROMbank8K,所以64K=8 banks$0010-$1’600F

再向内存的$8001写入00就是将$1’6010-$1’680F(NES文件)切入。

这里$0010-$200F指的是NES文件的地址段,即$0000-$000F是指文件头。

每段就是2K(换算成地址段是$0000-$07FF

如此类推

假设PROM段有P banks,(每bank 8K)则S=$0010+$2000*P

SVROM(CHR)开始的地址。

写入$8000的值

NES文件的地址段

切换到PPU的内存地址段

0

S – (S+$07FF)

$0000-$07FF

或者

$0800-0FFF

或者

$1000-17FF

或者

$1800-1FFF,

1

(S+$0800) – (S+$0FFF)

2

(S+$1000) – (S+$17FF)

3

(S+$1800) – (S+$1FFF)

x

如此类推

(S+$0800*X)

(S+$0800*X+$07FF)

FF

。。。

PPU的内存有8K。背景和精灵各4K

之后用法跟Mapper0的一样了。

END.   2009-8-7

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

历史上的今天

评论

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

页脚

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