Display control code

This commit is contained in:
2026-02-07 01:38:05 -05:00
parent 2e9004ee34
commit 52ff24e649
21 changed files with 797 additions and 86 deletions

View File

@@ -0,0 +1,163 @@
#ifndef FONT_H
#define FONT_H
#include <cstdint>
// Adapted from https://github.com/dhepper/font8x8/blob/master/font8x8_basic.h
/**
* 8x8 monochrome bitmap fonts for rendering
* Author: Daniel Hepper <daniel@hepper.net>
*
* License: Public Domain
*
* Based on:
* // Summary: font8x8.h
* // 8x8 monochrome bitmap fonts for rendering
* //
* // Author:
* // Marcel Sondaar
* // International Business Machines (public domain VGA fonts)
* //
* // License:
* // Public Domain
*
* Fetched from: http://dimensionalrift.homelinux.net/combuster/mos3/?p=viewsource&file=/modules/gfx/font8_8.asm
**/
// Constant: font8x8_basic
// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin)
uint8_t font8x8_basic[128][8] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x18 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36 },
{ 0x00, 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36 },
{ 0x00, 0x0C, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x0C },
{ 0x00, 0x63, 0x66, 0x0C, 0x18, 0x33, 0x63, 0x00 },
{ 0x00, 0x6E, 0x33, 0x3B, 0x6E, 0x1C, 0x36, 0x1C },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06 },
{ 0x00, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18 },
{ 0x00, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06 },
{ 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00 },
{ 0x00, 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00 },
{ 0x06, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00 },
{ 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60 },
{ 0x00, 0x3E, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x3E },
{ 0x00, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0C },
{ 0x00, 0x3F, 0x33, 0x06, 0x1C, 0x30, 0x33, 0x1E },
{ 0x00, 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E },
{ 0x00, 0x78, 0x30, 0x7F, 0x33, 0x36, 0x3C, 0x38 },
{ 0x00, 0x1E, 0x33, 0x30, 0x30, 0x1F, 0x03, 0x3F },
{ 0x00, 0x1E, 0x33, 0x33, 0x1F, 0x03, 0x06, 0x1C },
{ 0x00, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x33, 0x3F },
{ 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E },
{ 0x00, 0x0E, 0x18, 0x30, 0x3E, 0x33, 0x33, 0x1E },
{ 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00 },
{ 0x06, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00 },
{ 0x00, 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18 },
{ 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00 },
{ 0x00, 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06 },
{ 0x00, 0x0C, 0x00, 0x0C, 0x18, 0x30, 0x33, 0x1E },
{ 0x00, 0x1E, 0x03, 0x7B, 0x7B, 0x7B, 0x63, 0x3E },
{ 0x00, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x1E, 0x0C },
{ 0x00, 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F },
{ 0x00, 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C },
{ 0x00, 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F },
{ 0x00, 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F },
{ 0x00, 0x0F, 0x06, 0x16, 0x1E, 0x16, 0x46, 0x7F },
{ 0x00, 0x7C, 0x66, 0x73, 0x03, 0x03, 0x66, 0x3C },
{ 0x00, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33 },
{ 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E },
{ 0x00, 0x1E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x78 },
{ 0x00, 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67 },
{ 0x00, 0x7F, 0x66, 0x46, 0x06, 0x06, 0x06, 0x0F },
{ 0x00, 0x63, 0x63, 0x6B, 0x7F, 0x7F, 0x77, 0x63 },
{ 0x00, 0x63, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63 },
{ 0x00, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C },
{ 0x00, 0x0F, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3F },
{ 0x00, 0x38, 0x1E, 0x3B, 0x33, 0x33, 0x33, 0x1E },
{ 0x00, 0x67, 0x66, 0x36, 0x3E, 0x66, 0x66, 0x3F },
{ 0x00, 0x1E, 0x33, 0x38, 0x0E, 0x07, 0x33, 0x1E },
{ 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x2D, 0x3F },
{ 0x00, 0x3F, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33 },
{ 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x33, 0x33, 0x33 },
{ 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63 },
{ 0x00, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x63 },
{ 0x00, 0x1E, 0x0C, 0x0C, 0x1E, 0x33, 0x33, 0x33 },
{ 0x00, 0x7F, 0x66, 0x4C, 0x18, 0x31, 0x63, 0x7F },
{ 0x00, 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E },
{ 0x00, 0x40, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03 },
{ 0x00, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E },
{ 0x00, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1C, 0x08 },
{ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0C, 0x0C },
{ 0x00, 0x6E, 0x33, 0x3E, 0x30, 0x1E, 0x00, 0x00 },
{ 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x07 },
{ 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00, 0x00 },
{ 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x38 },
{ 0x00, 0x1E, 0x03, 0x3F, 0x33, 0x1E, 0x00, 0x00 },
{ 0x00, 0x0F, 0x06, 0x06, 0x0F, 0x06, 0x36, 0x1C },
{ 0x1F, 0x30, 0x3E, 0x33, 0x33, 0x6E, 0x00, 0x00 },
{ 0x00, 0x67, 0x66, 0x66, 0x6E, 0x36, 0x06, 0x07 },
{ 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0E, 0x00, 0x0C },
{ 0x1E, 0x33, 0x33, 0x30, 0x30, 0x30, 0x00, 0x30 },
{ 0x00, 0x67, 0x36, 0x1E, 0x36, 0x66, 0x06, 0x07 },
{ 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E },
{ 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x33, 0x00, 0x00 },
{ 0x00, 0x33, 0x33, 0x33, 0x33, 0x1F, 0x00, 0x00 },
{ 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00, 0x00 },
{ 0x0F, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00, 0x00 },
{ 0x78, 0x30, 0x3E, 0x33, 0x33, 0x6E, 0x00, 0x00 },
{ 0x00, 0x0F, 0x06, 0x66, 0x6E, 0x3B, 0x00, 0x00 },
{ 0x00, 0x1F, 0x30, 0x1E, 0x03, 0x3E, 0x00, 0x00 },
{ 0x00, 0x18, 0x2C, 0x0C, 0x0C, 0x3E, 0x0C, 0x08 },
{ 0x00, 0x6E, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00 },
{ 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x33, 0x00, 0x00 },
{ 0x00, 0x36, 0x7F, 0x7F, 0x6B, 0x63, 0x00, 0x00 },
{ 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00, 0x00 },
{ 0x1F, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x00, 0x00 },
{ 0x00, 0x3F, 0x26, 0x0C, 0x19, 0x3F, 0x00, 0x00 },
{ 0x00, 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38 },
{ 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18 },
{ 0x00, 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07 },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E },
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
};
#endif // FONT_H