フレームバッファモードのサンプルコード
最近、NDSのプログラミングをしてる。
勉強のために、libndsを使わないで、ハードウェアを直接操作している。
NDSのフレームバッファモードのサンプルコードを書いてみた。
見ての通り、DISPCNTにビデオモードをフレームバッファモード(VRAM Display)に設定し、VRAM_Aを有効にするだけで初期化できます。あとは、VRAMをポチポチと叩くだけです。
#define NDS_IOBASE 0x04000000 #define NDS_VRAM_A 0x06800000 int main(void) { unsigned short *vp; int j; /* Video setting */ *((unsigned int *) (NDS_IOBASE + 0x0000)) = 0x20000; /* DISPCNT : Display Mode = VRAM Display*/ *((unsigned char *) (NDS_IOBASE + 0x0240)) = 0x80; /* VRAMCNT_A : VRAM Enable */ /* color bar */ vp = (unsigned short *) NDS_VRAM_A; for (j = 1024*0; j < 1024*8; j++) *vp++ = 0xFFFF; for (j = 1024*8; j < 1024*16; j++) *vp++ = 0x0FF0; for (j = 1024*16; j < 1024*24; j++) *vp++ = 0x00FF; for (j = 1024*24; j < 1024*32; j++) *vp++ = 0xF00F; for (j = 1024*32; j < 1024*40; j++) *vp++ = 0xFF00; for (j = 1024*40; j < 1024*48; j++) *vp++ = 0x0000; return 0; }
エミュレータでの実行例
実機で動くかどうかは知らない。たぶん動かない。
参考