任天堂产品系统介绍.doc

上传人:F****n 文档编号:94488096 上传时间:2019-08-07 格式:DOC 页数:29 大小:494.50KB
返回 下载 相关 举报
任天堂产品系统介绍.doc_第1页
第1页 / 共29页
任天堂产品系统介绍.doc_第2页
第2页 / 共29页
任天堂产品系统介绍.doc_第3页
第3页 / 共29页
任天堂产品系统介绍.doc_第4页
第4页 / 共29页
任天堂产品系统介绍.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《任天堂产品系统介绍.doc》由会员分享,可在线阅读,更多相关《任天堂产品系统介绍.doc(29页珍藏版)》请在金锄头文库上搜索。

1、任天堂产品系统文件(P 译、编 2002/10/10) 目录 _ 1、系统简介任天堂主机由6502处理器和一个特制的图形处理器组成。CPU是6502,而不是传言中的65C02(CMOS)。PPU的显存是和CPU的内存是分离的,可以通过对特殊端口的读/写来操作。卡带可能包含的内容有位于处理器地址$8000-$FFFF的ROM,和位于PPU地址$0000-$1FFF的VROM。由于NES只有2K的RAM,因此变量的可用的变量空间只有从$0000到$07FF共8个页面。在开机之后RAM和VRAM中的内容是0,但是注意:复位并不改变其中的内容。在更小的卡带,比如只有16KB的ROM,它占有$C000-

2、$FFFF,而$8000-$BFFF的空间是不用的。那些大于32KB的卡带,它被特殊的电路分页到一定的地址空间。一些卡带在$6000-$7FFF有SRAM,那是电池存储的位置。卡带VROM被用来做图案表(例如 Tile 表, 角色发生器等等)。通常的数量是8KB,包含两个图案表。大于8KB 的VROM被特殊的电路分页到一定的地址空间。内部的VRAM在 PPU 内存里定位于$2000-$3FFF,它用来存储命名表(例如屏幕缓冲)。虽然PPU 支持4个命名表,但只能支持两个的存放空间。另外的两个是开始两个的镜像。NES共有154条指令。在本文本里,你将遇到如下形式的符号:“Dn (5 位,3 位,

3、等等)。位是按从最低位(0 位)到最高位(7 位)。所有的十六进制都在前面加上一个美圆符号($)($2002,$4026,等等)是在6502处理器汇编里常用的符号,二进制前面加上一个百分号%。 2、缩写表NES 任天堂娱乐系统 Famicom 任天堂家用计算机,即FC FDS 任天堂磁碟机系统 CPU 中央处理器,NES使用一个定制的6502(NMOS)芯片,有些型号为6527 PPU 图像处理器,用来处理背景,精灵和其他图像特性,通常为6538 APU 声音处理器,集合在CPU内部,包含4个模拟通道和1个数字通道 MMC ROM和VROM的扩容控制,用来控制访问超过6502限制的64K地址,

4、同样,也可以扩容VROM VRAM 图像RAM,PPU专用,2K字节 VROM 图像ROM,储存图像数据的地方,可以由MMC切换到VRAM里 ROM 程序ROM,实际程序储存的地方,扩容部分可以通过MMC切换到PRGRAM里 RAM 程序RAM,和ROM同义,不同的是它是RAM SPRRAM 精灵RAM,RAM中的256字节,专用于储存精灵,它不属于VRAM或ROM SRAM 电池RAM,卡带上用来保存游戏记录的EPROM电擦写ROM DMC 三角波调制通道,APU用来处理数字声音的,也写作PCM通道 EXRAM 扩展VRAM,用在MMC5里,可以扩展VRAM容量 3、中央处理器NES定制的6

5、502内部特别加上了声音处理单元。NTSC制式的NES使用1.MHz主频,PAL制式使用1.MHz主频。CPU内存映像: 开始地址 用途 结束地址 $0000 2K字节RAM,做4次镜象(即$0000-$07FF可用) $1FFF $2000 寄存器 $2007 $2008 寄存器($2000-$2008的镜像,每8个字节镜像一次) $3FFF $4000 寄存器 $401F $4020 扩展ROM $5FFF $6000 卡带的SRAM(需要有电池支持) $7FFF $8000 卡带的下层ROM $BFFF $C000 卡带的上层ROM $FFFF 中断:6502有3个中断IRQ/BRK、N

6、MI和RESET,每个中断都有一个16位的向量,即指针,用来存放该中断发生时中断服务函数的地址。中断发生时CPU都会把状态标志和返回地址压栈,然后调用中断服务程序。IRQ/BRK中断由一下两种情况产生:一是软件通过BRK指令产生,一是硬件通过IRQ引脚产生。RESET在开机的时候触发,这是ROM被装入,6502跳到RESET向量指向的地址没有寄存器被修改,没有内存被清空,这些都只在开机是发生。NMI指不可屏蔽中断,它在VBlank即屏幕刷新时发生,持续时间根据系统(NTSC/PAL)不同而不同。NTSC是每秒60次,而PAL是每秒50次。6502的中断延时是7个时钟周期,也就是说,进入和离开中

