gba吧 关注:152,096贴子:1,652,826
  • 14回复贴,共1

GBA详细硬件参数,新手补课,老鸟也看一下~~~~~!!!

收藏回复

  • 221.227.79.*
GBA作为GBC的新一代手掌游戏机,具有向下兼容GBC的特性。同时提供了更高的处理性能。
GBA装备了2.9英寸的反射型TFT彩色液晶屏和32位的RISC(精简指令系统)中央处理器。这使得在某种程度上其性能超越了超任(Super Nintendo Entertainment System)。
中央处理器:
32-bit RISC CPU (ARM7TDMI)/16.78 MHz
8-bit CISC CPU (兼容GBC)
内存:
系统只读存储器:16KB(2KB GBC专用)
工作内存:32KB+CPU内部专用 256KB
显存:96KB
精灵属性管理区:1KB
调色板:1KB
游戏容量:32MB
显示系统
分辨率:240 x 160
最大发色数:32768
硬件支持的特效:旋转/缩放,Alpha混合,淡入/淡出和马赛克效果
显示模式: 4
控制系统
A, B ,L ,R, START, SELECT, 方向键
声音系统
4声道,2CPU控制发声(PCM格式)
  
通讯系统
串行通讯
CPU单元结构图
GBA结构图
Little-Endian
GBA内存地址步长为一个字节。数据存放格式采用了Little-Endian编码(高字节放在存储区的高地址 ,低字节放在存储区的低地址。)
GBA内存映射
00000000h - 07FFFFFFh 是GBA的内部地址空间
08000000h - 0EFFFFFFh 是游戏ROM的地址空间
GBA内部存储结构
System ROM:从00000000h开始的16KB空间。存放了各种类型系统调用函数,主要是BIOS提供的功能接口。
CPU External Working RAM:02000000h开始的256KB空间。16位总线。
CPU Internal Working RAM:03000000h开始的32KB空间,用于存储游戏运行中的程序和数据。
I/O and Registers:存放了各种控制寄存器。
Palette RAM:05000000h开始的1KB空间,用于存放调色板信息。
VRAM:06000000h开始的96KB空间,存放BG(背景)和OBJ(精灵)数据。
OAM:07000000h开始的1KB空间,存放了OBJ(精灵)的一些显示属性。


