c语言如何写gba文件,GBA开发文档.doc
GBA開發文檔
一. GBA開發包--DevKitAdv 簡介
DevKitAdv 主要包括兩部分,一是GCC++編譯器,二是 GBA庫.
GCC++編譯器功能和我們常用的VC差不多,只不過少了個編輯源代碼的文本編輯器(至少我沒發現,我用的是EditPlus,UltraEdit也可以),還有就是--不支持類(class),真是讓人頭痛,只能用struct來替代.它的作用是把我們寫的代碼編譯成二進制的可執行文件,當然這個可執行文件是相對GBA和GBA模擬器而言的.就象Windows里的EXE文件無法在Mac機上使用是一樣的道理;
GBA庫提供了圖像,控制及聲音一系列的函數,和GCC++配合使用.
下載地址: HYPERLINK "http://occultforces.mine.nu/%7Edarkfader/gba/files/devkitadv.zip" http://occultforces.mine.nu/~darkfader/gba/files/devkitadv.zip
?
二. DevKitAdv 的安裝 沒啥好說的,解壓后就可以直接使用,編譯時設置DevKitAdv的路徑就可以了,建議做一個批處理文件,比如 go.bat
set PATH=d:\devkitadv\bin;%PATH%
cmd (win98是command)
三. 最簡單的 GBA 程序 (t1)
// main.c
// 一些基本數據類型
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
#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 15bits/單緩沖區
#define MODE_4 0x04 // 240*160 8bits/雙緩沖區
#define MODE_5 0x05 // 160*128 15bits/雙緩沖區
#define BG2_ENABLE 0x0400 // BG_2
#define SetMode(Mode) REG_DISPCNT=(Mode) // 設置顯示模式的宏定義
// 主程序
int main()
{
//設置屏幕模式,這里使用MODE_4
SetMode (MODE_4 | BG2_ENABLE);
}
1.MODE_5和MODE_3都是16bits,但MODE_3只有單緩沖,制作動畫效果肯定沒雙緩沖好,因此排除MODE_3;
2.MODE_4是8bits,理論上256色對于掌機夠用了,雖然16bits真彩的誘惑沒有人想抗拒,可MODE_5只有160*128咧,在實際應用中建議還是使用MODE_4.
很簡單吧--的確是的,現在要用GCC編譯它:
gcc -lm -o main.elf main.c
objcopy -v -O binary main.elf main.bin
你會看目錄下多了個"main.bin",這個就是能在GBA模擬器上執行的二進制文件! 教程中t1-t7目錄為源程序目錄,里面有個make.bat,修改代碼后直接執行它就可以編譯,但要注意我的devkitadv是裝在D:,你要是裝在別的盤就得改一下make.bat的path參數.
四. 在MODE_4背景層畫圖的 GBA 程序 (t2)
在GBA的MODE_4里畫一幅圖要經過3個步驟:
1. 把原始256色圖像文件轉換成 *.h / *.c 的數據文件,我們用的是 < BMP2GBA > ,這里以"image.bmp"為例,轉換后我們就得到了一個"image.h"文件;
2. 在程序開頭#include "image.h",這樣就能在程序中使用"image.h"定義的調色板和圖像數據;
3. 在程序中把"image.h"定義的調色板和圖像數據寫入MODE_4背景層的調色板和圖像緩沖區.
另外,GBA還有專為精靈設置的物體層,它的用法和背景層一樣,只是功能有點不一樣,地址是0有關用這里就不詳細說了,大家可以把精靈數據直接輸出到物體緩沖區就可以了.
下面是源程序:
... ...
//
總結
以上是生活随笔為你收集整理的c语言如何写gba文件,GBA开发文档.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 友推快速分享功能到微信 (转自博客园:好
- 下一篇: 互联网情报屋