From: Lukas Krickl Date: Thu, 26 Feb 2026 20:38:49 +0000 (+0100) Subject: debug font: Added basic pixelart font. X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=526076f3008fc6425375fdd6b0b33ebd02b8613b;p=lrts%2F.git debug font: Added basic pixelart font. The font is included as a C header file and was generated using a png and a quick script. The font is not complete but good enough as a built-in way of rendering text. --- diff --git a/src/p_r_sdl/p_draw.c b/src/p_r_sdl/p_draw.c index 5f2ca67..468b1bd 100644 --- a/src/p_r_sdl/p_draw.c +++ b/src/p_r_sdl/p_draw.c @@ -33,7 +33,7 @@ void p_draw_present(void) { dst.w = screen->w; dst.h = screen->h; - SDL_BlitSurfaceScaled(r_target, NULL, screen, &dst, SDL_SCALEMODE_PIXELART); + SDL_BlitSurfaceScaled(r_target, NULL, screen, &dst, SDL_SCALEMODE_LINEAR); SDL_UpdateWindowSurface(p_main_window); } diff --git a/src/r_render.c b/src/r_render.c index c7d89d0..8862619 100644 --- a/src/r_render.c +++ b/src/r_render.c @@ -27,10 +27,9 @@ void r_draw_pixel(struct r_framebuffer *fb, i32 x, i32 y, r_color color) { } void r_render_debug(void) { - /* struct lrts_state *state = lrts_state(); */ + struct lrts_state *state = lrts_state(); - u_debug_draw_text(0, 0, "01"); - /*u_debug_draw_text(0, 0, "FPS: %d", state->fps); */ + u_debug_draw_text(0, 0, "FPS: %02d", state->fps); } void r_render_frame(void) { diff --git a/src/u_debug.c b/src/u_debug.c index 7ba3918..bd4eda8 100644 --- a/src/u_debug.c +++ b/src/u_debug.c @@ -1,34 +1,12 @@ #include "u_debug.h" #include "r_render.h" +#include "u_debug_font.h" #define U_DEBUG_FONT_W 8 #define U_DEBUG_FONT_H 8 -const u8 debug_font_num[10 * U_DEBUG_FONT_H] = { - /* 0 */ - 0xFE, - 0x82, - 0x82, - 0x82, - 0x82, - 0x82, - 0x82, - 0xFF, - - /* 1 */ - 0x80, - 0x80, - 0x80, - 0x80, - 0x80, - 0x80, - 0x80, - 0x80, - - /* 2 */ - -}; +#define U_DEBUG_FIRST_PRINT_CHAR 0x20 r_color u_debug_colors[2] = {0x00000000, 0xFFFFFFFF}; @@ -51,6 +29,7 @@ void u_debug_draw_char(u32 x, u32 y, const u8 *c) { void u_debug_draw_text(u32 x, u32 y, const char *fmt, ...) { u32 i = 0; u32 len = 0; + u32 font_offset = 0; char c = 0; char buffer[2048]; va_list args; @@ -58,16 +37,18 @@ void u_debug_draw_text(u32 x, u32 y, const char *fmt, ...) { va_start(args, fmt); len = u_vsprintf(buffer, fmt, args); va_end(args); - - LRTS_UNUSED(x); - LRTS_UNUSED(y); + + buffer[len] = 0; for (i = 0; i < len; i++) { c = buffer[i]; - if (c >= '0' && c <= '9') { - u_debug_draw_char(x+U_DEBUG_FONT_W*2*i, y, - debug_font_num + (u32)(c - '0') * U_DEBUG_FONT_H); + /* not printable */ + if (c < U_DEBUG_FIRST_PRINT_CHAR) { + continue; } + font_offset = (u32)(c - U_DEBUG_FIRST_PRINT_CHAR) * U_DEBUG_FONT_H; + u_debug_draw_char(x+U_DEBUG_FONT_W*i+U_DEBUG_FONT_W / 2 * i, y, + u_debug_font + font_offset); } } diff --git a/src/u_debug.h b/src/u_debug.h index 6f89fe6..65bb302 100644 --- a/src/u_debug.h +++ b/src/u_debug.h @@ -1,7 +1,6 @@ #ifndef U_DEBUG_H__ #define U_DEBUG_H__ -#define U_DEBUG_FONT_BYTES 8 /** * Daws debug text to the screen diff --git a/src/u_debug_font.h b/src/u_debug_font.h new file mode 100644 index 0000000..4fd8fb7 --- /dev/null +++ b/src/u_debug_font.h @@ -0,0 +1,262 @@ +#ifndef U_DEBUG_FONT_H__ +#define U_DEBUG_FONT_H__ + +const u8 u_debug_font[] = { + /* char 0x20 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x21 */ + 0x00, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x00, + /* char 0x22 */ + 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x23 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x24 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x25 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x26 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x29 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2b */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2c */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2d */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2e */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x2f */ + 0x00, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, + /* char 0x30 */ + 0x00, 0x38, 0x44, 0x4c, 0x54, 0x64, 0x44, 0x38, + /* char 0x31 */ + 0x00, 0x10, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, + /* char 0x32 */ + 0x00, 0x38, 0x44, 0x08, 0x10, 0x20, 0x40, 0x7c, + /* char 0x33 */ + 0x00, 0x78, 0x04, 0x04, 0x3c, 0x04, 0x04, 0x78, + /* char 0x34 */ + 0x00, 0x18, 0x28, 0x48, 0x48, 0x7c, 0x08, 0x08, + /* char 0x35 */ + 0x00, 0x7c, 0x40, 0x40, 0x78, 0x04, 0x04, 0x78, + /* char 0x36 */ + 0x00, 0x3c, 0x40, 0x40, 0x78, 0x44, 0x44, 0x38, + /* char 0x37 */ + 0x00, 0x78, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, + /* char 0x38 */ + 0x00, 0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, + /* char 0x39 */ + 0x00, 0x38, 0x44, 0x44, 0x3c, 0x04, 0x08, 0x30, + /* char 0x3a */ + 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, + /* char 0x3b */ + 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x0c, 0x00, + /* char 0x3c */ + 0x00, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, + /* char 0x3d */ + 0x00, 0x7c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + /* char 0x3e */ + 0x00, 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, + /* char 0x3f */ + 0x00, 0x38, 0x44, 0x08, 0x10, 0x10, 0x00, 0x10, + /* char 0x40 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x41 */ + 0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, + /* char 0x42 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, + /* char 0x43 */ + 0x00, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3c, + /* char 0x44 */ + 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, + /* char 0x45 */ + 0x00, 0x78, 0x40, 0x40, 0x70, 0x40, 0x40, 0x78, + /* char 0x46 */ + 0x00, 0x78, 0x40, 0x40, 0x70, 0x40, 0x40, 0x40, + /* char 0x47 */ + 0x00, 0x3c, 0x40, 0x40, 0x40, 0x5c, 0x44, 0x38, + /* char 0x48 */ + 0x00, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, + /* char 0x49 */ + 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, + /* char 0x4a */ + 0x00, 0x04, 0x04, 0x04, 0x04, 0x44, 0x44, 0x38, + /* char 0x4b */ + 0x00, 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, + /* char 0x4c */ + 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, + /* char 0x4d */ + 0x00, 0x44, 0x6c, 0x54, 0x44, 0x44, 0x44, 0x44, + /* char 0x4e */ + 0x00, 0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, + /* char 0x4f */ + 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, + /* char 0x50 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, + /* char 0x51 */ + 0x00, 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, + /* char 0x52 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, + /* char 0x53 */ + 0x00, 0x3c, 0x40, 0x40, 0x38, 0x04, 0x04, 0x78, + /* char 0x54 */ + 0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + /* char 0x55 */ + 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, + /* char 0x56 */ + 0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, + /* char 0x57 */ + 0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x7c, 0x28, + /* char 0x58 */ + 0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, + /* char 0x59 */ + 0x00, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, + /* char 0x5a */ + 0x00, 0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, + /* char 0x5b */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x5c */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x5d */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x5e */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x5f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x61 */ + 0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, + /* char 0x62 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, + /* char 0x63 */ + 0x00, 0x3c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3c, + /* char 0x64 */ + 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, + /* char 0x65 */ + 0x00, 0x78, 0x40, 0x40, 0x70, 0x40, 0x40, 0x78, + /* char 0x66 */ + 0x00, 0x78, 0x40, 0x40, 0x70, 0x40, 0x40, 0x40, + /* char 0x67 */ + 0x00, 0x3c, 0x40, 0x40, 0x40, 0x5c, 0x44, 0x38, + /* char 0x68 */ + 0x00, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, + /* char 0x69 */ + 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, + /* char 0x6a */ + 0x00, 0x04, 0x04, 0x04, 0x04, 0x44, 0x44, 0x38, + /* char 0x6b */ + 0x00, 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, + /* char 0x6c */ + 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, + /* char 0x6d */ + 0x00, 0x44, 0x6c, 0x54, 0x44, 0x44, 0x44, 0x44, + /* char 0x6e */ + 0x00, 0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, + /* char 0x6f */ + 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, + /* char 0x70 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, + /* char 0x71 */ + 0x00, 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, + /* char 0x72 */ + 0x00, 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, + /* char 0x73 */ + 0x00, 0x3c, 0x40, 0x40, 0x38, 0x04, 0x04, 0x78, + /* char 0x74 */ + 0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + /* char 0x75 */ + 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, + /* char 0x76 */ + 0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, + /* char 0x77 */ + 0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x7c, 0x28, + /* char 0x78 */ + 0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, + /* char 0x79 */ + 0x00, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, + /* char 0x7a */ + 0x00, 0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, + /* char 0x7b */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x7c */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x7d */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x7e */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x7f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x80 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x81 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x82 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x83 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x84 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x85 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x86 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x87 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x88 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x89 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8b */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8c */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8d */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8e */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x8f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x90 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x91 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x92 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x93 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x94 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x95 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x96 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x97 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x98 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x99 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9a */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9b */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9c */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9d */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9e */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* char 0x9f */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +#endif