OBJ就是指的一个个的精灵,或者说就是GBA中的小块小块的图片.它其实跟BG差不多.只是它要小一些.它也算个图层.比如GBA中的RPG游戏就喜欢把一个个的人物用OBJ来实现.这样方便控制他们的位置.当然,从GBA探索日记(-)中也可以看到BG的控制其实也是很方便的.而OBJ和BG的差别就是大小.
设置显示模式 如果你的程序里要用OBJ那么, 在设置显示模式的时候需要把DISP_OBJ_ON和DISP_OBJ_CHAR_1D_MAP加进去 *(vu16 *)REG_DISPCNT = DISP_MODE_1 | DISP_OBJ_ON | DISP_OBJ_CHAR_1D_MAP; #define DISP_OBJ_CHAR_1D_MAP 0x0040 // OBJ Character Data 1D Mapping #define DISP_OBJ_ON 0x1000 // OBJ ON
下面就直接来看看OBJ在GBA中怎么实现的. 首先要说明的就是OBJ在GBA中显示也是由一个个8x8的小图块拼成,跟BG一样. 共有下面12种大小. 0000: 8 x 8 1000: 8 x 16 0001: 16 x 16 1001: 8 x 32 0010: 32 x 32 1010: 16 x 32 0011: 64 x 64 1011: 32 x 64 0100: 16 x 8 0101: 32 x 8 0110: 32 x 16 0111: 64 x 32 OBJ的数据分三部分. 1.Character 它跟BG的数据格式是一样的,都是由8x8的小图块的图像数据.而且你也可以通过转换BG的工具来转换OBJ的Character.所以说BG和OBJ的数据结构基本是一样的.不过所有的OBJ总共的Character不能超过32K. 256色的OBJ能有512个Characters,每个 |