From 93daff186c2c5ee681d2e2b1bf4ad1b2a64f7b28 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 13 Apr 2021 19:18:09 +0200 Subject: Add initial text writing with bd-font --- src/bd-font.c | 258 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 35 ++++++-- 2 files changed, 287 insertions(+), 6 deletions(-) create mode 100644 src/bd-font.c diff --git a/src/bd-font.c b/src/bd-font.c new file mode 100644 index 0000000..e4a6cc4 --- /dev/null +++ b/src/bd-font.c @@ -0,0 +1,258 @@ +static u8 font[][8] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x24, 0x00, 0x42, 0x3c, 0x00, 0x00}, + {0x00, 0x00, 0x24, 0x00, 0x3c, 0x42, 0x00, 0x00}, + {0x00, 0x00, 0x6c, 0x7c, 0x7c, 0x38, 0x10, 0x00}, + {0x00, 0x10, 0x38, 0x7c, 0x7c, 0x38, 0x10, 0x00}, + {0x00, 0x38, 0x38, 0x7c, 0x6c, 0x7c, 0x10, 0x38}, + {0x00, 0x10, 0x38, 0x7c, 0x7c, 0x7c, 0x10, 0x38}, + {0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, + {0x7e, 0x7e, 0x7e, 0x66, 0x66, 0x7e, 0x7e, 0x7e}, + {0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00}, + {0x7e, 0x7e, 0x66, 0x5a, 0x5a, 0x66, 0x7e, 0x7e}, + {0x00, 0x10, 0x38, 0x7c, 0x10, 0x38, 0x44, 0x38}, + {0x00, 0x38, 0x44, 0x38, 0x10, 0x10, 0x7c, 0x10}, + {0x00, 0x18, 0x1c, 0x14, 0x10, 0x10, 0x30, 0x30}, + {0x00, 0x3c, 0x24, 0x24, 0x24, 0x2c, 0x6c, 0x60}, + {0x00, 0x10, 0x44, 0x10, 0x38, 0x10, 0x44, 0x10}, + {0x20, 0x30, 0x38, 0x3c, 0x38, 0x30, 0x20, 0x00}, + {0x04, 0x0c, 0x1c, 0x3c, 0x1c, 0x0c, 0x04, 0x00}, + {0x10, 0x38, 0x7c, 0x10, 0x10, 0x7c, 0x38, 0x10}, + {0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28}, + {0x00, 0x3c, 0x54, 0x54, 0x34, 0x14, 0x14, 0x14}, + {0x00, 0x1c, 0x20, 0x3c, 0x42, 0x3c, 0x04, 0x78}, + {0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00}, + {0x10, 0x38, 0x7c, 0x10, 0x7c, 0x38, 0x10, 0x7c}, + {0x10, 0x38, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x38, 0x10}, + {0x00, 0x00, 0x08, 0x0c, 0x7e, 0x0c, 0x08, 0x00}, + {0x00, 0x00, 0x10, 0x30, 0x7e, 0x30, 0x10, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7c}, + {0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00}, + {0x00, 0x10, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0x00}, + {0x00, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x10, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10}, + {0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00}, + {0x00, 0x10, 0x38, 0x40, 0x38, 0x04, 0x78, 0x10}, + {0x00, 0x00, 0x64, 0x68, 0x10, 0x2c, 0x4c, 0x00}, + {0x00, 0x10, 0x28, 0x10, 0x2c, 0x48, 0x34, 0x00}, + {0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10}, + {0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10}, + {0x00, 0x00, 0x28, 0x10, 0x7c, 0x10, 0x28, 0x00}, + {0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20}, + {0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00}, + {0x00, 0x04, 0x0c, 0x18, 0x30, 0x60, 0x40, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x54, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x30, 0x50, 0x10, 0x10, 0x7c, 0x00}, + {0x00, 0x00, 0x38, 0x04, 0x38, 0x40, 0x7c, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x18, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x08, 0x18, 0x28, 0x7c, 0x08, 0x00}, + {0x00, 0x00, 0x7c, 0x40, 0x78, 0x04, 0x78, 0x00}, + {0x00, 0x00, 0x38, 0x40, 0x78, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x7c, 0x04, 0x08, 0x10, 0x20, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x38, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x3c, 0x04, 0x38, 0x00}, + {0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00}, + {0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x10, 0x20}, + {0x00, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x00}, + {0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00}, + {0x00, 0x20, 0x10, 0x08, 0x08, 0x10, 0x20, 0x00}, + {0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x00, 0x10}, + {0x00, 0x38, 0x4c, 0x54, 0x58, 0x40, 0x38, 0x00}, + {0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, + {0x00, 0x78, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00}, + {0x00, 0x38, 0x44, 0x40, 0x40, 0x44, 0x38, 0x00}, + {0x00, 0x70, 0x48, 0x44, 0x44, 0x48, 0x70, 0x00}, + {0x00, 0x7c, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00}, + {0x00, 0x7c, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00}, + {0x00, 0x38, 0x44, 0x40, 0x4c, 0x44, 0x38, 0x00}, + {0x00, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, + {0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00}, + {0x00, 0x04, 0x04, 0x04, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00}, + {0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00}, + {0x00, 0x44, 0x6c, 0x54, 0x44, 0x44, 0x44, 0x00}, + {0x00, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00}, + {0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x00}, + {0x00, 0x38, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00}, + {0x00, 0x78, 0x44, 0x44, 0x78, 0x48, 0x44, 0x00}, + {0x00, 0x38, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00}, + {0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}, + {0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00}, + {0x00, 0x44, 0x44, 0x54, 0x54, 0x54, 0x28, 0x00}, + {0x00, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x00}, + {0x00, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00}, + {0x00, 0x7c, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00}, + {0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38}, + {0x00, 0x40, 0x60, 0x30, 0x18, 0x0c, 0x04, 0x00}, + {0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38}, + {0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00}, + {0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c, 0x00}, + {0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x78, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x00}, + {0x00, 0x04, 0x04, 0x3c, 0x44, 0x44, 0x3c, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c, 0x00}, + {0x00, 0x00, 0x3c, 0x40, 0x40, 0x78, 0x40, 0x40}, + {0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x38}, + {0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x00}, + {0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x7c, 0x00}, + {0x00, 0x04, 0x00, 0x04, 0x04, 0x04, 0x44, 0x38}, + {0x00, 0x40, 0x48, 0x50, 0x60, 0x50, 0x4c, 0x00}, + {0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00}, + {0x00, 0x00, 0x68, 0x54, 0x54, 0x54, 0x54, 0x00}, + {0x00, 0x00, 0x70, 0x4c, 0x44, 0x44, 0x44, 0x00}, + {0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40}, + {0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x0e}, + {0x00, 0x00, 0x58, 0x60, 0x40, 0x40, 0x40, 0x00}, + {0x00, 0x00, 0x38, 0x40, 0x38, 0x04, 0x78, 0x00}, + {0x00, 0x20, 0x7c, 0x20, 0x20, 0x20, 0x18, 0x00}, + {0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00}, + {0x00, 0x00, 0x44, 0x44, 0x54, 0x54, 0x28, 0x00}, + {0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00}, + {0x00, 0x00, 0x44, 0x44, 0x44, 0x3c, 0x04, 0x38}, + {0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00}, + {0x18, 0x20, 0x20, 0x40, 0x40, 0x20, 0x20, 0x18}, + {0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, + {0x30, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x30}, + {0x00, 0x00, 0x34, 0x58, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x7c, 0x00}, + {0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x10, 0x70}, + {0x00, 0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x08, 0x10, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, + {0x10, 0x28, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, + {0x00, 0x28, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, + {0x20, 0x10, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, + {0x10, 0x28, 0x10, 0x38, 0x04, 0x3c, 0x44, 0x3c}, + {0x00, 0x00, 0x38, 0x40, 0x44, 0x38, 0x10, 0x70}, + {0x10, 0x28, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, + {0x00, 0x28, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, + {0x20, 0x10, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, + {0x00, 0x28, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, + {0x00, 0x28, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, + {0x20, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, + {0x00, 0x28, 0x00, 0x38, 0x44, 0x7c, 0x44, 0x44}, + {0x10, 0x28, 0x10, 0x38, 0x44, 0x7c, 0x44, 0x44}, + {0x08, 0x10, 0x00, 0x7c, 0x40, 0x78, 0x40, 0x7c}, + {0x00, 0x00, 0x68, 0x14, 0x38, 0x50, 0x2c, 0x00}, + {0x00, 0x3c, 0x50, 0x58, 0x70, 0x50, 0x5c, 0x00}, + {0x10, 0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, + {0x00, 0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, + {0x20, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, + {0x10, 0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x20, 0x10, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x00, 0x28, 0x00, 0x44, 0x44, 0x3c, 0x04, 0x38}, + {0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x00, 0x10, 0x38, 0x44, 0x40, 0x44, 0x38, 0x10}, + {0x00, 0x18, 0x24, 0x70, 0x20, 0x20, 0x7c, 0x00}, + {0x00, 0x44, 0x28, 0x10, 0x38, 0x10, 0x38, 0x10}, + {0x00, 0x1c, 0x20, 0x78, 0x20, 0x78, 0x20, 0x1c}, + {0x00, 0x0c, 0x10, 0x38, 0x10, 0x10, 0x10, 0x60}, + {0x08, 0x10, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, + {0x08, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, + {0x08, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, + {0x08, 0x10, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, + {0x34, 0x58, 0x00, 0x70, 0x4c, 0x44, 0x44, 0x44}, + {0x34, 0x58, 0x00, 0x44, 0x64, 0x54, 0x4c, 0x44}, + {0x00, 0x38, 0x48, 0x34, 0x00, 0x78, 0x00, 0x00}, + {0x00, 0x30, 0x48, 0x30, 0x00, 0x78, 0x00, 0x00}, + {0x10, 0x00, 0x10, 0x20, 0x40, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x00, 0x7c, 0x40, 0x40, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x7c, 0x04, 0x04, 0x00, 0x00}, + {0x60, 0x24, 0x28, 0x16, 0x22, 0x44, 0x0f, 0x00}, + {0x60, 0x24, 0x28, 0x16, 0x2a, 0x4f, 0x02, 0x00}, + {0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}, + {0x00, 0x12, 0x24, 0x48, 0x24, 0x12, 0x00, 0x00}, + {0x00, 0x48, 0x24, 0x12, 0x24, 0x48, 0x00, 0x00}, + {0x00, 0x11, 0x00, 0x44, 0x00, 0x11, 0x00, 0x44}, + {0xaa, 0x11, 0xaa, 0x44, 0xaa, 0x11, 0xaa, 0x44}, + {0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55}, + {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10}, + {0x28, 0x28, 0x28, 0xe8, 0x28, 0x28, 0x28, 0x28}, + {0x00, 0x00, 0x00, 0xf8, 0x28, 0x28, 0x28, 0x28}, + {0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10}, + {0x28, 0x28, 0xe8, 0x08, 0xe8, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28}, + {0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0xe8, 0x08, 0xf8, 0x00, 0x00, 0x00}, + {0x28, 0x28, 0x28, 0xf8, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x10, 0x10, 0xff, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0xff, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10}, + {0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x10, 0x10, 0xff, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10}, + {0x28, 0x28, 0x28, 0x2f, 0x28, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0x2f, 0x20, 0x3f, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x3f, 0x20, 0x2f, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0xef, 0x00, 0xff, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0xff, 0x00, 0xef, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0x2f, 0x20, 0x2f, 0x28, 0x28, 0x28}, + {0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, + {0x28, 0x28, 0xef, 0x00, 0xef, 0x28, 0x28, 0x28}, + {0x10, 0x10, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, + {0x28, 0x28, 0x28, 0xff, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0xff, 0x00, 0xff, 0x10, 0x10, 0x10}, + {0x00, 0x00, 0x00, 0xff, 0x28, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0x28, 0x3f, 0x00, 0x00, 0x00, 0x00}, + {0x10, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10}, + {0x00, 0x00, 0x00, 0x3f, 0x28, 0x28, 0x28, 0x28}, + {0x28, 0x28, 0x28, 0xff, 0x28, 0x28, 0x28, 0x28}, + {0x10, 0x10, 0xff, 0x10, 0xff, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10}, + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, + {0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff}, + {0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0}, + {0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f}, + {0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x34, 0x48, 0x48, 0x48, 0x34, 0x00}, + {0x00, 0x30, 0x48, 0x50, 0x48, 0x44, 0x5c, 0x40}, + {0x00, 0x7c, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00}, + {0x00, 0x00, 0x7c, 0x28, 0x28, 0x28, 0x28, 0x00}, + {0x7c, 0x44, 0x20, 0x10, 0x20, 0x44, 0x7c, 0x00}, + {0x00, 0x00, 0x3c, 0x48, 0x48, 0x48, 0x30, 0x00}, + {0x00, 0x00, 0x44, 0x44, 0x44, 0x78, 0x40, 0x40}, + {0x00, 0x34, 0x58, 0x10, 0x10, 0x14, 0x08, 0x00}, + {0x38, 0x10, 0x38, 0x44, 0x44, 0x38, 0x10, 0x38}, + {0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x38, 0x00}, + {0x38, 0x44, 0x44, 0x44, 0x44, 0x28, 0x6c, 0x00}, + {0x78, 0x20, 0x18, 0x24, 0x44, 0x44, 0x38, 0x00}, + {0x00, 0x00, 0x28, 0x54, 0x54, 0x28, 0x00, 0x00}, + {0x00, 0x04, 0x28, 0x54, 0x54, 0x28, 0x40, 0x00}, + {0x00, 0x00, 0x3c, 0x40, 0x38, 0x40, 0x3c, 0x00}, + {0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x40}, + {0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00}, + {0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x38, 0x00}, + {0x20, 0x10, 0x08, 0x10, 0x20, 0x00, 0x38, 0x00}, + {0x08, 0x10, 0x20, 0x10, 0x08, 0x00, 0x38, 0x00}, + {0x0c, 0x12, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, + {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60}, + {0x00, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x10, 0x00}, + {0x00, 0x00, 0x32, 0x4c, 0x00, 0x32, 0x4c, 0x00}, + {0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, + {0x00, 0x0f, 0x08, 0x08, 0x08, 0x48, 0x28, 0x18}, + {0x30, 0x2c, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00}, + {0x18, 0x08, 0x10, 0x3c, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} +}; diff --git a/src/main.c b/src/main.c index 88f4f4e..fd5d21a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,5 @@ #include "shorthand.h" +#include "bd-font.c" // // Memory sections. @@ -40,7 +41,7 @@ static inline void set_display_mode(u16 value) { - *((volatile u32*)(MEM_IO + 0x0000)) = value; + *((vu32*)(MEM_IO + 0x0000)) = value; } // @@ -58,7 +59,28 @@ rgb15(u32 red, u32 green, u32 blue ) { static inline void put_pixel(int x, int y, Color clr) { - ((volatile u16*)MEM_VRAM)[x + y * SCREEN_WIDTH] = clr; + ((vu16*)MEM_VRAM)[x + y * SCREEN_WIDTH] = clr; +} + +// Using bd-font, an 8x8 bitmap font. +static inline void +put_char(int x, int y, Color clr, u8 chr) { + for (size_t i = 0; i < 8; ++i) { + for (size_t j = 0; j < 8; ++j) { + if ((font[chr][i] >> (7 - j)) & 0x1) { + put_pixel(x + j, y + i, clr); + } + } + } +} + +static inline void +put_line(int x, int y, Color clr, char *msg) { + int count = 0; + while (*msg) { + put_char(x + count, y, clr, *msg++); + count += 8; + } } // @@ -68,11 +90,12 @@ put_pixel(int x, int y, Color clr) { int main(void) { set_display_mode(DISP_MODE_3 | DISP_BG2); - put_pixel(120 , 80, rgb15(31, 0, 0)); - put_pixel(136 , 80, rgb15(0, 31, 0)); - put_pixel(120 , 96, rgb15(0, 0, 31)); - while(true); + while(true) { + put_line(16, 20 + 16, rgb15(28, 0, 0), "Hello world from the GBA!"); + put_line(16, 20 + 32, rgb15(0, 28, 28), "Using my little 8x8 bd-font"); + put_line(16, 20 + 64, rgb15(16, 0, 28), "Isn't that neat? :D"); + }; return 0; } -- cgit v1.2.1