From fef4b3507a7f4b48b59ab0624d43a3a77f766749 Mon Sep 17 00:00:00 2001 From: sorgelig Date: Fri, 22 Mar 2019 19:14:33 +0800 Subject: [PATCH] Support for font loading. --- cfg.cpp | 1 + cfg.h | 1 + charrom.h | 2 +- ini_parser.cpp | 2 +- user_io.cpp | 3 +++ 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/cfg.cpp b/cfg.cpp index 89beefc..b93786f 100644 --- a/cfg.cpp +++ b/cfg.cpp @@ -48,6 +48,7 @@ const ini_var_t ini_vars[] = { { "MENU_PAL", (void*)(&(cfg.menu_pal)), UINT8, 0, 1, 1 }, { "BOOTCORE", (void*)(&(cfg.bootcore)), STRING, 0, sizeof(cfg.bootcore) - 1, 1 }, { "BOOTCORE_TIMEOUT", (void*)(&(cfg.bootcore_timeout)), INT16, 10, 30, 1 }, + { "FONT", (void*)(&(cfg.font)), STRING, 0, sizeof(cfg.font) - 1, 1 }, }; // mist ini config diff --git a/cfg.h b/cfg.h index f787321..034b658 100644 --- a/cfg.h +++ b/cfg.h @@ -37,6 +37,7 @@ typedef struct { char video_conf[1024]; char video_conf_pal[1024]; char video_conf_ntsc[1024]; + char font[1024]; } cfg_t; //// functions //// diff --git a/charrom.h b/charrom.h index 1403d8a..395beee 100644 --- a/charrom.h +++ b/charrom.h @@ -38,7 +38,7 @@ Middle Dot */ // *character font -unsigned char charfont[][8] = +unsigned char charfont[256][8] = { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // 0 [0x0] { 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55 }, // 1 [0x1] diff --git a/ini_parser.cpp b/ini_parser.cpp index 92c42ba..b87ba04 100644 --- a/ini_parser.cpp +++ b/ini_parser.cpp @@ -29,7 +29,7 @@ #define CHAR_IS_ALPHA_UPPER(c) (((c) >= 'A') && ((c) <= 'Z')) #define CHAR_IS_ALPHA(c) (CHAR_IS_ALPHA_LOWER(c) || CHAR_IS_ALPHA_UPPER(c)) #define CHAR_IS_ALPHANUM(c) (CHAR_IS_ALPHA_LOWER(c) || CHAR_IS_ALPHA_UPPER(c) || CHAR_IS_NUM(c)) -#define CHAR_IS_SPECIAL(c) (((c) == '[') || ((c) == ']') || ((c) == '-') || ((c) == '_') || ((c) == ',') || ((c) == '.') || ((c) == '=')) +#define CHAR_IS_SPECIAL(c) (((c) == '[') || ((c) == ']') || ((c) == '-') || ((c) == '_') || ((c) == ',') || ((c) == '.') || ((c) == '=') || ((c) == '/') || ((c) == '(') || ((c) == ')')) #define CHAR_IS_VALID(c) (CHAR_IS_ALPHANUM(c) || CHAR_IS_SPECIAL(c)) #define CHAR_IS_SPACE(c) (((c) == ' ') || ((c) == '\t')) #define CHAR_IS_LINEEND(c) (((c) == '\n')) diff --git a/user_io.cpp b/user_io.cpp index d27b2e4..09934b2 100644 --- a/user_io.cpp +++ b/user_io.cpp @@ -459,6 +459,8 @@ void SetMidiLinkMode(int mode) } } +extern unsigned char charfont[256][8]; + void user_io_init(const char *path) { char *name; @@ -507,6 +509,7 @@ void user_io_init(const char *path) bootcore_init(path); } parse_video_mode(); + if(strlen(cfg.font)) FileLoad(cfg.font, &charfont, sizeof(charfont)); FileLoadConfig("Volume.dat", &vol_att, 1); vol_att &= 0x1F; if (!cfg.volumectl) vol_att = 0;