NES -Tips

void PPU6528::ScanlineStart()
{
	if (PPU.m_REG[1] & (PPU_SHOWBG | PPU_SHOWSPR))
	{
		m_CurLineOft = m_ScreenOffset;
		m_CurByteIndex = m_ByteIndex;
		m_Counter = (m_Counter & 0xF3E0) | (m_Register & 0x0C1F);
		/*   
		                   渐进 ---------------->
						    |
							|
							|
						   \|/
		  m_Counter 0x0NNN NNNN NNNN NNNN
		  & 0xF3E0  0x1111 0011 1110 0000
		            0x0NNN 00NN NNN0 0000
					   ###   ## ###
					    |       \
						|        \
						|         \
						|          \
						|           \
						|            \
						|             \
					   \|/            _\/
					   yOft           D10->MAX(...)
<-------------------------------------------
	                       恒定 ----------------->
						    |
							|
							|
						   \|/
	    m_Register 0xNNNN NNNN NNNN NNNN
		&0x0C1F    0x0000 1100 0001 1111
		           0x0000 NN00 000N NNNN
				          ##      # #### D5->MAX(2^5 - 1)
						  |
						  |
						  |
						  |
						  |
						  |
						  |
						  |
						  |
						 \|/
					   命名表地址 %10($2800)
					            %11($2C00)
								%01($2400)
								%00($2000)

								每一个属性表偏移 为 64Bytes

                       共占 6 Bits 2^6 刚好占用 64 Bytes

					    属性表 Offset 索引 
					            \
							     \ 
							      \
								   \
								   _\/
					   高三位 由 m_Counter   D8-D10 决定 ...(渐进)
					   低三位 由 m_Register  D3-D5  决定 ...(恒定)
		*/
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值