update platform code to suit recent PCSX related changes
[libpicofe.git] / common / menu_pico.c
index caf2be1..abc5845 100644 (file)
@@ -1,4 +1,7 @@
+#include <string.h>
+
 #include "emu.h"
+#include "menu_pico.h"
 
 #include <version.h>
 #include <revision.h>
@@ -6,6 +9,22 @@
 #include <pico/pico.h>
 #include <pico/patch.h>
 
+// rrrr rggg gggb bbbb
+static unsigned short fname2color(const char *fname)
+{
+       const char *ext = fname + strlen(fname) - 3;
+       static const char *rom_exts[]   = { "zip", "bin", "smd", "gen", "iso", "cso", "cue" };
+       static const char *other_exts[] = { "gmv", "pat" };
+       int i;
+
+       if (ext < fname) ext = fname;
+       for (i = 0; i < array_size(rom_exts); i++)
+               if (strcasecmp(ext, rom_exts[i]) == 0) return 0xbdff; // FIXME: mk defines
+       for (i = 0; i < array_size(other_exts); i++)
+               if (strcasecmp(ext, other_exts[i]) == 0) return 0xaff5;
+       return 0xffff;
+}
+
 #include "menu.c"
 
 /* platform specific options and handlers */
 #define menu_main_plat_draw NULL
 #endif
 
+static void menu_enter(int is_rom_loaded)
+{
+       if (is_rom_loaded)
+       {
+               // darken the active framebuffer
+               menu_darken_bg(g_menubg_ptr, g_menubg_src_ptr, g_menuscreen_w * g_menuscreen_h, 1);
+       }
+       else
+       {
+               char buff[256];
+
+               // should really only happen once, on startup..
+               emu_make_path(buff, "skin/background.png", sizeof(buff));
+               if (readpng(g_menubg_ptr, buff, READPNG_BG, g_menuscreen_w, g_menuscreen_h) < 0)
+                       memset(g_menubg_ptr, 0, g_menuscreen_w * g_menuscreen_h * 2);
+       }
+
+       plat_video_menu_enter(is_rom_loaded);
+}
+
 static void draw_savestate_bg(int slot)
 {
        const char *fname;
@@ -363,8 +402,8 @@ static const char *mgn_opt_sh2cycles(int id, int *offs)
 static const char h_32x_enable[] = "Enable emulation of the 32X addon";
 static const char h_pwm[]        = "Disabling may improve performance, but break sound";
 static const char h_sh2cycles[]  = "Cycles/millisecond (similar to DOSBox)\n"
-       "lower values speed up emulation but break games\n"
-       "at least 11000 recommended for compatibility";
+                                  "lower values speed up emulation but break games\n"
+                                  "at least 11000 recommended for compatibility";
 
 static menu_entry e_menu_32x_options[] =
 {
@@ -792,6 +831,26 @@ static void debug_menu_loop(void)
 
 // ------------ main menu ------------
 
+static const char credits[] =
+       "PicoDrive v" VERSION " (c) notaz, 2006-2011\n\n\n"
+       "Credits:\n"
+       "fDave: Cyclone 68000 core,\n"
+       "      base code of PicoDrive\n"
+       "Reesy & FluBBa: DrZ80 core\n"
+       "MAME devs: YM2612 and SN76496 cores\n"
+       "Inder, ketchupgun: graphics\n"
+#ifdef __GP2X__
+       "rlyeh and others: minimal SDK\n"
+       "Squidge: mmuhack\n"
+       "Dzz: ARM940 sample\n"
+#endif
+       "\n"
+       "special thanks (for docs, ideas):\n"
+       " Charles MacDonald, Haze,\n"
+       " Stephane Dallongeville,\n"
+       " Lordus, Exophase, Rokas,\n"
+       " Nemesis, Tasco Deluxe";
+
 static char *romsel_run(void)
 {
        char *ret, *sel_name;
@@ -839,7 +898,7 @@ static int main_menu_handler(int id, int keys)
                }
                break;
        case MA_MAIN_CREDITS:
-               draw_menu_credits();
+               draw_menu_message(credits, NULL);
                in_menu_wait(PBTN_MOK|PBTN_MBACK, 70);
                break;
        case MA_MAIN_EXIT: