ImageVerifierCode 换一换
格式:DOC , 页数:63 ,大小:4.76MB ,
资源ID:3809091      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/3809091.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(任天堂掌机GBA编程说明讲课教案.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

任天堂掌机GBA编程说明讲课教案.doc

1、任天堂掌机GBA编程说明精品文档GBA编程手册(翻译中)1.02版本GBA编程手册(翻译中) 1.02版本11 GBA系统51.1系统概述52 系统配置62.1 CPU框图62.2 完全框图72.3 内存设置和访问宽度82.4 高位在前83 GBA内存93.1 内存映射图93.2 内存配置103.2.1 GBA内部内存103.2.2 游戏卡内存103.3 游戏卡内存等待控制123.3.1 访问时序143.3.2 游戏卡总线154 LCD 液晶屏164.1 LCD状态174.1.1 垂直计数器174.1.2 LCD一般状态185 图像系统195.1 背景模式215.1.1 背景模式的细节215.

2、1.2 VRAM内存映射226 渲染功能236.1 字符模式背景(背景模式0-2)236.1.1 背景控制236.1.2 马赛克大小296.1.3 背景数据在VRAM的地址映射306.1.4 字符数据格式326.1.5 背景屏幕数据格式346.1.6 背景屏幕数据在LCD上的地址映射366.1.7 背景旋转和缩放特性416.1.8 背景的滚动446.2 位图模式背景(模式3到5)456.2.1 背景控制456.2.2 背景旋转和缩放466.2.3 点阵数据466.2.4 点阵数据在LCD上的地址映射476.3 OBJ精灵506.3.1 OBJ功能506.3.2 字符数据映射516.3.3 OA

3、M536.3.4 精灵旋转/缩放特性596.4 对象和背景的优先级611 GBA系统1.1系统概述GBA是一种对GameBoy(GBC) 向下兼容的高性能的掌上游戏设备。GBA拥有一个2.9英寸的TFT彩色液晶屏幕和32位的RISC类型CPU,游戏性能上超过了超级任天堂(SFC)。GBA CPU 32位RISC类型CPU (ARM7TDMI) / 16.78 MHZ向下兼容GBC的能力 为了兼容整合了一个8位的CISC类型CPU(不过,这个CPU不能和GBA的CPU同时工作)内存 系统ROM16K字节(包含2K字节的GBC系统ROM)工作RAM32K字节+CPU外部256K字节(两个时钟周期)

4、VRAM96K字节OAM64位*128调色板RAM16位*512(OBJ 256色,BG 256色)游戏卡ROM最大32MB:掩膜ROM或者Flash ROM游戏卡RAM最大32MB:SRAM或者Flash ROM显示 240*160*RGB可同时显示32768色特殊效果(旋转/缩放,混合,淡入淡出,马赛克)4个图像模式操作 操作键(A,B,L,R,START,SELECT和4个方向键)声音 4个声道(相当于GBC的声道)+2个CPU直接控制声道(PCM格式)通讯 串行通讯(8位/32位,UART,多人游戏,多用,游戏手柄总线)游戏卡 和DMG、GBC一样,GBA装备了32针的游戏卡连接槽。当

5、游戏卡插入的时候,GBA自动判断类型,并自动切换GBC和GBA模式。下面的游戏卡可以在GBA系统上面使用。1、 DMG游戏卡,DMG/GBC双模式卡,GBC专用卡2、GBA专用卡2 系统配置2.1 CPU框图2.2 完全框图2.3 内存设置和访问宽度当操作游戏卡的程序使用16位指令(16位编译器),操作CPU内部工作内存的程序使用32位指令(32位编译器),能得到更高的执行效率。2.4 高位在前In the AGB CPU, memory addresses are allocated in 8-bit increments, and little-endianformat is used i

6、n implementing the 8-, 16-, and 32-bit access widths.3 GBA内存3.1 内存映射图下面是GBA系统整个的内存映射图。3.2 内存配置内存地址的00000000h-07FFFFFFh区域被分配为GBA内部内存,08000000h-0EFFFFFFh被分配为游戏卡内存。3.2.1 GBA内部内存1)系统ROM从00000000h开始的16K字节是系统ROM。不同类型的系统调用使用这段ROM。2)CPU外部工作内存从02000000h开始的256K字节是CPU外部工作内存。这段内存是两个内存周期访问一次的,16位总线宽度。3)CPU内部工作内存

