ホーム » 技術 » devkitproでドットの表示[GBAプログラミング]

devkitproでドットの表示[GBAプログラミング]


本文中にアフィリエイトリンクが含まれる場合があります。
表示が乱れた場合は再ロードをお試しください。

前回からdevkitproというものを使って、ゲームボーイアドバンスのソフトを作ることを目標にプログラミングしています。今回はドットを描画する関数です。

前回の

以下のサイトを参考にしています。

https://akkera102.sakura.ne.jp/gbadev/?tutorial.3

場所の指定

GBAの画面サイズは240x160ドットで、1ドットにつき2バイトです。

引数xの幅は0~239、引数yの幅は0~159で最後の引数colorは色(RGB)データです。マクロを使って表します。つまり、場所を指定する関数です。

メモリ領域(VRAM)は0x6000000番地から開始され、ポインタを使ってアクセスします。

void Mode3PutPixel(u32 x, u32 y, u16 color)
{
	u16* ScreenBuffer     = (u16*)0x6000000;
	ScreenBuffer[y*240+x] = color;
}

devkitproのtypedef宣言が以下のようになっているので、これを使うらしいです。

// gba_types.h
typedef	unsigned char		u8;	/**< Unsigned 8 bit value		*/
typedef	unsigned short int	u16;	/**< Unsigned 16 bit value		*/
typedef	unsigned int		u32;	/**< Unsigned 32 bit value		*/
typedef	signed char		s8;	/**< Signed 8 bit value			*/
typedef	signed short int	s16;	/**< Signed 16 bit value		*/
typedef	signed int		s32;	/**< Signed 32 bit value		*/
typedef	volatile u8		vu8;	/**< volatile Unsigned 8 bit value	*/
typedef	volatile u16		vu16;	/**< volatile Unigned 16 bit value	*/
typedef	volatile u32		vu32;	/**< volatile Unsigned 32 bit value	*/
typedef	volatile s8		vs8;	/**< volatile Signed 8 bit value	*/
typedef	volatile s16		vs16;	/**< volatile Signed 8 bit value	*/
typedef	volatile s32		vs32;	/**< volatile Signed 8 bit value	*/

色の指定

色の指定は以下のようにマクロで指定します。

各R:0~31,G:0~31,B:0~31の32×32×32=32768色を指定できるらしいです。

u16 color = RGB5(31,31,31);

以下のマクロでモードを設定します

ビットマップモードはいくつかあるのですが、今回はビットマップモード3というものを使用しています。

SetMode(MODE_3 | BG2_ENABLE);

devkitproのmakefileについて

調べてみましたが詳しくはわかりませんでした。以下のサイトに詳しいことが書いてあります。

Tonc: Setting up a development environment (coranac.com)

そこであっているのかはわかりませんが、devkitpro/example/gba/templeteにあるtempleteのディレクトリをコピーして、名前をsorceファイルと同じ名前にします(例えばmain.cならmain)。たぶんmakefileを色々書き換えればここら辺は自由にできると思うのですが、わかりませんでしたのでわかる人がいましたら教えてください。

ここで元のtempleteディレクトリに入っているファイルをmakefile以外消します。

そして、sorceディレクトリに自分の作ったcファイルを入れます。

includeディレクトリにヘッダーファイルを入れます。

buildディレクトリは出来上がったものが入るので何も入れなくて大丈夫です。

そして、makefileがある階層で右クリック→エクスプローラで開く→makeとコマンドを打ちます。

するとmakefileの階層にgbaファイルができているはずです。

devkitpro make

サンプルファイル

横一直線に白い線を引くプログラムを書きました。以下のようになったら成功です。

#include <gba.h>


//---------------------------------------------------------------------------
void Mode3PutPixel(u32 x, u32 y, u16 color)
{
	u16* ScreenBuffer     = (u16*)0x6000000;
	ScreenBuffer[y*240+x] = color;
}
//---------------------------------------------------------------------------
int main(void)
{
	SetMode(MODE_3 | BG2_ENABLE);

	s32 i;

	for(i=0; i<239; i++)
	{
		Mode3PutPixel(i, 50, RGB5(31, 31, 31));
	}

}

devkitpro サンプル

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です