frontend: add BIOS warning
authornotaz <notasas@gmail.com>
Tue, 1 Mar 2011 15:20:01 +0000 (17:20 +0200)
committernotaz <notasas@gmail.com>
Tue, 1 Mar 2011 15:35:19 +0000 (17:35 +0200)
this will hopefully reduce forum load

frontend/common/menu.c
frontend/common/plat.h
frontend/menu.c

index 31522f7..b05c755 100644 (file)
@@ -640,13 +640,12 @@ static void me_loop(menu_entry *menu, int *menu_sel, void (*draw_more)(void))
 \r
 /* ***************************************** */\r
 \r
-static void draw_menu_credits(void (*draw_more)(void))\r
+static void draw_menu_message(const char *msg, void (*draw_more)(void))\r
 {\r
-       const char *creds, *p;\r
        int x, y, h, w, wt;\r
+       const char *p;\r
 \r
-       p = creds = plat_get_credits();\r
-\r
+       p = msg;\r
        for (h = 1, w = 0; *p != 0; h++) {\r
                for (wt = 0; *p != 0 && *p != '\n'; p++)\r
                        wt++;\r
@@ -665,7 +664,7 @@ static void draw_menu_credits(void (*draw_more)(void))
 \r
        menu_draw_begin(1);\r
 \r
-       for (p = creds; *p != 0 && y <= g_menuscreen_h - me_mfont_h; y += me_mfont_h) {\r
+       for (p = msg; *p != 0 && y <= g_menuscreen_h - me_mfont_h; y += me_mfont_h) {\r
                text_out16(x, y, p);\r
 \r
                for (; *p != 0 && *p != '\n'; p++)\r
index 0357040..0a9fc0b 100644 (file)
@@ -50,7 +50,6 @@ unsigned int plat_get_ticks_ms(void);
 unsigned int plat_get_ticks_us(void);
 void plat_wait_till_us(unsigned int us);
 
-const char  *plat_get_credits(void);
 void plat_debug_cat(char *str);
 
 #ifdef __cplusplus
index 8eb6c04..a7aa8b2 100644 (file)
@@ -67,7 +67,7 @@ static int last_psx_w, last_psx_h, last_psx_bpp;
 static int scaling, filter, cpu_clock, cpu_clock_st;
 static char rom_fname_reload[MAXPATHLEN];
 static char last_selected_fname[MAXPATHLEN];
-static int region, in_type_sel;
+static int warned_about_bios, region, in_type_sel;
 int g_opts;
 
 // from softgpu plugin
@@ -224,6 +224,7 @@ static const struct {
        CE_INTVAL_V(iUseInterpolation, 2),
        CE_INTVAL_V(iSPUIRQWait, 2),
        CE_INTVAL(iUseTimer),
+       CE_INTVAL(warned_about_bios),
 };
 
 static char *get_cd_label(void)
@@ -1055,9 +1056,9 @@ static int menu_loop_plugin_spu(int id, int keys)
        return 0;
 }
 
-static const char h_bios[]       = "HLE is simulated BIOS. BIOS is saved in savestates.\n"
-                                  "Must save config and reload the game\n"
-                                  "for change to take effect";
+static const char h_bios[]       = "HLE is simulated BIOS. BIOS selection is saved in savestates\n"
+                                  "and can't be changed there. Must save config and reload\n"
+                                  "the game for change to take effect";
 static const char h_plugin_xpu[] = "Must save config and reload the game\n"
                                   "for plugin change to take effect";
 static const char h_gpu[]        = "Configure built-in P.E.Op.S. SoftGL Driver V1.17";
@@ -1199,6 +1200,34 @@ static void debug_menu_loop(void)
 
 // ------------ main menu ------------
 
+static void menu_bios_warn(void)
+{
+       int inp;
+       static const char msg[] =
+               "You don't seem to have copied any BIOS files to\n"
+               "<SD card>/pandora/appdata/pcsx_rearmed/bios/\n\n"
+               "While many games work fine with fake (HLE) BIOS,\n"
+               "others (like MGS and FF8) require BIOS to work.\n"
+               "After copying the file, you'll also need to\n"
+               "select it in the emu's options->[BIOS/Plugins]\n\n"
+               "The file is usually named SCPH1001.BIN, but\n"
+               "other not compressed files can be used too.\n\n"
+               "Press (B) or (X) to continue";
+
+       while (1)
+       {
+               menu_draw_begin(1);
+               draw_menu_message(msg, NULL);
+               menu_draw_end();
+
+               inp = in_menu_wait(PBTN_MOK|PBTN_MBACK, 70);
+               if (inp & (PBTN_MBACK|PBTN_MOK))
+                       return;
+       }
+}
+
+// ------------ main menu ------------
+
 void OnFile_Exit();
 
 static void draw_frame_main(void)
@@ -1217,20 +1246,18 @@ static void draw_frame_credits(void)
        smalltext_out16(4, 1, "build: "__DATE__ " " __TIME__ " " REV, 0xe7fc);
 }
 
-const char *plat_get_credits(void)
-{
-       return  "PCSX-ReARMed\n\n"
-               "(C) 1999-2003 PCSX Team\n"
-               "(C) 2005-2009 PCSX-df Team\n"
-               "(C) 2009-2011 PCSX-Reloaded Team\n\n"
-               "GPU and SPU code by Pete Bernert\n"
-               "  and the P.E.Op.S. team\n"
-               "ARM recompiler (C) 2009-2011 Ari64\n"
-               "PCSX4ALL plugins by PCSX4ALL team\n"
-               "  Chui, Franxis, Unai\n\n"
-               "integration, optimization and\n"
-               "  frontend (C) 2010-2011 notaz\n";
-}
+static const char credits_text[] = 
+       "PCSX-ReARMed\n\n"
+       "(C) 1999-2003 PCSX Team\n"
+       "(C) 2005-2009 PCSX-df Team\n"
+       "(C) 2009-2011 PCSX-Reloaded Team\n\n"
+       "GPU and SPU code by Pete Bernert\n"
+       "  and the P.E.Op.S. team\n"
+       "ARM recompiler (C) 2009-2011 Ari64\n"
+       "PCSX4ALL plugins by PCSX4ALL team\n"
+       "  Chui, Franxis, Unai\n\n"
+       "integration, optimization and\n"
+       "  frontend (C) 2010-2011 notaz\n";
 
 static int reset_game(void)
 {
@@ -1405,7 +1432,7 @@ static int main_menu_handler(int id, int keys)
                        return 1;
                break;
        case MA_MAIN_CREDITS:
-               draw_menu_credits(draw_frame_credits);
+               draw_menu_message(credits_text, draw_frame_credits);
                in_menu_wait(PBTN_MOK|PBTN_MBACK, 70);
                break;
        case MA_MAIN_EXIT:
@@ -1447,6 +1474,11 @@ void menu_loop(void)
 
        menu_leave_emu();
 
+       if (bioses[1] == NULL && !warned_about_bios) {
+               menu_bios_warn();
+               warned_about_bios = 1;
+       }
+
        me_enable(e_menu_main, MA_MAIN_RESUME_GAME, ready_to_go);
        me_enable(e_menu_main, MA_MAIN_SAVE_STATE,  ready_to_go && CdromId[0]);
        me_enable(e_menu_main, MA_MAIN_LOAD_STATE,  ready_to_go && CdromId[0]);