タイルモードモードの文字表示

タイルモードでの簡単な表示はタイルサイズに合わせることです。1つのタイル、8×8ドットを基本サイズとして1文字分を格納していきます。今回の文字データは半角文字、全角のひらがな、全角のカタカナのみ、といった具合に予め決めておきます。このようにするとソースコード側が非常にシンプルになります。

1.png
int main(void)
{
	InitBG();

	BGDrawChr(BG3.map, 1, 1, 'A');

	BGDrawStr(BG3.map, 1, 3, "0123 ABCD abcd +-*/");
	BGDrawStr(BG3.map, 1, 4, "あいうえお アイウエオ");

	for(;;)
	{
	    WaitForVsync();
	}
}

void BGDrawChr(u32 mapNo, s32 x, s32 y, u16 chr)
{
	u16* BGMap = (u16*)MAP_BASE_ADR(mapNo) + x + (y * 32);

	*BGMap = chr;
}
void BGDrawStr(u32 mapNo, s32 x, s32 y, char* str)
{
	u16 chr;
	s32 i=0, dx=0;

	for(;;)
	{
		chr = str[i++];

		if(chr == '\0')
		{
			return;
		}

		if(chr <= 0x7f)
		{
			// 1byte char
			BGDrawChr(mapNo, x + dx, y, chr);
		}
		else
		{
			// 2byte char
			switch(chr)
			{
				case 0x82: chr = str[i++] - 0x90 + 192; break;
				case 0x83: chr = str[i++] - 0x40 + 304; break;
				default:   chr = str[i++];              break;
			}

			BGDrawChr(mapNo, x + dx, y, chr);
		}

		dx++;
	}
}

動作画面

2.png

履歴


トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS