For cases like notaz/pcsx_rearmed#385
Make it possible to adjust to fit user's display, there is not much saving
from having it hardcoded. PicoDrive will need to update its pandora and
ps2 posts, otherwise it uses 1x anyway so should mostly not be affected.
#include <stdarg.h>\r
#include <time.h>\r
#include <locale.h> // savestate date\r
#include <stdarg.h>\r
#include <time.h>\r
#include <locale.h> // savestate date\r
\r
#include "menu.h"\r
#include "fonts.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
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
\r
static int g_menu_filter_off;\r
static int g_border_style;\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
{\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
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
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
// 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
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
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
\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
// 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
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
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
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 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(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);
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);