7、从03000000h开始的32K字节是CPU内部工作内存。这段内存用来保存程序和数据。4)I/O和寄存器这个区域是给寄存器使用的。5)调色板内存从05000000h开始的1K字节是调色板内存。这段内存用来保存调色板。6)VRAM从06000000h开始的96K字节是VRAM。这段内存用来保存背景和精灵数据。7)OAM从07000000h开始的32K字节是精灵属性内存(OAM),保存要显示的精灵和他们的属性。3.2.2 游戏卡内存1)游戏卡ROM从08000000h开始分配了3个32兆的游戏卡ROM空间。这个三个空间可以设置不同的访问速度。因此,他们被命名为“等待栈0”,“等待栈1”,“等待栈2

8、”。这样的设置可以更有效率的访问游戏卡内的不同访问速度的内存。等待栈0的基地址是08000000h,等待栈1的基地址是0A000000h,而等待栈2的基地址是0C000000h。另外,每个空间最顶端的1M位(注意不是字节)都是分配给Flash内存的。这个区域主要用来保存存盘数据。2)游戏卡RAM从0E000000h开始的区域是游戏卡内存区域。这个区域可以放置最大512K位(注意不是字节)的SRAM或者Flash内存。然而这个区域的数据宽度是8位的总线。由于这个设定,任何连接在这个区域的游戏卡设备必须用任天堂的库来访问。3.3 游戏卡内存等待控制32M字节的游戏卡内存已经被映射在从0800000

9、0h开始的区域,然而从0A000000h和0C000000h开始的两个32M区域也是从08000000h开始的区域的映像。这些映像使内存可以使用一致的游戏卡访问速度(1-4个等待时钟周期)。d15 游戏卡类型标志系统ROM使用这个标志。d14 预读缓冲标志当预读缓冲标志为1而且预读缓冲有剩余空间的时候,预读缓冲就可以在CPU不使用游戏卡总线的时候控制游戏卡总线,重复的读取游戏卡ROM的数据。当CPU打算读取游戏卡上面的指令,如果击中预读缓冲,那么CPU可以完全不需要等待就取得指令。如果预读缓冲没有击中,那么CPU就从游戏卡ROM取指令,那么等待时间取决于设定好的等待时间。当预读缓冲标志为0,那

10、么CPU总是从游戏卡内存取指令,等待时间取决于设定好的等待时间。d12-11 PHI中断输出控制控制PHI中断是否输出,可以一直设定为00(没有输出)。d10-08,d07-d05,d04-02 等待栈等待时间控制这三个区域可以分别设定等待时间(CPU时钟周期数)。CPU时钟周期数和等待时间控制的设定之间的关系如下。使用和你的设备恰当的设定。系统ROM运行以后(用户程序开始时),等待控制的值是000。如果游戏卡里面的MASK ROM的规格是(第一次访问/3个周期),(第二次访问/1个周期)。那么,需要把等待控制设定为101。d01-00 游戏卡RAM等待时间控制游戏卡RAM内存的访问等待CPU

11、时钟周期数也可以设定。下面是等待时间控制的设定和时钟周期数的关系。使用和你的设备恰当的设定。3.3.1 访问时序下面的时序图,先是如何访问游戏卡ROM,ROM规格是第一次访问/三个周期,第二次访问/一个周期的。1)连续访问2)随机访问3.3.2 游戏卡总线游戏卡总线包括32个接口,如下表。4 LCD 液晶屏GBA使用2.9英寸宽的反射型TFT真彩LCD(液晶)屏幕。GBA的垂直刷新空白间隔比DMG和GBC的都大,而它的水平刷新空白间隔是固定的。4.1 LCD状态4.1.1 垂直计数器VOUNT寄存器可以被读取,以得到当前是正在渲染LCD228行中的哪一行。数值范围为0-227。数值为0-159

