|
|
| version 1.8, 2005/02/07 14:46:10 | version 1.10, 2011/02/23 10:11:44 |
|---|---|
| Line 1 | Line 1 |
| /** | |
| * @file font.c | |
| * @brief CGROM and font loader | |
| * | |
| * @author $Author$ | |
| * @date $Date$ | |
| */ | |
| #include "compiler.h" | #include "compiler.h" |
| #include "strres.h" | #include "strres.h" |
| #include "dosio.h" | #include "dosio.h" |
| Line 6 | Line 14 |
| #include "fontdata.h" | #include "fontdata.h" |
| #include "fontmake.h" | #include "fontmake.h" |
| #ifndef FONTMEMORYBIND | #ifndef FONTMEMORYBIND |
| UINT8 __font[0x84000]; | UINT8 __font[0x84000]; |
| #endif | #endif |
| static const char fonttmpname[] = "font.tmp"; | static const OEMCHAR fonttmpname[] = OEMTEXT("font.tmp"); |
| /** | |
| * Initializes CGROM | |
| */ | |
| void font_initialize(void) { | void font_initialize(void) { |
| 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 *p; |
| UINT8 *q; | UINT8 *q; |
| UINT i; | UINT i; |
| UINT j; | UINT j; |
| UINT32 dbit; | UINT32 dbit; |
| ZeroMemory(fontrom, sizeof(fontrom)); | |
| p = fontrom + 0x81000; | p = fontrom + 0x81000; |
| q = fontrom + 0x82000; | q = fontrom + 0x82000; |
| for (i=0; i<256; i++) { | for (i=0; i<256; i++) { |
| Line 41 void font_initialize(void) { | Line 59 void font_initialize(void) { |
| q += 2; | q += 2; |
| } | } |
| } | } |
| if (!epson) { | |
| *(UINT16 *)(fontrom + 0x81000 + (0xf2 * 16)) = 0; | |
| fontrom[0x82000 + (0xf2 * 8)] = 0; | |
| } | |
| } | } |
| static UINT8 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)) { | if (!file_cmpname(p, str_bmp)) { |
| return(FONTTYPE_PC98); | return(FONTTYPE_PC98); |
| } | } |
| p = file_getname((char *)fname); | p = file_getname(fname); |
| if (!file_cmpname(p, v98fontname)) { | if (!file_cmpname(p, v98fontname)) { |
| return(FONTTYPE_V98); | return(FONTTYPE_V98); |
| } | } |
| Line 75 const char *p; | Line 103 const char *p; |
| return(FONTTYPE_NONE); | return(FONTTYPE_NONE); |
| } | } |
| UINT8 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; | UINT i; |
| const UINT8 *p; | const UINT8 *p; |
| UINT8 *q; | UINT8 *q; |
| UINT j; | UINT j; |
| char fname[MAX_PATH]; | OEMCHAR fname[MAX_PATH]; |
| UINT8 type; | UINT8 type; |
| UINT8 loading; | UINT8 loading; |
| if (filename) { | if (filename) { |
| file_cpyname(fname, filename, sizeof(fname)); | file_cpyname(fname, filename, NELEMENTS(fname)); |
| } | } |
| else { | else { |
| fname[0] = '\0'; | fname[0] = '\0'; |
| Line 146 const UINT8 *p; | Line 181 const UINT8 *p; |
| loading = fontv98_read(file_getcd(v98fontname), loading); | loading = fontv98_read(file_getcd(v98fontname), loading); |
| loading = fontpc88_read(file_getcd(pc88ankname), loading); | loading = fontpc88_read(file_getcd(pc88ankname), loading); |
| if (loading & FONTLOAD_16) { | 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) { | if (file_attr(fname) == -1) { |
| makepc98bmp(fname); | makepc98bmp(fname); |
| } | } |
| Line 154 const UINT8 *p; | Line 189 const UINT8 *p; |
| } | } |
| return(type); | return(type); |
| } | } |