fix gp2x build and some obvious menu glitches
authornotaz <notasas@gmail.com>
Sun, 15 Mar 2009 21:02:40 +0000 (21:02 +0000)
committernotaz <notasas@gmail.com>
Sun, 15 Mar 2009 21:02:40 +0000 (21:02 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@665 be3aeb3a-fb24-0410-a615-afba39da0efa

platform/common/menu.c
platform/gp2x/Makefile
platform/gp2x/gp2x.c
platform/gp2x/port_config.h
platform/pandora/port_config.h

index 2f29e87..c2e18fa 100644 (file)
@@ -176,7 +176,7 @@ static void menu_draw_selection(int x, int y, int w)
        for (h = me_mfont_h + 1; h > 0; h--)\r
        {\r
                dst = dest;\r
-               for (i = w; i > 0; i--)\r
+               for (i = w - 14; i > 0; i--)\r
                        *dst++ = menu_sel_color;\r
                dest += g_screen_width;\r
        }\r
@@ -472,7 +472,7 @@ static void me_loop(menu_entry *menu, int *menu_sel)
                return;\r
        }\r
 \r
-       while (!menu[sel].enabled && sel < menu_sel_max)\r
+       while ((!menu[sel].enabled || !menu[sel].selectable) && sel < menu_sel_max)\r
                sel++;\r
 \r
        /* make sure action buttons are not pressed on entering menu */\r