12、表明正在渲染,数值为160-227表明正在处于垂直刷新空白间隔。4.1.2 LCD一般状态从DISPSTAT寄存器的0到5位可以读取LCD的状态信息。另外,LCD控制器可以产生三种中断请求。d15-08 垂直计数器设定设定垂直计数器比对和垂直计数器符合中断使用的值。范围是0-227。d05 垂直计数器符合中断允许标志允许在当前渲染行数(VCOUNT寄存器值)等于设定值的时候,生成一个中断请求。d04 H-Blank(水平空白)中断允许标志允许在水平空白时,生成一个中断请求。d03 V-Blank(垂直空白)中断允许标志允许在垂直空白时,生成一个中断请求。d02 垂直计数器比对这个标志表明垂直计

13、数器设定值和垂直计数器寄存器值是否相等。如果相等则标志值为1,如果不相等值为0。d01 H-Blank 状态检查是否处于水平空白间隔。d00 V-Blank 状态检查是否处于垂直空白间隔。5 图像系统根据软件的需要,GBA可以使用不同的图像系统。显示相关的项目主要是在DISPCNT寄存器设置。d15 精灵窗口显示标志控制精灵窗口是否显示的主要标志。关于精灵窗口的信息,参看“6.3 OBJ精灵”d14d13 窗口0,1的显示标志。控制窗口0,1是否显示的主要标志。关于窗口的信息,参看“8 窗口特性”d12-08 屏幕显示标志允许分别控制 BG0,BG1,BG2,BG3和OBJ(精灵)是否显示。d

14、07 强制空白设定此位可以引起CPU强行停止图形处理循环程序,这样CPU可以访问VRAM,调色板内存,OAM和内部寄存器。在强制空白期间,LCD显示一个白屏。然而,内部水平垂直扫描计数器在强制空白期间仍会继续工作。当内部水平垂直扫描计数器在显示期间取消强制空白的时候,显示会将在三根垂直线以后从头开始,。d06 精灵字符映射格式设定VRAM里精灵字符的映射模式设置为0代表精灵字符在内存中是二维映射的。设置为1代表精灵字符在内存中是一维映射的。关于精灵字符映射格式的信息,参看 “6.3.2 字符数据映射”d05 H-Blank(水平空白)间隔精灵处理标志设定为0,允许在水平扫描间隔(包括水平空白间

15、隔)进行精灵处理。设定为1,只允许在显示间隔而不允许在水平扫描间隔进行精灵处理。因此,当用户需要在H-Blank间隔期间访问OAM或者精灵VRAM内存的时候,应该设定1。然而,在这种情况下,最大精灵显示数是无法达到的。d04 显示当前帧选择当渲染带有两个帧的位图模式(背景模式4,5)背景时,这位用来选择要渲染的帧。设定为0则选择第0帧,设定为1则选择第一帧。d03 GBC模式GBA装有两个CPU。在GBA模式下使用32位的RISC类型CPU,在GBC模式下使用8位的CISC模式CPU。由于这位是系统控制的,所以用户不能访问这位。d02-00背景模式选择背景模式0-5。关于背景模式的信息,请看下

16、面的章节。5.1 背景模式5.1.1 背景模式的细节在GBA中,根据需要可以选择字符背景模式和位图背景模式。背景模式0,1,2下LCD屏幕的渲染是通过字符模式背景实现的。背景模式3,4,5下LCD屏幕的渲染是通过位图模式背景实现的。注意模式3,只有一个帧的内存,可以显示32768色,适合用来显示静止图像。模式4,5有两个帧的内存,使用用来渲染动画。字符背景的滚动方法和背景的旋转/缩放和位图背景的滚动的方法有所不同。(参看“6.1.8 背景滚动”和 “6.1.7 背景旋转和缩放特性”)5.1.2 VRAM内存映射VRAM的96K字节内存在不同背景模式下的映射方式如下图。在模式0,1和2下用户可以

