asyn-only dev support + in_gp2x driver
[libpicofe.git] / common / menu.c
index 7a97fc3..c3ef87f 100644 (file)
@@ -13,6 +13,7 @@
 #include "readpng.h"\r
 #include "lprintf.h"\r
 #include "common.h"\r
+#include "input.h"\r
 #include "emu.h"\r
 \r
 \r
@@ -39,6 +40,8 @@ me_bind_action me_ctrl_actions[15] =
 };\r
 \r
 \r
+#ifndef UIQ3\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
@@ -331,38 +334,30 @@ int me_process(menu_entry *entries, int count, menu_id id, int is_next)
        }\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
 // ------------ debug menu ------------\r
 \r
 #include <sys/stat.h>\r
 #include <sys/types.h>\r
 \r
-#include <Pico/Pico.h>\r
-#include <Pico/Debug.h>\r
+#include <pico/pico.h>\r
+#include <pico/debug.h>\r
 \r
 void SekStepM68k(void);\r
 \r
+static void mplayer_loop(void)\r
+{\r
+       emu_startSound();\r
+\r
+       while (1)\r
+       {\r
+               PDebugZ80Frame();\r
+               if (in_menu_wait_any(0) & PBTN_NORTH) break;\r
+               emu_waitSound();\r
+       }\r
+\r
+       emu_endSound();\r
+}\r
+\r
 static void draw_text_debug(const char *str, int skip, int from)\r
 {\r
        const char *p;\r
@@ -405,13 +400,16 @@ void debug_menu_loop(void)
 {\r
        int inp, mode = 0;\r
        int spr_offs = 0, dumped = 0;\r
+       char *tmp;\r
 \r
        while (1)\r
        {\r
                switch (mode)\r
                {\r
                        case 0: menu_draw_begin();\r
-                               draw_text_debug(PDebugMain(), 0, 0);\r
+                               tmp = PDebugMain();\r
+                               emu_platformDebugCat(tmp);\r
+                               draw_text_debug(tmp, 0, 0);\r
                                if (dumped) {\r
                                        smalltext_out16(SCREEN_WIDTH-6*10, SCREEN_HEIGHT-8, "dumped", 0xffff);\r
                                        dumped = 0;\r
@@ -421,7 +419,8 @@ void debug_menu_loop(void)
                        case 2: clear_screen();\r
                                emu_forcedFrame(0);\r
                                darken_screen();\r
-                               PDebugShowSpriteStats(SCREEN_BUFFER, SCREEN_WIDTH); break;\r
+                               PDebugShowSpriteStats((unsigned short *)SCREEN_BUFFER + (SCREEN_HEIGHT/2 - 240/2)*SCREEN_WIDTH +\r
+                                       SCREEN_WIDTH/2 - 320/2, SCREEN_WIDTH); break;\r
                        case 3: clear_screen();\r
                                PDebugShowPalette(SCREEN_BUFFER, SCREEN_WIDTH);\r
                                PDebugShowSprite((unsigned short *)SCREEN_BUFFER + SCREEN_WIDTH*120+SCREEN_WIDTH/2+16,\r
@@ -431,41 +430,71 @@ void debug_menu_loop(void)
                }\r
                menu_draw_end();\r
 \r
-               inp = read_buttons(BTN_EAST|BTN_SOUTH|BTN_WEST|BTN_L|BTN_R|BTN_UP|BTN_DOWN|BTN_LEFT|BTN_RIGHT);\r
-               if (inp & BTN_SOUTH) return;\r
-               if (inp & BTN_L) { mode--; if (mode < 0) mode = 3; }\r
-               if (inp & BTN_R) { mode++; if (mode > 3) mode = 0; }\r
+               inp = in_menu_wait(PBTN_EAST|PBTN_MBACK|PBTN_WEST|PBTN_NORTH|PBTN_L|PBTN_R|PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT);\r
+               if (inp & PBTN_MBACK) return;\r
+               if (inp & PBTN_L) { mode--; if (mode < 0) mode = 3; }\r
+               if (inp & PBTN_R) { mode++; if (mode > 3) mode = 0; }\r
                switch (mode)\r
                {\r
                        case 0:\r
-                               if (inp & BTN_EAST) SekStepM68k();\r
-                               if ((inp & (BTN_WEST|BTN_LEFT)) == (BTN_WEST|BTN_LEFT)) {\r
+                               if (inp & PBTN_EAST) SekStepM68k();\r
+                               if (inp & PBTN_NORTH) {\r
+                                       while (inp & PBTN_NORTH) inp = in_menu_wait_any(-1);\r
+                                       mplayer_loop();\r
+                               }\r
+                               if ((inp & (PBTN_WEST|PBTN_LEFT)) == (PBTN_WEST|PBTN_LEFT)) {\r
                                        mkdir("dumps", 0777);\r
                                        PDebugDumpMem();\r
-                                       while (inp & BTN_WEST) inp = read_buttons_async(BTN_WEST);\r
+                                       while (inp & PBTN_WEST) inp = in_menu_wait_any(-1);\r
                                        dumped = 1;\r
                                }\r
                                break;\r
                        case 1:\r
-                               if (inp & BTN_LEFT)  PicoDrawMask ^= PDRAW_LAYERB_ON;\r
-                               if (inp & BTN_RIGHT) PicoDrawMask ^= PDRAW_LAYERA_ON;\r
-                               if (inp & BTN_DOWN)  PicoDrawMask ^= PDRAW_SPRITES_LOW_ON;\r
-                               if (inp & BTN_UP)    PicoDrawMask ^= PDRAW_SPRITES_HI_ON;\r
-                               if (inp & BTN_EAST) {\r
+                               if (inp & PBTN_LEFT)  PicoDrawMask ^= PDRAW_LAYERB_ON;\r
+                               if (inp & PBTN_RIGHT) PicoDrawMask ^= PDRAW_LAYERA_ON;\r
+                               if (inp & PBTN_DOWN)  PicoDrawMask ^= PDRAW_SPRITES_LOW_ON;\r
+                               if (inp & PBTN_UP)    PicoDrawMask ^= PDRAW_SPRITES_HI_ON;\r
+                               if (inp & PBTN_EAST) {\r
                                        PsndOut = NULL; // just in case\r
                                        PicoSkipFrame = 1;\r
                                        PicoFrame();\r
                                        PicoSkipFrame = 0;\r
-                                       while (inp & BTN_EAST) inp = read_buttons_async(BTN_EAST);\r
+                                       while (inp & PBTN_EAST) inp = in_menu_wait_any(-1);\r
                                }\r
                                break;\r
                        case 3:\r
-                               if (inp & BTN_DOWN)  spr_offs++;\r
-                               if (inp & BTN_UP)    spr_offs--;\r
+                               if (inp & PBTN_DOWN)  spr_offs++;\r
+                               if (inp & PBTN_UP)    spr_offs--;\r
                                if (spr_offs < 0) spr_offs = 0;\r
                                break;\r
                }\r
        }\r
 }\r
 \r
+#endif // !UIQ3\r
+\r
+// ------------ util ------------\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
 \r