Ghostのブログっ

ブログの説明→特になし

ここからちょくちょくと

devkit proの初心者がNDS開発をしていこうと思います

 

まず必要なもの一式をそろえましょう

必要なもの

・devkitpro

・grit

・やる気

 

これさえあれば開発できます

初心者どうしがんばりましょう

 

じゃあまずは

C:\devkitPro\examples\nds\Graphics\Backgrounds\16bit_color_bmp

これのファイルから見ていきましょう

(何故Hello worldからじゃないかというとHello worldだと達成感が少ないから)

 

これはおそらく16bitカラーの画像を表示させるプログラムですね

中身を見てみよう

 

#include <nds.h>
#include <stdio.h>


// git outputs a nice header to reference data
#include "drunkenlogo.h"

int main(void) {

// set the mode for 2 text layers and two extended background layers
videoSetMode(MODE_5_2D);

// set the sub background up for text display (we could just print to one
// of the main display text backgrounds just as easily
videoSetModeSub(MODE_0_2D); //sub bg 0 will be used to print text

vramSetBankA(VRAM_A_MAIN_BG);

consoleDemoInit();

iprintf("\n\n\tHello DS devers\n");
iprintf("\twww.drunkencoders.com\n");
iprintf("\t16 bit bitmap demo");

// set up our bitmap background
bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);

decompress(drunkenlogoBitmap, BG_GFX, LZ77Vram);

while(1) {
swiWaitForVBlank();
scanKeys();
if (keysDown()&KEY_START) break;
}
return 0;
}

 

わお

何がなんだかわからないゾ

これは画像を表示するプログラムだから画像差し替えてみよう

 

 

一個ずつ見てみよう

 

#include <nds.h>    //ここでDS関係のファイル一式をインクルード
#include <stdio.h>  //標準ライブラリstdio.hをインクルード


// git outputs a nice header to reference data
#include "drunkenlogo.h"  //画像ファイルをインクルード

 

ここやな

画像ファイルをインクルードしてる

画像ファイルのデータは

drunkenlogo.hと

drunkenlogo.sにわかれてて

hにヘッダー、sにソース(つまり画像データの中身)

が入ってるらしい

つまりここの画像をさしかえれば表示できるわけやな?

 

さっそくgritを起動しよう

f:id:iwannabethetabasuko:20150217010044j:plain

 

好きな画像(大きさは256*192)を用意して変換や!!

 

f:id:iwannabethetabasuko:20150217010228j:plain

 

今回はDSなのでNDSを選択して

f:id:iwannabethetabasuko:20150217010259j:plain

 

なぜか知らんけどLZ77を選択(こうしないと上手くいかなかった)

f:id:iwannabethetabasuko:20150217010350j:plain

 

そしてOKを押す!

すると画像ファイルのあったところに

画像名.hと

画像名.sができたはず

これで

#include <nds.h>
#include <stdio.h>


// git outputs a nice header to reference data
#include "画像名.h"

 

でいけるかな

と思ったけどいけなかった

何がいけないかと思ったら

画像インクルードするとこだけ名前変えてもそりゃできないわな

表示するとこも変えないと

 

で見たところ

decompress(drunkenlogoBitmap, BG_GFX, LZ77Vram);

        ↑ここっぽい

これを

decompress(画像名Bitmap, BG_GFX, LZ77Vram);

に変更!

 

これでmakeすると…

 

できた!!!

f:id:iwannabethetabasuko:20150217011033j:plain

 

 

さて

ここからコードの推察

int main(void) {

// set the mode for 2 text layers and two extended background layers
videoSetMode(MODE_5_2D);//ここでモード変更をしてる

//2D、モード5らしい

// set the sub background up for text display (we could just print to one
// of the main display text backgrounds just as easily
videoSetModeSub(MODE_0_2D); //sub bg 0 will be used to print text

//こちらのモードセットはsubがついてる

//下画面ってことかな?

//あとで詳しく調べてみる

 

vramSetBankA(VRAM_A_MAIN_BG);

//不明

consoleDemoInit();

//もっと不明

iprintf("\n\n\tHello DS devers\n");
iprintf("\twww.drunkencoders.com\n");
iprintf("\t16 bit bitmap demo");

//iprintfで下画面に文字を描画できるらしい

//さっきの実行結果に出てたな

 

// set up our bitmap background
bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);

//16bit画像を表示する前準備?

decompress(drunkenlogoBitmap, BG_GFX, LZ77Vram);

//ここで描画

//LZ77VramというのがさっきのLz77じゃなきゃいけない理由かもな
while(1) {

//メインループ
swiWaitForVBlank();

//同期待ち…だったはず
scanKeys();

//名前からしてキー入力受付っぽい
if (keysDown()&KEY_START) break;
}

//下ボタンとスタートボタンが押された時メインループから抜け出す…だと思う
return 0;
}

 

 

 

関数一覧みたいなのはここ(http://libnds.devkitpro.org/index.html)にあるみたいなので活用すべし

 

以上!!!!

 

また暇があったらやるよ