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