#author("2023-04-20T19:11:57+09:00","","") * タイルモードモードの文字表示1 [#f8516ba8] タイルモードでの簡単な表示はタイルサイズに合わせることです。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] -[[github:https://github.com/akkera102/gbadev-ja/tree/main/doc14%20%E3%82%BF%E3%82%A4%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AE%E6%96%87%E5%AD%97%E8%A1%A8%E7%A4%BA]] #ref(2.png,nolink) ** 履歴 [#p19fd445] - 2023/04/16 - 2007/10/11