@@ -604,16 +604,16 @@ void menu_romload_prepare(const char *rom_name)
 {\r
        const char *p = rom_name + strlen(rom_name);\r
 \r
-       plat_video_menu_begin();\r
-\r
        while (p > rom_name && *p != '/')\r
                p--;\r
 \r
        /* fill both buffers, callbacks won't update in full */\r
+       plat_video_menu_begin();\r
        smalltext_out16(1, 1, "Loading", 0xffff);\r
        smalltext_out16(1, 10, p, 0xffff);\r
        plat_video_menu_end();\r
 \r
+       plat_video_menu_begin();\r
        smalltext_out16(1, 1, "Loading", 0xffff);\r
        smalltext_out16(1, 10, p, 0xffff);\r
        plat_video_menu_end();\r
@@ -977,7 +977,7 @@ static void draw_savestate_menu(int menu_sel, int is_loading)
        text_out16(x, y, is_loading ? "Load state" : "Save state");\r
        y += 3 * me_mfont_h;\r
 \r
-       menu_draw_selection(x - me_mfont_w * 2, y + menu_sel * me_mfont_h, 13 * me_mfont_w + 4);\r
+       menu_draw_selection(x - me_mfont_w * 2, y + menu_sel * me_mfont_h, (13 + 2) * me_mfont_w + 4);\r
 \r
        /* draw all 10 slots */\r
        for (i = 0; i < 10; i++, y += me_mfont_h)\r
@@ -1091,10 +1091,11 @@ static int count_bound_keys(int dev_id, int action_mask, int player_idx)
 static void draw_key_config(const me_bind_action *opts, int opt_cnt, int player_idx,\r
                int sel, int dev_id, int dev_count, int is_bind)\r
 {\r
-       int x, y, w, i;\r
        const char *dev_name;\r
+       int x, y, w, i;\r
 \r
-       x = g_screen_width / 2 - 20 * me_mfont_w / 2;\r
+       w = ((player_idx >= 0) ? 20 : 30) * me_mfont_w;\r
+       x = g_screen_width / 2 - w / 2;\r
        y = (g_screen_height - 4 * me_mfont_h) / 2 - (2 + opt_cnt) * me_mfont_h / 2;\r
        if (x < me_mfont_w * 2)\r
                x = me_mfont_w * 2;\r
@@ -1106,7 +1107,7 @@ static void draw_key_config(const me_bind_action *opts, int opt_cnt, int player_
                text_out16(x, y, "Emulator controls");\r
 \r
        y += 2 * me_mfont_h;\r
-       menu_draw_selection(x - me_mfont_w * 2, y + sel * me_mfont_h, me_mfont_w); // FIXME last arg\r
+       menu_draw_selection(x - me_mfont_w * 2, y + sel * me_mfont_h, w + 2 * me_mfont_w);\r
 \r
        for (i = 0; i < opt_cnt; i++, y += me_mfont_h)\r
                text_out16(x, y, "%s : %s", opts[i].name,\r
@@ -1885,6 +1886,10 @@ static int main_menu_handler(menu_id id, int keys)
 \r
 static menu_entry e_menu_main[] =\r
 {\r
+       mee_label     ("PicoDrive " VERSION),\r
+       mee_label     (""),\r
+       mee_label     (""),\r
+       mee_label     (""),\r
        mee_handler_id("Resume game",        MA_MAIN_RESUME_GAME, main_menu_handler),\r
        mee_handler_id("Save State",         MA_MAIN_SAVE_STATE,  main_menu_handler),\r
        mee_handler_id("Load State",         MA_MAIN_LOAD_STATE,  main_menu_handler),\r
@@ -1911,13 +1916,15 @@ void menu_loop(void)
        plat_video_menu_enter(rom_loaded);\r
        in_set_blocking(1);\r
        me_loop(e_menu_main, &sel);\r
-       in_set_blocking(0);\r
 \r
-       if (rom_loaded && engineState == PGS_Menu) {\r
+       if (rom_loaded) {\r
+               if (engineState == PGS_Menu)\r
+                       engineState = PGS_Running;\r
                /* wait until menu, ok, back is released */\r
                while (in_menu_wait_any(50) & (PBTN_MENU|PBTN_MOK|PBTN_MBACK));\r
-               engineState = PGS_Running;\r
        }\r
+\r
+       in_set_blocking(0);\r
 }\r
 \r
 // --------- CD tray close menu ----------\r
@@ -1967,7 +1974,6 @@ int menu_loop_tray(void)
 \r
        in_set_blocking(1);\r
        me_loop(e_menu_tray, &sel);\r
-       in_set_blocking(0);\r
 \r
        if (engineState != PGS_RestartRun) {\r
                engineState = PGS_RestartRun;\r
@@ -1975,6 +1981,7 @@ int menu_loop_tray(void)
        }\r
 \r
        while (in_menu_wait_any(50) & (PBTN_MENU|PBTN_MOK|PBTN_MBACK));\r
+       in_set_blocking(0);\r
 \r
        return ret;\r
 }\r
index 625e679..ea86f6b 100644 (file)
@@ -54,14 +54,15 @@ LD = $(CROSS)ld
 OBJCOPY = $(CROSS)objcopy\r
 \r
 # frontend\r
-OBJS += main.o gp2x.o emu.o in_gp2x.o squidgehack.o cpuctrl.o\r
+# TODO: clean cpuctrl\r
+OBJS += main.o gp2x.o emu.o in_gp2x.o plat.o squidgehack.o cpuctrl.o\r
 # 940 core control\r
 OBJS += 940ctl.o\r
 \r
 # common\r
 OBJS += platform/common/emu.o platform/common/menu.o platform/common/fonts.o platform/common/config.o \\r
        platform/common/arm_utils.o platform/common/arm_linux.o platform/common/readpng.o \\r
-       platform/common/mp3_helix.o platform/common/input.o platform/linux/usbjoy.o \\r
+       platform/common/mp3_helix.o platform/common/input.o \\r
        platform/linux/sndout_oss.o platform/linux/plat.o\r
 \r
 # Pico\r
index e0aa296..e433524 100644 (file)
@@ -35,6 +35,7 @@
 #include "../linux/sndout_oss.h"\r
 #include "../common/arm_utils.h"\r
 #include "../common/arm_linux.h"\r
+#include "../common/emu.h"\r
 \r
 volatile unsigned short *gp2x_memregs;\r
 //static\r
@@ -196,7 +197,6 @@ void gp2x_pd_clone_buffer2(void)
 \r
 unsigned long gp2x_joystick_read(int unused)\r
 {\r
-       int i;\r
        unsigned long value=(gp2x_memregs[0x1198>>1] & 0x00FF); // GPIO M\r
        if(value==0xFD) value=0xFA;\r
        if(value==0xF7) value=0xEB;\r
index 94b7bfe..932b7e5 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef PORT_CONFIG_H\r
 #define PORT_CONFIG_H\r
 \r
+#include "version.h"\r
+\r
 #define CASE_SENSITIVE_FS 1 // CS filesystem\r
 #define DONT_OPEN_MANY_FILES 0\r
 #define REDUCE_IO_CALLS 0\r
index 02bc39c..3d047dc 100644 (file)
@@ -3,6 +3,8 @@
 #ifndef PORT_CONFIG_H\r
 #define PORT_CONFIG_H\r
 \r
+#include "../gp2x/version.h" /* FIXME */\r
+\r
 #define CASE_SENSITIVE_FS 1 // CS filesystem\r
 #define DONT_OPEN_MANY_FILES 0\r
 #define REDUCE_IO_CALLS 0\r