From 089d9746daed303a343842ff652ac0a3547a455f Mon Sep 17 00:00:00 2001 From: Maxwell Beck Date: Tue, 27 Oct 2026 21:34:51 -0500 Subject: logo splash --- src/pico1541.c | 5 ++--- src/splash.c | 20 ++++++++++++++++++++ src/splash.h | 10 ++++++++++ src/ssd1306.c | 22 +++++++++++++++++----- src/ssd1306.h | 5 +++-- 5 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 src/splash.c create mode 100644 src/splash.h (limited to 'src') diff --git a/src/pico1541.c b/src/pico1541.c index a5bbbf5..170491a 100644 --- a/src/pico1541.c +++ b/src/pico1541.c @@ -3,6 +3,7 @@ #include #include +#include "splash.h" #include "ssd1306.h" int main() { @@ -21,9 +22,7 @@ int main() { ssd_init(&display, i2c0, 0x3C); ssd_power_on(&display); - ssd_push(&display, SSD1306_CTRL_DATA); - ssd_push_str(&display, "HEWWO OwO"); - ssd_send(&display); + splash_draw(&display); return 0; } diff --git a/src/splash.c b/src/splash.c new file mode 100644 index 0000000..828559a --- /dev/null +++ b/src/splash.c @@ -0,0 +1,20 @@ +#include "splash.h" + +#include + +const uint8_t splash_chars[64] = { + 0x20, 0xdf, 0xe9, 0x20, 0xa0, 0xa0, 0xa0, 0xa0, 0x20, 0xdf, 0xe9, 0x20, 0xa0, 0xa0, 0xa0, 0xa0, + 0x55, 0x55, 0x49, 0x49, 0xa0, 0xd5, 0xc9, 0xa0, 0x55, 0x55, 0x49, 0x49, 0xa0, 0xd5, 0xc9, 0xa0, + 0x4a, 0x57, 0x57, 0x4b, 0xa0, 0xca, 0xcb, 0xfe, 0x4a, 0x57, 0x57, 0x4b, 0xa0, 0xca, 0xcb, 0xfe, + 0x20, 0x4a, 0x4b, 0x20, 0xa0, 0xea, 0xf4, 0xa0, 0x20, 0x4a, 0x4b, 0x20, 0xa0, 0xea, 0xf4, 0xa0, +}; + +int splash_draw(ssd1306_t *display) { + for (int i = 0; i < 64; i++) { + int ret = ssd_putscr(display, splash_chars[i], false); + if (ret < 0) { + return ret; + } + } + return PICO_OK; +} diff --git a/src/splash.h b/src/splash.h new file mode 100644 index 0000000..b1039e5 --- /dev/null +++ b/src/splash.h @@ -0,0 +1,10 @@ +#ifndef PICO1541_SPLASH_H +#define PICO1541_SPLASH_H + +#include + +#include "ssd1306.h" + +int splash_draw(ssd1306_t *display); + +#endif 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; } diff --git a/src/ssd1306.h b/src/ssd1306.h index 9c72d04..581b683 100644 --- a/src/ssd1306.h +++ b/src/ssd1306.h @@ -135,7 +135,8 @@ int ssd_send(ssd1306_t *display); int ssd_power_on(ssd1306_t *display); -int ssd_push_char(ssd1306_t *display, const char c); -int ssd_push_str(ssd1306_t *display, const char *str); +int ssd_putscr(ssd1306_t *display, const uint8_t c, bool shift); +int ssd_putchar(ssd1306_t *display, const char c); +int ssd_putstr(ssd1306_t *display, const char *str); #endif -- cgit v1.3.1