17、把屏幕数据和字符数据区域映射在64K自己的背景区域里。更多的信息,参看“6.1.3 背景数据在VRAM的地址映射”。另外,关于内存区域和每个区域数据格式的更多描述,请看后面的章节。6 渲染功能GBA的CPU有96K字节大小的内建VRAM。它的渲染功能包括了背景和精灵的显示能力。不同背景模式有着不同的渲染方法,请看下面的描述。6.1 字符模式背景(背景模式0-2)在字符模式下,背景屏幕的组成时8*8点阵的基本字符。6.1.1 背景控制GBA系统共有四个背景控制寄存器,对应于背景屏幕数量的最大值(寄存器BG0CNT,BG1CNT,BG2CNT和BG3CNT)。BG0CNT和BG1CNT是专用于字符

18、背景输出控制的,而BG2CNT和BG3CNT也可以用于旋转缩放背景的控制。背景模式使用的寄存器如下。背景控制寄存器的内容如下。1) 输出背景控制(背景0,背景1)2)输出背景和背景旋转缩放控制(背景2,背景3)这些寄存器既可以是字符背景的控制,也可以是旋转缩放背景的控制。BG*CNT d15-14 屏幕大小允许设定背景的屏幕大小。当设定值大于最大值的时候,剩余的VRAM可以用来保存字符数据。请参照下表和上面VRAM映射图。1)字符背景窗口大小概述2)旋转缩放背景的屏幕大小的图解BG2CNT,BG3CNT d13 区域越界处理由于旋转缩放操作,显示屏幕可能会超越虚拟屏幕的边界,这个位设定用来选择

19、,超出范围的区域是变成透明还是回绕。关于缩放的信息,参看“6.1.7 背景旋转和缩放特性”BG*CNT d12-08 屏幕起始块设定设定VRAM里存储屏幕数据的起始内存块。(32步:0-31,步长是2K字节)参看 “6.1.3 背景数据在VRAM的地址映射”BG*CNT d07 颜色模式指定背景字符数据的颜色模式是16色/16个调色板,还是256色/1个调色板。BG*CNT d06 马赛克打开或关闭背景的马赛克选项。BG*CNT d03-02 字符起始块设定设定VRAM里存储字符数据的起始内存块。(4步:0-3,步长是16K字节)参看 “6.1.3 背景数据在VRAM的地址映射”BG*CNT

20、d01-00 背景间优先级在缺省值下(所有的背景相同优先级),优先级顺序是背景0,背景1,背景2和背景3。然而,这个顺序可以任意改变。可以制定0(最高优先级)到3的数值。背景优先级变化时,一定要小心使用点的颜色特殊效果。6.1.2 马赛克大小马赛克的大小在MOSAIC寄存器设定。打开关闭背景的马赛克需要设定相关背景控制寄存器的马赛克标志。马赛克相关的信息,参看上一个章节,背景控制。马赛克值制定多少个一般的点组成一个马赛克里的大点。每个马赛克块的左上角的颜色就是整个马赛克快的颜色。具体参看以下的表格。如果马赛克大小为0,那么即使马赛克功能打开,那么也是正常的显示。6.1.3 背景数据在VRAM的

21、地址映射背景数据(背景字节和背景数据)保存在VRAM里64K字节的背景区域。1)背景字符数据背景字符数据的起点地址可以在BG控制寄存器字符起始块设定中指定。存储的字符数据的总量取决于数据格式(颜色格式:256色/一个调色板或16色/16个调色板)。2)背景屏幕数据背景屏幕数据的起点地址可以在BG控制寄存器屏幕数据起始块设定中指定。存储的字符数据的总量取决于背景屏幕类型(字符背景和旋转缩放背景)和大小。这些可以通过背景控制寄存器设定。背景数据起始块图解6.1.4 字符数据格式字符数据有两种格式,16色/16个调色板的,和256色/1个调色板的。精灵和背景使用的字符都是相同的格式。具体格式如下面的

