bugfixes, new config system and messed code for it
[libpicofe.git] / common / menu.c
index b6bd019..359517a 100644 (file)
 \r
 char menuErrorMsg[64] = { 0, };\r
 \r
+// PicoPad[] format: MXYZ SACB RLDU\r
+me_bind_action me_ctrl_actions[12] =\r
+{\r
+       { "UP     ", 0x001 },\r
+       { "DOWN   ", 0x002 },\r
+       { "LEFT   ", 0x004 },\r
+       { "RIGHT  ", 0x008 },\r
+       { "A      ", 0x040 },\r
+       { "B      ", 0x010 },\r
+       { "C      ", 0x020 },\r
+       { "START  ", 0x080 },\r
+       { "MODE   ", 0x800 },\r
+       { "X      ", 0x400 },\r
+       { "Y      ", 0x200 },\r
+       { "Z      ", 0x100 }\r
+};\r
+\r
+\r
 static unsigned char menu_font_data[10240];\r
 static int menu_text_color = 0xffff; // default to white\r
 static int menu_sel_color = -1; // disabled\r
@@ -164,7 +182,12 @@ static int parse_hex_color(char *buff)
 {\r
        char *endp = buff;\r
        int t = (int) strtoul(buff, &endp, 16);\r
-       if (endp != buff) return ((t>>8)&0xf800) | ((t>>5)&0x07e0) | ((t>>3)&0x1f);\r
+       if (endp != buff)\r
+#ifdef PSP\r
+               return ((t<<8)&0xf800) | ((t>>5)&0x07e0) | ((t>>19)&0x1f);\r
+#else\r
+               return ((t>>8)&0xf800) | ((t>>5)&0x07e0) | ((t>>3)&0x1f);\r
+#endif\r
        return -1;\r
 }\r
 \r
@@ -220,7 +243,6 @@ void menu_init(void)
                                int tmp = parse_hex_color(buff+16);\r
                                if (tmp >= 0) menu_sel_color = tmp;\r
                                else lprintf("skin.txt: parse error for selection_color\n");\r
-                               lprintf("sel color: %04x\n", menu_sel_color);\r
                        }\r
                        else\r
                                lprintf("skin.txt: parse error: %s\n", buff);\r
@@ -318,5 +340,25 @@ int me_process(menu_entry *entries, int count, menu_id id, int is_next)
        }\r
 }\r
 \r
-\r
+const char *me_region_name(unsigned int code, int auto_order)\r
+{\r
+       static const char *names[] = { "Auto", "      Japan NTSC", "      Japan PAL", "      USA", "      Europe" };\r
+       static const char *names_short[] = { "", " JP", " JP", " US", " EU" };\r
+       int u, i = 0;\r
+       if (code) {\r
+               code <<= 1;\r
+               while((code >>= 1)) i++;\r
+               if (i > 4) return "unknown";\r
+               return names[i];\r
+       } else {\r
+               static char name[24];\r
+               strcpy(name, "Auto:");\r
+               for (u = 0; u < 3; u++) {\r
+                       i = 0; code = ((auto_order >> u*4) & 0xf) << 1;\r
+                       while((code >>= 1)) i++;\r
+                       strcat(name, names_short[i]);\r
+               }\r
+               return name;\r
+       }\r
+}\r
 \r