--- np2/font/font.c 2004/02/18 21:58:41 1.7 +++ np2/font/font.c 2011/02/23 10:11:44 1.10 @@ -1,3 +1,11 @@ +/** + * @file font.c + * @brief CGROM and font loader + * + * @author $Author: yui $ + * @date $Date: 2011/02/23 10:11:44 $ + */ + #include "compiler.h" #include "strres.h" #include "dosio.h" @@ -6,23 +14,33 @@ #include "fontdata.h" #include "fontmake.h" - #ifndef FONTMEMORYBIND - BYTE __font[0x84000]; + UINT8 __font[0x84000]; #endif -static const char fonttmpname[] = "font.tmp"; - +static const OEMCHAR fonttmpname[] = OEMTEXT("font.tmp"); +/** + * Initializes CGROM + */ void font_initialize(void) { - BYTE *p; - BYTE *q; + ZeroMemory(fontrom, sizeof(fontrom)); + font_setchargraph(FALSE); +} + +/** + * Builds charactor graphics + * @param[in] epson If this parameter is FALSE, patched NEC charactor + */ +void font_setchargraph(BOOL epson) { + + UINT8 *p; + UINT8 *q; UINT i; UINT j; UINT32 dbit; - ZeroMemory(fontrom, sizeof(fontrom)); p = fontrom + 0x81000; q = fontrom + 0x82000; for (i=0; i<256; i++) { @@ -41,17 +59,27 @@ void font_initialize(void) { q += 2; } } + + if (!epson) { + *(UINT16 *)(fontrom + 0x81000 + (0xf2 * 16)) = 0; + fontrom[0x82000 + (0xf2 * 8)] = 0; + } } -static BYTE fonttypecheck(const char *fname) { +/** + * Retrieves the font type of the specified file. + * @param[in] fname The name of the font file + * @return font type + */ +static UINT8 fonttypecheck(const OEMCHAR *fname) { -const char *p; +const OEMCHAR *p; - p = file_getext((char *)fname); + p = file_getext(fname); if (!file_cmpname(p, str_bmp)) { return(FONTTYPE_PC98); } - p = file_getname((char *)fname); + p = file_getname(fname); if (!file_cmpname(p, v98fontname)) { return(FONTTYPE_V98); } @@ -75,18 +103,25 @@ const char *p; return(FONTTYPE_NONE); } -BYTE font_load(const char *filename, BOOL force) { +/** + * Loads font files + * @param[in] filename The name of the font file + * @param[in] force If this parameter is TRUE, load file always + * If this parameter is FALSE, load when font is not ready + * @return font type + */ +UINT8 font_load(const OEMCHAR *filename, BOOL force) { UINT i; -const BYTE *p; - BYTE *q; +const UINT8 *p; + UINT8 *q; UINT j; - char fname[MAX_PATH]; - BYTE type; - BYTE loading; + OEMCHAR fname[MAX_PATH]; + UINT8 type; + UINT8 loading; if (filename) { - file_cpyname(fname, filename, sizeof(fname)); + file_cpyname(fname, filename, NELEMENTS(fname)); } else { fname[0] = '\0'; @@ -146,7 +181,7 @@ const BYTE *p; loading = fontv98_read(file_getcd(v98fontname), loading); loading = fontpc88_read(file_getcd(pc88ankname), loading); if (loading & FONTLOAD_16) { - file_cpyname(fname, file_getcd(fonttmpname), sizeof(fname)); + file_cpyname(fname, file_getcd(fonttmpname), NELEMENTS(fname)); if (file_attr(fname) == -1) { makepc98bmp(fname); } @@ -154,4 +189,3 @@ const BYTE *p; } return(type); } -