7、断都需要7个时钟周期。它产生于PPU的每一帧结束,NMI中断可以由$2000的第7位的1/0控制允许/禁止。大部分中断应该使用RTI指令返回,但是有些游戏不用,例如最终幻想1。它用一个很奇怪的方式:手工修改堆栈指针,然后执行RTS指令。这种方法在技术上是可行的,但是应该尽量避免。以上中断在ROM内有以下对应的地址: 中断地址 中断 优先权 $FFFA NMI 中 $FFFC RESET 高 $FFFE IRQ/BRK 低 特别说明:NES的6502不支持10进制。虽然CLD和SED指令都正常工作,但是ADC和SBC都不使用CPU状态标志的“D”位。由于复位后“D”位的状态是不确定的,所以游戏通

8、常在程序开始时使用一个CLD指令。声音寄存器映射到CPU内部,所有波形发生的工作都在CPU内部完成。注意那两个分开的16K ROM段,它们可能是连续的,但是它们根据卡带的大小扮演不同的角色。有的卡带只有一个16K ROM,那么它就同时被装入$8000和$COOO。所有游戏都将它们自己装入$8000,使用32K RAM,但是它们都能够通过内存映射把多于一个16K ROM装入$8000。VROM也是同样的道理。当BRK中断发生的时候,CPU把状态标志压入堆栈,同时设置“B”标志。而IRQ中断发生时,CPU把状态标志压入堆栈,同时清除“B”标志。这是因为6502使用同一个向量来处理两种中断,用“B”

9、标志来区分它们。你可以用以下程序来区别两种中断: C134: PLA ; 拷贝CPU状态标志到A C135: PHA ; 把状态标志还回给堆栈 C136: AND #$10 ; 检查“B”标志 C138: BNE is_BRK_opcode; 如果设置了,就是软件中断(BRK)在NMI里指向BRK会导致已经被压栈的“B”标志被设置。6502的$6C指令(间接绝对跳转)有一个BUG,当低位字节是$FF时CPU将不能正确计算有效地址。例如: C100: 4F C1FF: 00 C200: 23 . D000: 6C FF C1 - JMP ($C1FF)本来它是应该跳到$2300的,但是在计算高位

10、字节的时候,在页面边界处地址是不能再增加的,所以实际将跳转到$4F00。需要注意的是,页面越界不会在变址间接寻址模式发生。由于0页面的限制,由于0页面的限制,所有变址间接寻址的读写都应该在计算有效地址之后和#$FF进行逻辑与操作。例如: C000: LDX #3 ; 从 $0002+$0003 读变址地址, C002: LDA ($FF,X) ; 不是 $0102+$0103._ 4、图形处理器PPU时序: NTSC制式PAL制式基频(Base clock).0Hz.0HzCPU主频(Cpu clock).5Hz.0Hz总扫描线数(Total scanlines)262312扫描线总周期(Sc

11、anline total cycles)1364(15.75KHz)1362(15.625KHz)水平扫描周期(H-Draw cycles)10241024水平空白周期(H-Blank cycles)340338结束周期(End cycles)42帧周期(Frame cycles)1364*2621362*312帧IRQ周期(FrameIRQ cycles)2983035469帧率(Frame rate)60(59.94Hz)50Hz帧时间(Frame period)1000.0/60.0(ms)1000.0/50.0(ms)镜像是指通过硬件映射特殊的内存地址或范围的一个过程。PPU内存映像:

12、 开始地址 用途 结束地址 $0000 图案表0(256x2x8,可能是VROM) $0FFF $1000 图案表1(256x2x8,可能是VROM) $1FFF $2000 命名表0(32x30块)(镜像,见命名表镜像) $23BF $23C0 属性表0(镜像,见命名表镜像) $23FF $2400 命名表1(32x30块)(镜像,见命名表镜像) $27BF $27C0 属性表1(镜像,见命名表镜像) $27FF $2800 命名表2(32x30块)(镜像,见命名表镜像) $2BBF $2BC0 属性表2(镜像,见命名表镜像) $2BFF $2C00 命名表3(32x30块)(镜像,见命名表

13、镜像) $2FBF $2FC0 属性表3(镜像,见命名表镜像) $2FFF $3000 $2000-$2EFF的镜像 $3EFF $3F00 背景调色板#1 $3F0F $3F10 精灵调色板#1 $3F1F $3F20 镜像,(见调色板镜像) $3FFF $4000 $0000-$3FFF的镜像 $7FFF 命名表:NES的图像通过Tile矩阵来显示,这个网格就叫命名表。一个命名表和字符模式下的屏幕缓冲比较相象,它包含字符的代码,也就是30列的32Byte长度。每个Tile有8x8个象素,每个命名表有32x30个Tile,也就是256x240象素。PPU支持4个命名表,他们在$2000,$2

14、400,$2800,$2C00。在NTSC制式下,上面和下面的8象素通常不显示出来,只有256x224象素;在PAL制式下,屏幕有256x240象素。需要说的是,虽然PPU支持4个命名表,任天堂主机只支持2个命名表。另外两个被做了镜像。命名表保存了Tile的编号,而Tile存在图案表里。计算命名表里Tile号对应的实际地址的公式是:(Tile号16)由$2000端口指定的图案表地址 命名表镜像:NES只有2048字节($800)的VRAM给命名表使用,但是如前表所示,NES有能力寻址到4个命名表。缺省情况下,NES卡带都带有水平和垂直镜像,允许你改变命名表指向PPU的VRAM位置。这种方式同时影响两个命名表,你不能单独改变其中的一个。每个卡带都控制着PPU地址线的A10 和A11。它可能将他们设置成以下4种可能的方式的1种。下面这个图表有助于理解NES里的各种镜像,指向PPU VRAM中命名表的12位地址相当于“$2xxxx”:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号