22、图表。1)16色/16个调色板每个地址保存两个点。因此每个基本字符的总数据量是20H*8位。2)256色/一个调色板每个地址保存一个点。因此每个基本字符的总数据量是40H*8位。6.1.5 背景屏幕数据格式背景屏幕可以看作是8*8的基本字符单元组成的,而背景屏幕数据就是说明这些字符如何排列的数据。背景屏幕数据应该在保存在以背景控制寄存器中背景数据起始块部分指定的地址为起点的内存区域里。背景数据条目的数量由背景控制寄存器里的屏幕大小部分的设定决定。字符背景的屏幕数据和旋转缩放背景的屏幕数据的格式在下面说明。1)字符背景字符背景的每个基本字符包括两个字节,可以设定1024个基本字符。d15-12

23、调色板如果背景控制器的颜色模式设定为16色/16个调色板模式时,这些位用来设定该字符使用(0-15)哪一个调色板。如果颜色模式为256色/一个调色板,那么这个设定是无效的。d11 垂直翻转标志设定背景字符的垂直翻转。设定为1,显示的时候背景字符进行垂直翻转。d10 水平翻转标志设定背景字符的水平翻转。设定为1,显示的时候背景字符进行水平翻转。d09-00 字符名指定字符的号码,号码的计算从背景控制寄存器的字符起始地址块设定的地址为起点。2) 旋转/缩放背景屏幕旋转/缩放背景屏幕每个基本字符占一个字节,可以设定256个字符。字符数据必须设定为256色/一个调色板的模式。对于旋转/缩放背景屏幕,背

24、景控制寄存器的颜色模式设定无效。VRAM注意事项GBA在VRAM的背景区域的使用上提供了非常高的自由度。因此,在VRAM的管理上,需要注意下面的要点。1. 背景字符数据有两种格式(16色和256色),而且它们可以一起使用。2. 背景字符数据起始块可以从4个块中选择(背景控制寄存器)。3. 背景屏幕数据起始块可以从32个块中选择(背景控制寄存器)。4. 每个背景都可以设定不同的屏幕尺寸。5. 字符背景和旋转缩放背景在可以在一个屏幕上一起显示。在管理VRAM的时候,背景模式1尤其值得注意,因为背景模式1下,字符背景和旋转背景可能会一起使用。因此,编程时,需要对VRAM的地址映射状态有充分的理解。6

25、.1.6 背景屏幕数据在LCD上的地址映射1) 字符背景1-1)虚拟屏幕尺寸为256*2561-2)虚拟屏幕尺寸为512*2561-3)虚拟屏幕尺寸为256*5121-4)虚拟屏幕尺寸为512*5122)旋转缩放背景2-1) 虚拟屏幕大小为128*1282-2)虚拟屏幕大小为 256*2562-3) 虚拟屏幕大小为512*5122-4)虚拟屏幕大小为1024*12046.1.7 背景旋转和缩放特性背景的旋转缩放可以在整个背景屏幕的旋转下实现。旋转的背景数据可以参看下面的图表。GBA的旋转缩放是由下面的公式实现的。模式2,3的旋转和缩放操作的参数在下面的寄存器中指定。背景数据的起点寄存器也用来实

26、现旋转缩放屏幕和位图屏幕的滚动。背景数据的起点设定的寄存器背景数据的方向参数的寄存器背景旋转缩放处理的操作1. 首先用户设定屏幕左上角旋转/缩放操作以后的结果,然后把这个值设定为引用背景数据的起点,设定在 BG2X_L,BG2X_H,BG2Y_L,BG2Y_H,BG3X_L,BG3X_H,BG3Y_L,BG3Y_H等寄存器。这个值设定为有符号的定点实数(8位作为小数部分,19位作为整数部分,1位作为符号位,总共是28位)。引用背景数据方向在BG2PA,BG2PB,BG2PC,BG2PD,BG3PA,BG3PB,BG3PC,BG3PD等寄存器设定。这个值也是定点实数(8位作为小数部分,7位作为整

27、数部分,1位作为符号位,总共是16位)。2. 图形处理程序计算前面设定的引用背景数据起点相关的X轴向的增量(dx,dy)的和,计算出X轴坐标。3. 当处理到下一条线的时候,计算Y轴向的增量(dmx,dmy)的和,然后进行第二步的处理。4. 然而,如果在H-Blanking间隔期间改写背景数据引用的起始地点,那么Y方向的和就不会被计算。CPU通过这个模式来改变每条线的中心坐标和旋转缩放参数。显示区域越界处理当显示屏幕由于旋转缩放操作超出了虚拟屏幕的边界,那么可以在背景控制寄存器里设定,发行越界的时候是超出部分是透明还是回绕。关于背景控制的信息,参看“6.1.1 背景控制”6.1.8 背景的滚动对

