ただ何となくタイルマップ+標準コンソール描画サンプル。


ゲームを作る上で文字情報のないゲームなど普通は考えられないと思います。
先日書いたタイルマップ描画のコードに、
上レイヤに libnds 標準コンソールを割り当てるようにしてみました。


マッピングの際には BG のマップデータ領域とテキスト表示のマップデータ領域とが
被らないよう設定しなければなりません。


consoleDemoInit では決められた領域へしか描画ができないので、
任意の描画領域へ描画を行いたい場合は、
consoleInit 関数を使って手動でコンソール情報をセット(初期化)することになります。

PrintConsole* consoleInit(PrintConsole* console, 
			int layer, 
			BgType type, 
			BgSize size, 
			int mapBase, 
			int tileBase, 
			bool mainDisplay, 
			bool loadGraphics);
PrintConsole* console	コンソールの初期設定を PrintConsole 構造体で渡します。
			特になければ NULL とします。
int layer			BG レイヤを 0〜3 で指定します。
BgType type		描画タイプを BgType 定義にある定数名で指定します。
BgSize size		描画データサイズを BgSize 定義にある定数名で指定します。
int mapBase		マップデータ読込先を 0〜15 の範囲から指定します。
int tileBase		タイルデータ読込先を 0〜31 の範囲から指定します。
bool mainDisplay		メインディスプレイに描画するなら true 、
			サブディスプレイに描画するなら false とします。
bool loadGraphics		デフォルトのフォントデータ、パレットを利用する場合 true 、
			それ以外の場合 false とします。

PrintConsole*		設定のなされた PrintConsole 構造体が返ります。
			コンソールの多重定義、フォント画像の変更等を行う際は
			利用することになります。


丸暗記するような関数ではないです。
引数等はたまに記述するときリファレンス(ヘッダファイル)に目を通す程度でよいと思います。
v1.4.8 以降になり、独自構造体をもったことにより柔軟な構造になったので色々なことができるようになってます。
(コンソール上下割り当て、メイン・サブへの多重定義、等)
少し変わったことをしてみたいのなら、ヘッダ・ソースも読んでおくと良いかも知れません。


BG Tile Map + Libnds Console draw sample
Boot NDS v0.01

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

	BG Tile Map + Libnds Console draw sample
	Boot NDS  v0.01
	
	Version 1.00
	Oct 30, 2009
	
	By.REGEKATSU

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

#include <nds.h>
#include <stdio.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, 1, 7);
	
	//initBGTiles
	swiCopy(logoTiles, bgGetGfxPtr(bg3), logoTilesLen / 2);
	
	//initBGMap
	swiCopy(logoMap, bgGetMapPtr(bg3), logoMapLen / 2);
	
	//initBGPalette
	swiCopy(logoPal, BG_PALETTE, logoPalLen / 2);
	
	
	//initConsole
	consoleInit(0, 0, BgType_Text4bpp, BgSize_T_256x256, 0, 1, true, true);
	
	//drawConsole
	printf("hello, world");
	
	
	//infinityLoop
	while(1) {
		swiWaitForVBlank();
	}
	
}

//---------------------------------------------------------------------------------


logo.grit

-gt
-gB4
-fts
-gu16
-mu16


プロジェクト一式は下記 URL からダウンロードすることができます。
ttp://page.freett.com/ntr/example/tilecons.zip