1.gba簡介
typedef unsigned char u8;typedef unsigned short u16;
typedef unsigned long u32;
#define reg_dispcnt *(u16*)0x04000000// 顯示暫存器位址
#define vram 0x06000000 // 影象緩衝區位址
#define palette 0x5000000// 調色盤位址
#define mode_4 0x04 // mode4標誌
#define bg2_enable 0x0400// bg_2標誌
#define setmode(mode) reg_dispcnt=(mode) // 設定顯示模式的巨集定義
#include "helloworld.h" // 包含影象調色盤和資料的標頭檔案
u16* palette_mem=(u16*)palette; // 系統調色盤
u16* video_buffer=(u16*)vram; // 影象緩衝區
void draw(u16* src_palette,u16* src_data,u16* dst_palette,u16* dst_data);
int main()
}// mode_4繪圖函式
void draw(u16* src_palette,u16* src_data,u16* dst_palette,u16* dst_data)
最後建立乙個編譯批處理命令make.bat來幫我們編譯生成目標**。
寫入下面的命令到乙個新建的make.bat檔案裡面
path=c:/devkitadv/bin;%path%gcc -lm -o main.elf main.c
objcopy -v -o binary main.elf main.bin
pause
如果你的devkitadv是在d盤,那麼就應該是path=d:/devkitadv/bin;%path%,我這裡的devkitadv是安裝在c盤的。執行make.bat,如果沒有錯誤的話就可以得到編譯出來的main.bin和main.elf. main.bin就是可以執行的gba的rom.你可以用的模擬器visualboyadvance來開啟執行它,或者燒錄到gba卡帶上執行。
這是在模擬器visualboyadvance中執行的結果。
下面我將一一講解上面的程式
前三行:
typedef unsigned char u8;typedef unsigned short u16;
typedef unsigned long u32;
定義gba程式自己的資料型別,因為這樣我們就很容易知道每個資料在gba中佔的位元組數。
#define reg_dispcnt *(u16*)0x04000000// 顯示暫存器位址
reg_dispcnt是設定顯示模式的暫存器.gba中有mode0-mode5六個顯示模式。我們這個程式的顯示模式是mode4,也就是240x160的8位色(256色)的雙緩衝顯示模式。比如mode3,就是240x160的16位真彩色的單緩衝顯示模式。
#define vram 0x06000000// 影象緩衝區位址#define palette 0x5000000 // 調色盤位址
vram就是gba的顯示記憶體,簡單地說vram中的資料就是螢幕上的圖象。跟我們的平常用的計算機一樣的。palette就是調色盤位址,簡單地說就是裝影象調色盤的地方。
#define mode_4 0x04
智慧型遊戲機
1 import random23 4def print game 5print 30 6print step1 歡迎介面 7print 5,歡迎使用ai牌遊戲機 5 8print 5,1.猜數遊戲 5 9print 5,2.猜拳遊戲 5 10print 5,3.退出 10 11print 30 1...
iPhone與遊戲機打對臺
nick wingfield christopher lawton 相關閱讀 蘋果第四財季淨利潤增長26 2008 10 22 谷歌g1叫板iphone 2008 10 21 iphone殺手 黑莓風暴即將亮劍 2008 10 08 諾基亞推出觸控螢幕手機 2008 10 03 適合iphone的手...
基於51微控制器的簡易遊戲機
1.2課程設計的任務及設計要求 簡易遊戲機 1 液晶顯示製作人姓名 學號,院,班級及校徽等資訊和 2 多個遊戲選項 1 貪吃蛇遊戲 俄羅斯方塊等 3 具有簡單電子錶功能,可顯示年 月 日 星期 時 分 秒等 根據實際顯示方式的不同,可選擇部分或全部功能 4 具有電子錶的校準功能 5 擴充套件功能 自...