ただ何となくタイルマップ+標準コンソール描画サンプル。
ゲームを作る上で文字情報のないゲームなど普通は考えられないと思います。
先日書いたタイルマップ描画のコードに、
上レイヤに 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