- 追加された行はこの色です。
- 削除された行はこの色です。
- doc.14 へ行く。
#author("2023-05-15T12:16:57+09:00;2023-04-20T19:11:58+09:00","","")
#author("2023-05-30T00:25:14+09:00","","")
* タイルモードモードの文字表示1 [#f8516ba8]
タイルモードでの簡単な表示は、タイルサイズに合わせることです。1つのタイル(8×8ドット)を基本サイズとして1文字分を格納していきます。今回の文字データは半角文字、全角のひらがな、全角のカタカナのみ、といった具合に予め決めておきます。このようにするとソースコード側が非常にシンプルになります。
タイルモードでの簡単な表示は、タイルサイズに合わせることです。1つのタイル(8×8ドット)を基本サイズとして1文字分を格納していきます。今回の文字データは半角文字、全角ひらがな、全角カタカナのみ、といった具合に予め決めておきます。このようにするとソースコード側が非常にシンプルになります。
#ref(1.png,nolink)
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++;
}
}
*** 動作画面 [#xe685618]
#ref(2.png,nolink)
** 履歴 [#p19fd445]
- 2023/04/16
- 2007/10/11