28、于每个字符背景屏幕,可以以点为单位设定偏移量。偏移量寄存器仅用于字符背景。为了在旋转/缩放背景和位图模式背景里面使用偏移显示功能,需要设定引用背景的起点。参看“6.1.7 背景旋转和缩放特性”。偏移量设定寄存器6.2 位图模式背景(模式3到5)在位图模式下,背景屏幕的组成部分是以点为单位控制的,VRAM(帧缓存)的内容显示出来也就是屏幕上面点的颜色。6.2.1 背景控制位图背景将被看作BG2。因此,为了在LCD上显示帧缓存中的内容,你需要在DISPCNT寄存器设定BG2显示标志为ON。为了控制背景需要使用BG2CNT寄存器。BG2CNT d06 马赛克这个位控制BG2的马赛克处理是否打开。打开

29、的时候,还需要设定马赛克大小寄存器。关于马赛克的信息,参看“6.1.2 马赛克的大小”。BG2CNT d01-00 背景的优先级由于实际上位图模式只有一个背景平面(除了backdrop平面),所以没有所谓的背景间的优先级,但是你可以设定背景和精灵间的优先级。参见“精灵和背景的优先级”。6.2.2 背景旋转和缩放位图的旋转和缩放主要使用BG2相关寄存器(BG2X_L, BG2X_H, BG2Y_L, BG2Y_H, BG2PA, BG2PB,BG2PC, and BG2PD)。关于旋转缩放参数,参看“6.1.7背景旋转缩放特性”对于位图背景,如果显示部分由于旋转缩放超过了屏幕边缘,那么这些区域会

30、变成透明的。6.2.3 点阵数据在位图模式下,只有显示屏幕尺寸的点阵数据才能保存在VRAM里。GBA提供的位图模式可以显示连续色调的32768色(背景模式3和5)和32768色中的256色(背景模式4)。不同模式在帧缓冲中保存的数据有不同的格式,将在下面描述。1. 32768色连续色调显示格式(背景模式3和5)调色板内存无效。每个点使用半个字(译注:ARM7的字长是32位,半字为16位)。2.256色显示格式(背景模式4)需要调色板。每个点用一个字节。6.2.4 点阵数据在LCD上的地址映射下面可以看到,不同的背景模式有着不同的地址映射。帧缓冲(VRAM)的起始地址为06000000h。6.2

31、.4.1 背景模式3(32768色,240*160点,一个帧缓冲)因为这个模式只有一个帧缓冲,所以这个模式主要用来显示静态图片。然而,它可以显示全屏的连续色调的32768色。6.2.4.2 背景模式4(256色,240*160点,两个帧缓冲)这个模式在VRAM里面分配了两个帧缓存,所以这个模式适于播放全动态的视频。从32768色里,有256色可以连续色调的全屏显示。1) 帧缓存02) 帧缓存16.2.4.3 背景模式5(32768色,160*128点,两个帧缓冲)虽然这个模式有两个帧缓冲,可以显示32768色,但是这个模式的显示区域不是全屏。1) 帧缓冲02) 帧缓冲16.3 OBJ精灵6.3

