diff --git a/library/modules/Screen.cpp b/library/modules/Screen.cpp index 5e3eeecc4..653ab0bd3 100644 --- a/library/modules/Screen.cpp +++ b/library/modules/Screen.cpp @@ -115,20 +115,29 @@ bool Screen::inGraphicsMode() return init && init->display.flag.is_set(init_display_flags::USE_GRAPHICS); } +static bool doSetTile_map(const Pen &pen, int x, int y) { + size_t index = (x * gps->main_viewport->dim_y) + y; + long texpos = pen.tile; + if (texpos == 0) { + texpos = init->font.large_font_texpos[(uint8_t)pen.ch]; + } + gps->main_viewport->screentexpos_interface[index] = texpos; + return true; +} + static bool doSetTile_default(const Pen &pen, int x, int y, bool map) { + bool use_graphics = Screen::inGraphicsMode(); + + if (map && use_graphics) + return doSetTile_map(pen, x, y); + size_t index = (x * gps->dimy) + y; uint8_t *screen = &gps->screen[index * 8]; if (screen > gps->screen_limit) return false; - if (map) { - - //gps->main_viewport->screentexpos_interface - return true; - } - long *texpos = &gps->screentexpos[index]; long *texpos_lower = &gps->screentexpos_lower[index]; uint32_t *flag = &gps->screentexpos_flag[index]; @@ -155,7 +164,7 @@ static bool doSetTile_default(const Pen &pen, int x, int y, bool map) else if (pen.tile_mode == Screen::Pen::TileColor) *flag |= 1; // SCREENTEXPOS_FLAG_GRAYSCALE - if (pen.tile && init->display.flag.is_set(init_display_flags::USE_GRAPHICS)) { + if (pen.tile && use_graphics) { *texpos = pen.tile; } else { screen[0] = uint8_t(pen.ch);