#include <stdarg.h>\r
#include <time.h>\r
#include <locale.h> // savestate date\r
+#include <assert.h>\r
\r
#include "menu.h"\r
#include "fonts.h"\r
static int menu_text_color = 0xfffe; // default to white\r
static int menu_sel_color = -1; // disabled\r
\r
-/* note: these might become non-constant in future */\r
-#if MENU_X2\r
-const int me_mfont_w = 16, me_mfont_h = 20;\r
-const int me_sfont_w = 12, me_sfont_h = 20;\r
-#else\r
-const int me_mfont_w = 8, me_mfont_h = 10;\r
-const int me_sfont_w = 6, me_sfont_h = 10;\r
-#endif\r
+int me_mfont_w = 8, me_mfont_h = 10;\r
+int me_sfont_w = 6, me_sfont_h = 10;\r
\r
static int g_menu_filter_off;\r
static int g_border_style;\r
return c;\r
}\r
\r
-void menu_init_base(void)\r
+void menu_init_base_scale(unsigned int scale)\r
{\r
int i, c, l, pos;\r
unsigned char *fd, *fds;\r
char buff[256];\r
FILE *f;\r
\r
+ if (scale != 1 && scale != 2) {\r
+ assert(0); // not supported\r
+ return;\r
+ }\r
if (menu_font_data != NULL)\r
free(menu_font_data);\r
\r
- menu_font_data = calloc((MENU_X2 ? 256 * 320 : 128 * 160) / 2, 1);\r
+ menu_font_data = calloc(128 * scale * 160 * scale / 2, 1);\r
if (menu_font_data == NULL)\r
return;\r
\r
+ me_mfont_w = 8 * scale; me_mfont_h = 10 * scale;\r
+ me_sfont_w = 6 * scale, me_sfont_h = 10 * scale;\r
+\r
// generate default 8x10 font from fontdata8x8\r
for (c = 0, fd = menu_font_data; c < 128; c++)\r
{\r
fd += 8*2/2; // 2 empty lines\r
}\r
\r
- if (MENU_X2) {\r
- // expand default font\r
+ if (scale > 1) {\r
+ // expand the default font\r
fds = menu_font_data + 128 * 160 / 2 - 4;\r
fd = menu_font_data + 256 * 320 / 2 - 1;\r
for (c = 255; c >= 0; c--)\r
\r
// load custom font and selector (stored as 1st symbol in font table)\r
pos = plat_get_skin_dir(buff, sizeof(buff));\r
- strcpy(buff + pos, "font.png");\r
- readpng(menu_font_data, buff, READPNG_FONT,\r
- MENU_X2 ? 256 : 128, MENU_X2 ? 320 : 160);\r
+ if (scale > 1)\r
+ snprintf(buff + pos, sizeof(buff) - pos, "fontx%d.png", scale);\r
+ else\r
+ snprintf(buff + pos, sizeof(buff) - pos, "font.png");\r
+ readpng(menu_font_data, buff, READPNG_FONT, 128 * scale, 160 * scale);\r
// default selector symbol is '>'\r
memcpy(menu_font_data, menu_font_data + ((int)'>') * me_mfont_w * me_mfont_h / 2,\r
me_mfont_w * me_mfont_h / 2);\r
- strcpy(buff + pos, "selector.png");\r
+ if (scale > 1)\r
+ snprintf(buff + pos, sizeof(buff) - pos, "selectorx%d.png", scale);\r
+ else\r
+ snprintf(buff + pos, sizeof(buff) - pos, "selector.png");\r
readpng(menu_font_data, buff, READPNG_SELECTOR, me_mfont_w, me_mfont_h);\r
\r
// load custom colors\r
setlocale(LC_TIME, "");\r
}\r
\r
+void menu_init_base(void)\r
+{\r
+ menu_init_base_scale(1);\r
+}\r
+\r
static void menu_darken_bg(void *dst, void *src, int pixels, int darker)\r
{\r
unsigned int *dest = dst;\r
extern int g_autostateld_opt;
-extern const int me_mfont_w, me_mfont_h;
-extern const int me_sfont_w, me_sfont_h;
+extern int me_mfont_w, me_mfont_h;
+extern int me_sfont_w, me_sfont_h;
void menu_init_base(void);
+void menu_init_base_scale(unsigned int scale);
void menu_update_msg(const char *msg);
void text_out16(int x, int y, const char *texto, ...);
void smalltext_out16(int x, int y, const char *texto, int color);