BGがいまいち分からん。3


それとなく思い出しました。


bgInit 関数を使うことでコントロールレジスタの設定が不要になったり、
VRAM のアドレスを自前で持つような記述が緩和されたり。
v1.4.7 以前との差異はその辺りでしょうか。
あとモードセットを実行するとデフォルトで BG をアクティブにしてくれるところとか。


変態的な VRAM の仕様は技術資料を読んでちゃんと理解しておくことをお勧めします。
でないとサンプルコード以上のことや、ちょっと変わったことをやろうとしたときに必ず躓きます。


前時代ゲーム機的な、 BG とスプライトによる描画をあえてやらずとも
フレームバッファモードでガリガリ描画更新を行うスタイルも
個人的にはありだと思うのですが。


BG Tile Map draw sample
Boot NDS v0.01


main.c

/*---------------------------------------------------------------------------------

	BG Tile Map draw sample
	Boot NDS  v0.01
	
	Version 1.00
	Oct 28, 2009
	
	By.REGEKATSU

---------------------------------------------------------------------------------*/

#include <nds.h>

#include "logo.h"


//---------------------------------------------------------------------------------
int main(void) {
//---------------------------------------------------------------------------------
	
	int bg3;
	
	
	//initVideoMode
	videoSetMode(MODE_0_2D);
	
	//initVRAMBank
	vramSetBankA(VRAM_A_MAIN_BG);
	
	//initBG
	bg3 = bgInit(3, BgType_Text4bpp, BgSize_T_256x256, 0, 1);
	
	//initBGTiles
	swiCopy(logoTiles, bgGetGfxPtr(bg3), logoTilesLen / 2);
	
	//initBGMap
	swiCopy(logoMap, bgGetMapPtr(bg3), logoMapLen / 2);
	
	//initBGPalette
	swiCopy(logoPal, BG_PALETTE, logoPalLen / 2);
	
	
	//infinityLoop
	while(1) {
		swiWaitForVBlank();
	}
	
}


logo.grit

-gt
-gB4
-fts
-gu16
-mu16

プロジェクト一式は下記 URL からダウンロード可能です。
ttp://page.freett.com/ntr/example/tilemap.zip