32、.1 OBJ功能不管任何背景模式,精灵都是字符模式的。但是不同的背景模式决定了基本字符的数目。项目功能颜色数16色/16个调色板 256色/一个调色板 (可以混合显示)精灵数模式0-2:1024(16色/16个调色板)512(256色/一个调色板)模式3-5:512(16色/16个调色板)256(256色/一个调色板)字符大小8*8-64*64(12种类型)同屏最大数目128(64*64)同线最大数目128(8*8)特殊效果垂直水平翻转,半透明,马赛克,优先级,精灵窗口同一扫描线的精灵显示能力单线精灵显示能力是保证最大效率的能力,具体数值在下面的表格体现。当显示的精灵从OAM的第一个开始连续排

33、列的时候,你可以用下面的公式计算同一扫描线可以显示的精灵:(水平点数*4-6)/渲染循环数=单线精灵数(最大128)水平点数一般来说是308,但是如果DISPCNT寄存器的H-Blank间隔精灵处理标志设为1,水平点数就是240。“*4”表示每一个点精灵渲染程序可以循环的次数。“-6”表明在横向扫描线开始的时候,精灵渲染需要处理的循环次数。“渲染循环数”和单线最大精灵数在下面的表格体现。精灵水平尺寸渲染循环数单线精灵数一般精灵旋转缩放精灵一般精灵旋转缩放精灵882612847161642762932327438166464138198128(两个64)XX4如果OAM中无法显示的精灵(在屏幕之

34、外的)数量比可以显示精灵少,那么不能显示的精灵的尺寸越大,渲染的效率也就越低。请注意这个问题。6.3.2 字符数据映射对于精灵字符数据,基本上字符是8*8的点阵,8*8字符到64*64字符都可以使用(一共12种)。.精灵字符的基础地址是固定的VRAM基础地址。精灵字符数据可以分配32K或者16K字节主要取决于背景模式(参看5.1.2 “VARM内存映射”)。字符数据的映射有两种类型,在DISPCNT寄存器的第6位设定。精灵的管理是用字符名进行的,字符名就是从精灵字符数据库起始地址开始的,以32字节为单位的地址。16色/16个调色板模式下的精灵字符需要32个字节。256色/1个调色板模式下的精灵

35、字符需要64个字节。1) 精灵字符在VRAM的二维映射把DISPCNT的第6位设为0,那么精灵字符的映射模式是二维的,如下图。请注意字符名当256色/一个调色板的字符在二位映射模式下显示时,字符名被限定必须是偶数(参见OAM的OBJ属性2)。因此,大多数情况下定义了256色/一个调色板的字符的二维映射模式时,字符名都是偶数。2) 精灵字符在VRAM的一维映射把DISPCNT的第6位设为1,那么精灵字符的映射模式是一维的,如下图。字符包含的数据会保存在连续的地址里面。6.3.3 OAM 精灵的显示是通过把数据放置到OAM实现的。最多128个精灵的数据可以写到CPU内部的OAM(地址为070000

36、00h-070003FFh),而且128也是LCD能显示的最多精灵数。OAM映射在OAM精灵属性可以占用48位*128个精灵的空间。另外,如果对精灵进行旋转缩放操作,那么还有32个实例的旋转缩放参数组合(PA,PB,PC和PD)需要写入OAM,如下图。精灵属性0d15-14 精灵形状选择精灵字符形状:正方形,水平长方形,垂直长方形。11是禁止使用的值。请参照精灵参数1的精灵大小设定。d13 颜色模式标志指定对象数据是16色/16个调色板模式还是256色/1个调色版。d12 精灵马赛克标志打开关闭精灵的马赛克效果。d11-10 精灵模式指定精灵是一般精灵还是半透明精灵。一般的精灵设定为00,半透

37、明精灵设定为01,精灵窗口设定为10。11是禁止使用的值,所以请注意不要设定为11。当精灵被设定为半透明精灵,可以就已进行颜色特殊效果的处理。关于颜色特殊效果的信息,参看“9颜色特殊效果”d09 旋转/缩放的双倍大小标志精灵大小是受到精灵区域限定条件(8*8-64*64)限定的,当旋转精灵的时候字符数据可能会超越这个界限。这个问题可以通过设定双倍大小标志来避免。使用这个设定以后,只要精灵大小没有超过两倍,就不会超过范围。例子:在旋转的时候,64*64点的精灵区域变成128*128点精灵区域。注意,精灵的显示位置改变了。当双倍大小标志设定为0的时候,超出边缘的部分会被切除。请看下图。d08 旋转

