219,10 → 219,8 |
*/ |
static void screen_scroll(void) |
{ |
if (ylogo > 0) { |
if (ylogo > 0) |
logo_hide(); |
return; |
} |
|
unsigned int row; |
|
234,13 → 232,11 |
unsigned int x; |
unsigned int col; |
|
for (col = 0, x = 0; col < cols; col++, |
x += FONT_WIDTH) { |
for (col = 0, x = 0; col < cols; col++, x += FONT_WIDTH) { |
uint8_t glyph; |
|
if (row < rows - 1) { |
if (backbuf[BB_POS(col, row)] == |
backbuf[BB_POS(col, row + 1)]) |
if (backbuf[BB_POS(col, row)] == backbuf[BB_POS(col, row + 1)]) |
continue; |
|
glyph = backbuf[BB_POS(col, row + 1)]; |
248,8 → 244,7 |
glyph = 0; |
|
memcpy(&fb_addr[FB_POS(x, y + yd)], |
&glyphs[GLYPH_POS(glyph, yd)], |
glyphscanline); |
&glyphs[GLYPH_POS(glyph, yd)], glyphscanline); |
} |
} |
} |
298,8 → 293,7 |
case '\t': |
cursor_remove(); |
do { |
glyph_draw((uint8_t) ' ', position % cols, |
position / cols); |
glyph_draw((uint8_t) ' ', position % cols, position / cols); |
position++; |
} while ((position % 8) && (position < cols * rows)); |
break; |
341,15 → 335,11 |
for (y = 0; y < FONT_SCANLINES; y++) { |
unsigned int x; |
|
for (x = 0; x < FONT_WIDTH; x++) { |
void *dst = &glyphs[GLYPH_POS(glyph, y) + |
x * pixelbytes]; |
uint32_t rgb = (fb_font[ROW2Y(glyph) + y] & |
(1 << (7 - x))) ? FG_COLOR : BG_COLOR; |
rgb_conv(dst, rgb); |
for (x = 0; x < FONT_WIDTH; x++) |
rgb_conv(&glyphs[GLYPH_POS(glyph, y) + x * pixelbytes], |
(fb_font[ROW2Y(glyph) + y] & (1 << (7 - x))) ? FG_COLOR : BG_COLOR); |
} |
} |
} |
|
/* Prerender background scanline */ |
unsigned int x; |
372,9 → 362,7 |
|
for (x = 0; x < xres; x++) |
rgb_conv(&fb_addr[FB_POS(x, y)], |
(x < LOGO_WIDTH) ? |
fb_logo[y * LOGO_WIDTH + x] : |
LOGO_COLOR); |
(x < LOGO_WIDTH) ? fb_logo[y * LOGO_WIDTH + x] : LOGO_COLOR); |
} |
} |
|
388,15 → 376,12 |
unsigned int x; |
unsigned int col; |
|
for (col = 0, x = 0; col < cols; |
col++, x += FONT_WIDTH) { |
void *d = &fb_addr[FB_POS(x, y + yd)]; |
void *s = &glyphs[GLYPH_POS(backbuf[BB_POS(col, |
row)], yd)]; |
memcpy(d, s, glyphscanline); |
for (col = 0, x = 0; col < cols; col++, x += FONT_WIDTH) |
memcpy(&fb_addr[FB_POS(x, y + yd)], |
&glyphs[GLYPH_POS(backbuf[BB_POS(col, row)], yd)], |
glyphscanline); |
} |
} |
} |
|
if (COL2X(cols) < xres) { |
unsigned int y; |
406,10 → 391,10 |
memcpy(&fb_addr[FB_POS(COL2X(cols), y)], bgscan, size); |
} |
|
if (ROW2Y(rowtrim) + ylogo < yres) { |
if (ROW2Y(rowtrim) < yres) { |
unsigned int y; |
|
for (y = ROW2Y(rowtrim) + ylogo; y < yres; y++) |
for (y = ROW2Y(rowtrim); y < yres; y++) |
memcpy(&fb_addr[FB_POS(0, y)], bgscan, bgscanbytes); |
} |
} |