- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GBA编程初解
GBA编程初解
乐水
GBA编程初解
在具体介绍gba编程之前,我想先感谢一个人,他就是 水银 兄。在我学习的过程中水银兄给了我很多有用的宝贵资料,在此我向他表示感谢。
GBA是新一代的32位手掌机,强大的机能吸引了无数玩家和编程爱好者。现在用于开发的编译器有两种,一种是完全免费的GCC,和收费的ARM SDT,目前我在使用的是gcc,虽然网上也有D过来的arm sdt但我是无福享用的,23MB的大家伙啊,当初下载gcc这个12MB的东东时我就已经吐血了,可怜我的小猫啊。
好了,废话少说,进入正题。GBA使用的是卡带也就是只读rom为存储载体虽然容量可以很大,但问题也不少。也就是说我们不可能动态的分配使用卡上的内存了尽管它可以有128MB。当然gba也为我们提供了ram,至于容量嘛……,看下面的资料知道了。
单词含义:
1. GBA - Game Boy Advance ^_^
2. BG(Backgroud) - 背景
3. Sprite - 精灵
4. Tile - 地图图块
5. RAM(Random Access Memory) - 随机访问存储器
接口地址 :
外部 RAM: 地址: 0大小: 256Kb 作用: 存放程序及数据
内部 RAM: 地址: 0大小: 32Kb? 作用: 我想是高速内存,和cache作用一样吧
IO RAM: 地址: 0大小: 1Kb 作用: 控制图像,声音,DMA等内存映射IO
Palette - 调色板
地址: 0大小: 0x400 bytes 作用: 存放调色板数据
VRAM(Video RAM) - 视频内存
地址: 0大小: 0x20000 bytes 作用: 位图模式下存放帧缓冲数据,图块模式下存放图块数据及图块地图数据
OAM(Object Attribute Memory) - 精灵对象属性内存
地址: 0大小: 0x400 bytes 作用: 用于控制精灵
6. ROM(Read Only Memory) - 只读存储器
地址: 0大小: 看你的游戏卡的大小罗 作用: 存放所有的程序和数据
7. ARM - 32bit 指令系统 (RISC,精简指令集)
8. Thumb - 16bit 指令系统 (具体区别详见 /files/armthumb-romram.txt)
9. DMA(Direct Memory Access) - 直接内存访问
10.DISPCNT(Display Controller) - 显示控制(内存地址)
当初看水银兄写的gba教程时一直不明白明明是256色模式,可指向VRAM的指针却是short型的。后来才知道,gba访问VRAM时一次必须读写2个字节,即16bit。我晕~~!所以我只好严格要求自己的blit函数。虽然也找到一个可以写8bit的putpixel函数代码,但速度太慢了不适合用在显示大量图片的地方。
需要注意的地方大概都说完了,我们可以进入代码部分了。
虽然是专用游戏机,但显示模式也需要设定才行。
#define REG_DISPCNT *(u16*)0/ 显示寄存器地址
#define VRAM 0// 图像缓冲区地址
#define M5_VRAM 0x0600A000 // M5缓冲区地址
#define BACKBUFFER 0x010// 双缓冲/背缓冲地址
#define PALETTE 0x5000000// 调色板地址
#define MODE_3 0x03 // 240*160 15位/单缓冲区
#define MODE_4 0x04 // 240*160 8位/双缓冲区
#define MODE_5 0x05 // 160*128 15位/双缓冲区
#define BG2_ENABLE 0x0400 // BG_2
#define SetMode(Mode) REG_DISPCNT=(Mode) // 设置显示模式的宏定义
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
typedef struct BITMAP
{
int x,y,w,h;
u16 MskCol;
float bitx,bity;
u8 flag;
u16 *dat;
}BITMAP;
BITMAP screen;
u16 *palette_mem
您可能关注的文档
- 2012高考易错题难题.doc
- 2013,申城将变得多“聪明”解读上海推进智慧城市建设三年行动计划.doc
- 2013中国宏观经济形势展望2012年11月07日.doc
- 2013QQ农场IQ博士大挑战答案.doc
- 20130109 短线关注一支金牌题材股 600568中珠控股.doc
- 2013九年级轻松快乐过寒假答案.doc
- 2013京津城际最新时刻表.doc
- 2013减肥食谱让你减肥不单调.doc
- 2013十大网络红人排行榜.doc
- 2013吉达BIG5沙特吉达石材展沙特吉达门窗展沙特吉达不锈钢展沙特吉达五金展.doc
- 介入心脏病学研究流程与方法.docx
- 2024年自考专业(建筑工程)通关题库附答案详解【完整版】.docx
- 2024年自考专业(建筑工程)通关题库附完整答案详解【全优】.docx
- 2024年自考专业(建筑工程)通关题库附答案详解【研优卷】.docx
- 2024年自考专业(建筑工程)通关题库附参考答案详解【基础题】.docx
- 2024年自考专业(建筑工程)通关题库附参考答案详解(综合卷).docx
- 2024年自考专业(建筑工程)通关题库附参考答案详解【实用】.docx
- 2024年自考专业(建筑工程)通关题库重点附答案详解.docx
- 2024年自考专业(建筑工程)通关题库精编附答案详解.docx
- 2024年自考专业(建筑工程)通关题库含答案详解(巩固).docx
文档评论(0)