1楼2010-05-05 13:22回复
    • 221.227.79.*
    GBA硬件规格(第一部分CPU,内存)
    GBA系统由以下部分组成:
    CPU -16.78MHz ARM/tdmi
    内存-根据应用的情况,有8-11个内存分区,有的是只读的,有的是可写的,详细见后。
    输入输出-系统提供了图形,声音,DMA,时钟,串行接口,按钮输入和中断等多个控制。
    GBA的BIOS将整个内存分成了许多的区间,每一个区间都有严格的定义,它可能是主程序ROM和卡带RAM(如SRAM,FLASH ROM或EEPROM用于存取进度),类似6502,它的i/o是映射到内存上的,您要进行一个i/o操作只需操作特定的内存就行了。例如往地址0x4000000写0x0100就表示下一个图形操作将使用图形模式0的背景0.中断也是同样是通过BIOS来调用预先放在系统ROM中的子过程。
    其它可以直接访问的内存区间有调色板RAM,图形RAM,和OAM(包含精灵属性)可能叫作物体属性内存更合适一些。
    GBA的LCD刷新频率59.73hz,每一次刷新包含一个垂直写屏和一个垂直空操作阶段,每一个垂直写屏和垂直空操作阶段又是由许多水平写屏和水平空操作阶段组成,程序要改变当前屏幕内容要在垂直空操作或水平空操作中进行。
    GBA硬件规格(第一部分CPU,内存)
    GBA系统由以下部分组成:
    CPU -16.78MHz ARM/tdmi
    内存-根据应用的情况,有8-11个内存分区,有的是只读的,有的是可写的,详细见后。
    输入输出-系统提供了图形,声音,DMA,时钟,串行接口,按钮输入和中断等多个控制。
    GBA的BIOS将整个内存分成了许多的区间,每一个区间都有严格的定义,它可能是主程序ROM和卡带RAM(如SRAM,FLASH ROM或EEPROM用于存取进度),类似6502,它的i/o是映射到内存上的,您要进行一个i/o操作只需操作特定的内存就行了。例如往地址0x4000000写0x0100就表示下一个图形操作将使用图形模式0的背景0.中断也是同样是通过BIOS来调用预先放在系统ROM中的子过程。
    其它可以直接访问的内存区间有调色板RAM,图形RAM,和OAM(包含精灵属性)可能叫作物体属性内存更合适一些。
    GBA的LCD刷新频率59.73hz,每一次刷新包含一个垂直写屏和一个垂直空操作阶段,每一个垂直写屏和垂直空操作阶段又是由许多水平写屏和水平空操作阶段组成,程序要改变当前屏幕内容要在垂直空操作或水平空操作中进行。
    GBA硬件第二部分(i/oRAM之图形控制寄存器)上
    GBA采用一个240X160的TFT,每帧刷新使用280896个cpu时钟周期。
    一、图形模式:
    GBA共用6种模式:分为两大类(位图模式和图案模式(或字符模式)),由显示控制寄存器的D2-D0决定。背景图形数据的组织于图形模式(图案模式,可放缩旋转图案模式,位图模式),精灵的数量也是由模式决定的,使用图案模式的图形模式可以有128个,而位图模式可能只有64个。
    同时显示控制寄存器中,还控制了精灵于背景是否可以显示以及绘制(并不是所有图形模式都支持四个背景,具体情况后面会提到)。
    模式0:可以拥有4个图案模式背景.
    模式1:可以拥有2个图案模式背景(BG0, BG1)和一个可放缩旋转图案模式背景(BG2)。
    模式2:拥有2个可放缩旋转图案模式背景(BG2 ,BG3)。
    模式3:只拥有一个位图模式背景(16位色模式)数据放在0x06000000开始的显示内存区间每个点的数据结构(其实只有15位有定义)如下:
    D0-D4: R
    D5-D9: G
    D10-D14:B
    由于采用这种模式,每屏的数据量太大240X160X2,所以显示内存区间只能存放一页,意味着不支持页翻转技术。在DMA的例程中我们将使用DMA技术将数据从工作存储区间传输到显示区间。
    模式4:这可能是最常用的一种模式,使用240X160的256调色板,位图数据开始于0x06000000与0x0600A000具体使用哪一个由图形控制寄存器的D3决定,调色板地址于第一部分所说的那样,是开始于0x5000000,可以看出它是支持页翻转的。
    


    2楼2010-05-05 13:37
    回复
      2025-08-31 11:16:06
      广告
      不感兴趣
      开通SVIP免广告
      啥叫“精灵”啊?


      禁言 |4楼2010-05-05 13:42
      回复
        • 221.227.79.*
        0x4000000-(显示控制寄存器)
        D0-D2:显示模式。
        D3:GameBoy 模式。
        D4:在位图模式中决定使用两页中的哪一页。
        D5:用于在强制进行水平空操作。用于在一条扫描线上有许多精灵的情况时。
        D6:决定精灵图案数据的安排方式。说明在前。
        D7:强制进行垂直扫描空操作。比如在模式3中,数据太大,一定要加上空操作才能完整地传输出来。
        D8:如果设置显示BG0。
        D9:如果设置显示BG1。
        DA:如果设置显示BG2。
        DB:如果设置显示BG3。
        DC:如果设置显示精灵。
        DD:允许窗口1。
        DE::允许窗口2。
        DF:允许精灵窗口。
        0x4000004-显示状态寄存器
        D0:(只读)垂直刷新状态,当在垂直扫描时为0,垂直空操作时为1。
        D1:(只读)水平刷新状态,当在水平扫描时为0,水平空操作时为1。
        D2:(只读)垂直计数开关状态。
        D3:垂直空操作中断允许,一旦设置,如果一个垂直空操作将产生一个中断。
        D4:水平空操作中断允许,一旦设置,如果一个水平空操作将产生一个中断。
        D5:垂直计数开关中断允许,一旦设置,如果垂直计数开关条件成立将产生一个中断。
        D6-D7:未用。
        D8- DF:垂直计数开关的计数。
        0x4000006 垂直计数器:
        这里存放着当前LCD所在扫的垂直位置,在垂直160线扫描后接垂直空操作68线。
        0x4000008 – 背景0控制寄存器
        0x400000A - 背景1控制寄存器
        0x400000C - 背景2控制寄存器
        0x400000E - 背景3控制寄存器
        D0-D1:权、00最高,11最低。
        D2-D3:图案数据开始地址:0x6000000+本值*0x4000
        D6:马赛克特效开。
        D7:调色板类型:1、256色调色板
        2、16色调色板
        D8-DC:背景图案排列数据地址:0x6000000+本值*0x800。
        DD:用于旋转背景,一旦旋转后超出原图案部分的处理方式,
        DE-DF:图案背景的尺寸:
        00 : 256x256 (32x32 图案)
        01 : 512x256 (64x32 图案)
        10 : 256x512 (32x64 图案)
        11 : 512x512 (64x64 图案)
        可放缩旋转图案背景的尺寸:
        00 : 128x128 (16x16 图案)
        01 : 256x256 (32x32 图案)
        10 : 512x512 (64x64 图案)
        11 : 1024x1024 (128x128 图案)
        0x4000010 – 背景0水平卷动坐标寄存器
        0x4000012 - 背景0垂直卷动坐标寄存器
        0x4000014 - 背景1水平卷动坐标寄存器
        0x4000016 - 背景1垂直卷动坐标寄存器
        0x4000018 - 背景2水平卷动坐标寄存器
        0x400001A - 背景2垂直卷动坐标寄存器
        0x400001C - 背景3水平卷动坐标寄存器
        0x400001E - 背景3垂直卷动坐标寄存器
        D0-D9:卷动值(单位:像素)。
        DA-DF:未用。
        它们决定了背景显示在LCD中左上角的背景像素的坐标。
        由于只有背景2与背景3支持放缩旋转,所以只有它们才有如下的控制寄存器。
        0x4000020 –0x4000026
        0x4000030 –0x4000036
        它们的数据安排都是一样的。
        D0-D7:分数。
        D8-DE:整数。
        DF:符号位。
        下面是具体的寄存器定义:
        0x4000020背景2的DX解释同前中精灵的放缩旋转中DX的解释。
        0x4000030背景3的DX解释同前中精灵的放缩旋转中DX的解释。
        0x4000022背景2的DMX解释同前中精灵的放缩旋转中DMX的解释。
        0x4000032背景3的DMX解释同前中精灵的放缩旋转中DMX的解释。
        0x4000024背景2的DY解释同前中精灵的放缩旋转中DY的解释。
        0x4000034背景3的DY解释同前中精灵的放缩旋转中DY的解释。
        0x4000026背景2的DMY解释同前中精灵的放缩旋转中DMY的解释。
        0x4000036背景3的DMY解释同前中精灵的放缩旋转中DMY的解释。
        0x4000020背景2的DX解释同前中精灵的放缩旋转中DX的解释。
        0x4000020背景2的DX解释同前中精灵的放缩旋转中DX的解释。
        


        5楼2010-05-05 13:42
        回复
          • 221.227.79.*

          下面四个控制寄存器都是4个字节长。只能用于可放缩旋转图案背景的卷动。
          0x4000028 - 可放缩旋转图案背景2的X卷动值
          0x4000038 - 可放缩旋转图案背景3的X卷动值
          0x400002C - 可放缩旋转图案背景2的Y卷动值
          0x400003C - 可放缩旋转图案背景3的Y卷动值
          D0-D7:分数
          D8-D1A:整数
          D1B:符号位
          D1C-D1F:未用
          同0x4000010-0x400001E一样决定了背景的卷动。不同的是,这个背景是可放缩旋转图案背景。注意也是指左上角,还有就是背景2也可以用于控制位图背景的卷动位置。
          0x4000040 – 窗口0水平控制寄存器
          0x4000042 – 窗口1水平控制寄存器
          D0-D7右边框的X坐标
          D8-DF左边框的X坐标
          0x4000044 – 窗口0垂直控制寄存器
          0x4000046 – 窗口1垂直控制寄存器
          D0-D7底边框的Y坐标
          D8-DF顶边框的Y坐标
          0x4000048 – 窗口内含控制寄存器
          D0 – 背景0在窗口0中
          D1 – 背景1在窗口0中
          D2 – 背景2在窗口0中
          D3 – 背景3在窗口0中
          D4 - 精灵在窗口0中
          D5 – 窗口0内特效。
          D6-D7 – 未用
          D8 – 背景0在窗口1中
          D9 – 背景1在窗口1中
          DA – 背景2在窗口1中
          DB – 背景3在窗口1中
          DC - 精灵在窗口1中
          DD – 窗口1内特效。
          DE-DF – 未用
          0x400004A – 窗口外延控制寄存器
          D0 – 背景0在窗口外
          D1 – 背景1在窗口外
          D2 – 背景2在窗口外
          D3 – 背景3在窗口外
          D4 – 精灵在窗口外
          D5 – 窗口外特效
          D6-D7未用
          D8 – 背景0在精灵窗口中
          D9 – 背景1在精灵窗口中
          DA – 背景2在精灵窗口中
          DB – 背景3在精灵窗口中
          DC – 精灵位于精灵窗口中
          DD – 精灵窗口中特效
          DE-DF 未用
          0x400004C – 马赛克控制寄存器
          D0-D3背景X尺寸。
          D4-D7背景Y尺寸。
          D8-DB精灵X尺寸。
          DC-DF精灵Y尺寸。
          用于控制背景和精灵的马赛克尺寸。
          0x4000050 – 特效组合控制寄存器。
          D0 – 混合背景0(源)
          D1 – 混合背景1(源)
          D2 – 混合背景2(源)
          D3 – 混合背景3(源)
          D4 – 混合精灵0(源)
          D0 – 混合基础背景(GBA有一个全黑背景在所有背景之后)(源)
          D6-D7 – 混合方式
          00:无特效。
          01:alpha混合。
          10:增亮
          11:暗化
          D8 – 混合背景0(目的)
          D9 – 混合背景1(目的)
          DA – 混合背景2(目的)
          DB – 混合背景3(目的)
          DC – 混合精灵(目的)
          DD – 混合基础背景(目的)
          DE-DF未用
          0x4000052 – 混合比例控制寄存器
          于特效组合控制寄存器相配合,用于决定混合比例。
          D0-D4源混合系数。
          D8-DC目的混合系数。
          比如对于ALPHA混合,源为12,目的为4,则最后效果为源像素值*12/16+目的像素值*4/16。
          0x4000054 – 增亮暗化系数控制寄存器。
          只有
          D0-D4有效,为系数。
          上面就是于图形有关的控制寄存器的说明,一般对于编程而言,它们都是用容易理解的符号来代替了,对它们的操作,很多也写成了函数的形式供调用。写这个主要是为了从根本上了解GBA,从而写出更好,更优化的程序。
          


          6楼2010-05-05 13:42
          回复
            • 221.227.79.*
            回复:4楼
            BG和精灵是GBA游戏开发的基本技术


            7楼2010-05-05 13:58
            回复
              大部分都看不懂……


              IP属地:广东禁言 |8楼2010-05-05 14:08
              回复
                。。。。。。


                禁言 |9楼2010-05-05 14:34
                回复
                  2025-08-31 11:10:06
                  广告
                  不感兴趣
                  开通SVIP免广告
                  太深奥了


                  IP属地:河北来自Android客户端禁言 |10楼2016-01-04 22:56
                  回复
                    后面的好专业,完全看不懂!


                    IP属地:云南来自Android客户端禁言 |11楼2016-01-04 23:13
                    回复
                      以前玩游戏,现在专门花时间了解了下硬件,才发现以前的游戏开发者多么吊啊


                      IP属地:新疆禁言 |12楼2016-12-29 23:53
                      回复
                        专业挖坟队


                        IP属地:四川来自Android客户端禁言 |13楼2016-12-30 00:45
                        回复
                          这个帖子很强哦~~~~~~~~~~~~


                          IP属地:江西禁言 |15楼2018-08-14 15:21
                          回复


                            IP属地:湖北来自iPhone客户端禁言 |16楼2021-09-29 00:53
                            回复