フレームバッファモードのサンプルコード

最近、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;
}

エミュレータでの実行例

実機で動くかどうかは知らない。たぶん動かない。


参考