summaryrefslogtreecommitdiff
path: root/src/ssd1306.c
diff options
context:
space:
mode:
authorMaxwell Beck <max@rastertail.net>2026-10-27 21:34:51 -0500
committerMaxwell Beck <max@rastertail.net>2026-10-27 21:34:51 -0500
commit089d9746daed303a343842ff652ac0a3547a455f (patch)
treed5fbd837ad3083982cb7b7ec7d4e9e7a09c9504c /src/ssd1306.c
parent5bc96cb00fd2b213aeef7ba87a0160d80b81dc45 (diff)
logo splashrewrite
Diffstat (limited to 'src/ssd1306.c')
-rw-r--r--src/ssd1306.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/ssd1306.c b/src/ssd1306.c
index e1c00ff..04991a2 100644
--- a/src/ssd1306.c
+++ b/src/ssd1306.c
@@ -77,22 +77,34 @@ int ssd_power_on(ssd1306_t *display) {
return ssd_send(display);
}
-int ssd_push_char(ssd1306_t *display, const char c) {
- uint8_t scr = ascii_to_screen[c];
+int ssd_putscr(ssd1306_t *display, const uint8_t c, bool shift) {
+ ssd_push(display, SSD1306_CTRL_DATA);
for (int i = 0; i < 8; i++) {
- int ret = ssd_push(display, c64_chars[scr + 256][i]);
+ int b;
+ if (shift) {
+ b = c64_chars[c + 256][i];
+ } else {
+ b = c64_chars[c][i];
+ }
+
+ int ret = ssd_push(display, b);
if (ret < 0) {
return ret;
}
}
- return PICO_OK;
+ return ssd_send(display);
+}
+
+int ssd_putchar(ssd1306_t *display, const char c) {
+ uint8_t scr = ascii_to_screen[c];
+ return ssd_putscr(display, scr, true);
}
int ssd_push_str(ssd1306_t *display, const char *str) {
for (int i = 0; str[i]; i++) {
- int ret = ssd_push_char(display, str[i]);
+ int ret = ssd_putchar(display, str[i]);
if (ret < 0) {
return ret;
}