38、/缩放标志打开或关闭精灵的旋转处理。一旦精灵的旋转缩放标志设定为1,那么每扫描线最大精灵数会减少。请参照“6.3.1 每扫描线精灵显示能力”。d07-00 Y轴坐标设定精灵在屏幕位置上的Y轴坐标。注意Y轴上,屏幕内有160个点(0-159),96个(160-255)屏外点(虚拟屏幕)。当垂直尺寸为64点的精灵,使用双倍大小字符时,尺寸为128点,也就超过了96点的虚拟屏幕。因此,在Y轴的129-159范围内,精灵的低端超过了整个屏幕(正常屏幕+虚拟屏幕)从屏幕上面显示出来了。那么精灵大部分在正常屏幕下部的部门也不会显示。精灵属性1d15-14 精灵大小这两个位和精灵属性0的精灵形状标志一起决定

39、精灵的大小。对于每种精灵形状,一共有四中大小。d1312 垂直和水平翻转标志设定这两个位可以进行精灵的垂直水平翻转。正常显示设定为0,翻转显示设定为1。当旋转缩放标志(精灵属性0的d08)设定为1,那么这些位就成为旋转缩放参数的部分的高位。d13-09旋转缩放参数部分这些参数用于旋转缩放处理。The parameters used in OBJ rotation/scaling processing are selected fromthe 32 parameters registered in OAM.d08-00 X轴坐标设定对象显示的X轴坐标,从0到511。精灵属性2d15-12 调色板

40、号当使用16色/16个调色板格式时,这些位用来指定1到16个调色板。当使用256色/一个调色板格式时,这些位没有任何用处。d11-10 与背景相关的优先级指定精灵和背景相关的优先级。关于优先级的信息,参看“6.4 精灵和背景的显示优先级”。d09-00 字符名设定精灵在VRAM里的首地址(参看“6.3.2 字符数据映射”)。16色/16个调色板模式(颜色模式=1)允许选择最多1024个字符。256色/1个调色板模式(颜色模式=0)允许选择最多512个字符。在二维映射模式下位0固定为0。背景模式为35(位图背景模式)在位图背景模式下,精灵字符数据内存只剩下16K字节,所以字符名0-511不能使用

41、,只能使用512以上的值。6.3.4 精灵旋转/缩放特性精灵的旋转和缩放特性和背景的旋转和缩放基本上是一样的。精灵字符数据引用的旋转当精灵被显示的时候,精灵的数据就会被水平的引用,从左上角开始。旋转显示可以通过给引用加一个角度实现。精灵的旋转中心固定的是精灵显示区域的中心。如果引用点超过了精灵的大小,就会变成透明。精灵旋转缩放处理的操作1 在OAM的精灵属性1设定旋转缩放参数。2 图形处理程序计算相对于旋转中心的X轴向增量(dx,dy)的和,作为引用点,计算X轴象坐标。3 计算下一条线的时候,计算相对于旋转中心的Y轴向增量(dmx,dmy)的和,用来计算下一条线的坐标,然后,进行上面的第二条。旋转缩放参数设定旋转缩放处理中的引用字符数据的方向。PA,PB,PC,PD的值是有符号的,定点实数(8位作为小数部分,7位作为整数部分,1位作为符号位,总共16位)。下面的4个参数作为一组一起使用,可以被放置在OAM的任意32个区域里。6.4 对象和背景的优先级1) 背景间的优先级背景间的优先级可以被设定为4级。当背景的优先级相同时,背景号越小的得到优先级越高。2) 精灵间的优先级精灵间的优先级可以被设定为4级。当精灵的优先级相同时,精灵号越小的得到优先级越高。3) 背景和精灵间的优先级每个精灵相对于背景的优先级可以设定为4级。请参

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服