random fixes (root path and mmap svp tcache)
[libpicofe.git] / common / menu.c
index 32bf12f..7bf133c 100644 (file)
@@ -262,14 +262,17 @@ void menu_init(void)
        }\r
 \r
        // load custom font and selector (stored as 1st symbol in font table)\r
-       readpng(menu_font_data, "skin/font.png", READPNG_FONT);\r
+       emu_make_path(buff, "skin/font.png", sizeof(buff));\r
+       readpng(menu_font_data, buff, READPNG_FONT);\r
        // default selector symbol is '>'\r
        memcpy(menu_font_data, menu_font_data + ((int)'>') * me_mfont_w * me_mfont_h / 2,\r
                me_mfont_w * me_mfont_h / 2);\r
-       readpng(menu_font_data, "skin/selector.png", READPNG_SELECTOR);\r
+       emu_make_path(buff, "skin/selector.png", sizeof(buff));\r
+       readpng(menu_font_data, buff, READPNG_SELECTOR);\r
 \r
        // load custom colors\r
-       f = fopen("skin/skin.txt", "r");\r
+       emu_make_path(buff, "skin/skin.txt", sizeof(buff));\r
+       f = fopen(buff, "r");\r
        if (f != NULL)\r
        {\r
                lprintf("found skin.txt\n");\r
@@ -328,7 +331,7 @@ static void me_draw(const menu_entry *entries, int sel)
 {\r
        const menu_entry *ent;\r
        int x, y, w = 0, h = 0;\r
-       int offs, opt_offs = 27 * me_mfont_w;\r
+       int offs, col2_offs = 27 * me_mfont_w;\r
        const char *name;\r
        int asel = 0;\r
        int i, n;\r
@@ -353,9 +356,9 @@ static void me_draw(const menu_entry *entries, int sel)
 \r
                if (ent->beh != MB_NONE)\r
                {\r
-                       if (wt > opt_offs)\r
-                               opt_offs = wt + me_mfont_w;\r
-                       wt = opt_offs;\r
+                       if (wt > col2_offs)\r
+                               col2_offs = wt + me_mfont_w;\r
+                       wt = col2_offs;\r
 \r
                        switch (ent->beh) {\r
                        case MB_NONE: break;\r
@@ -415,10 +418,10 @@ static void me_draw(const menu_entry *entries, int sel)
                case MB_NONE:\r
                        break;\r
                case MB_OPT_ONOFF:\r
-                       text_out16(x + opt_offs, y, (*(int *)ent->var & ent->mask) ? "ON" : "OFF");\r
+                       text_out16(x + col2_offs, y, (*(int *)ent->var & ent->mask) ? "ON" : "OFF");\r
                        break;\r
                case MB_OPT_RANGE:\r
-                       text_out16(x + opt_offs, y, "%i", *(int *)ent->var);\r
+                       text_out16(x + col2_offs, y, "%i", *(int *)ent->var);\r
                        break;\r
                case MB_OPT_CUSTOM:\r
                case MB_OPT_CUSTONOFF:\r
@@ -428,7 +431,7 @@ static void me_draw(const menu_entry *entries, int sel)
                        if (ent->generate_name)\r
                                name = ent->generate_name(ent->id, &offs);\r
                        if (name != NULL)\r
-                               text_out16(x + opt_offs + offs * me_mfont_w, y, "%s", name);\r
+                               text_out16(x + col2_offs + offs * me_mfont_w, y, "%s", name);\r
                        break;\r
                }\r
 \r
@@ -949,7 +952,7 @@ static void state_check_slots(void)
        state_slot_flags = 0;\r
 \r
        for (slot = 0; slot < 10; slot++) {\r
-               if (emu_checkSaveFile(slot))\r
+               if (emu_check_save_file(slot))\r
                        state_slot_flags |= 1 << slot;\r
        }\r
 }\r
@@ -962,7 +965,7 @@ static void draw_savestate_bg(int slot)
        void *tmp_vram, *file;\r
        char *fname;\r
 \r
-       fname = emu_GetSaveFName(1, 0, slot);\r
+       fname = emu_get_save_fname(1, 0, slot);\r
        if (!fname) return;\r
 \r
        tmp_vram = malloc(sizeof(Pico.vram));\r
@@ -997,7 +1000,7 @@ static void draw_savestate_bg(int slot)
        }\r
 \r
        /* do a frame and fetch menu bg */\r
-       emu_forcedFrame(POPT_EN_SOFTSCALE);\r
+       pemu_forced_frame(POPT_EN_SOFTSCALE);\r
        plat_video_menu_enter(1);\r
 \r
        memcpy(Pico.vram, tmp_vram, sizeof(Pico.vram));\r
@@ -1067,7 +1070,7 @@ static int menu_loop_savestate(int is_loading)
                if (inp & PBTN_MOK) { // save/load\r
                        if (menu_sel < 10) {\r
                                state_slot = menu_sel;\r
-                               if (emu_SaveLoadGame(is_loading, 0)) {\r
+                               if (emu_save_load_game(is_loading, 0)) {\r
                                        me_update_msg(is_loading ? "Load failed" : "Save failed");\r
                                        return 0;\r
                                }\r
@@ -1084,8 +1087,8 @@ static int menu_loop_savestate(int is_loading)
 \r
 static char *action_binds(int player_idx, int action_mask, int dev_id)\r
 {\r
+       int k, count, can_combo, type;\r
        const int *binds;\r
-       int k, count;\r
 \r
        static_buff[0] = 0;\r
 \r
@@ -1094,21 +1097,30 @@ static char *action_binds(int player_idx, int action_mask, int dev_id)
                return static_buff;\r
 \r
        count = in_get_dev_info(dev_id, IN_INFO_BIND_COUNT);\r
+       can_combo = in_get_dev_info(dev_id, IN_INFO_DOES_COMBOS);\r
+\r
+       type = IN_BINDTYPE_EMU;\r
+       if (player_idx >= 0) {\r
+               can_combo = 0;\r
+               type = IN_BINDTYPE_PLAYER12;\r
+       }\r
+       if (player_idx == 1)\r
+               action_mask <<= 16;\r
+\r
        for (k = 0; k < count; k++)\r
        {\r
                const char *xname;\r
                int len;\r
-               if (!(binds[k] & action_mask))\r
-                       continue;\r
 \r
-               if (player_idx >= 0 && ((binds[k] >> 16) & 3) != player_idx)\r
+               if (!(binds[IN_BIND_OFFS(k, type)] & action_mask))\r
                        continue;\r
 \r
                xname = in_get_key_name(dev_id, k);\r
                len = strlen(static_buff);\r
                if (len) {\r
-                       strncat(static_buff, " + ", sizeof(static_buff) - len - 1);\r
-                       len += 3;\r
+                       strncat(static_buff, can_combo ? " + " : ", ",\r
+                               sizeof(static_buff) - len - 1);\r
+                       len += can_combo ? 3 : 2;\r
                }\r
                strncat(static_buff, xname, sizeof(static_buff) - len - 1);\r
        }\r
@@ -1116,7 +1128,7 @@ static char *action_binds(int player_idx, int action_mask, int dev_id)
        return static_buff;\r
 }\r
 \r
-static int count_bound_keys(int dev_id, int action_mask, int player_idx)\r
+static int count_bound_keys(int dev_id, int action_mask, int bindtype)\r
 {\r
        const int *binds;\r
        int k, keys = 0;\r
@@ -1129,13 +1141,8 @@ static int count_bound_keys(int dev_id, int action_mask, int player_idx)
        count = in_get_dev_info(dev_id, IN_INFO_BIND_COUNT);\r
        for (k = 0; k < count; k++)\r
        {\r
-               if (!(binds[k] & action_mask))\r
-                       continue;\r
-\r
-               if (player_idx >= 0 && ((binds[k] >> 16) & 3) != player_idx)\r
-                       continue;\r
-\r
-               keys++;\r
+               if (binds[IN_BIND_OFFS(k, bindtype)] & action_mask)\r
+                       keys++;\r
        }\r
 \r
        return keys;\r
@@ -1191,7 +1198,8 @@ static void draw_key_config(const me_bind_action *opts, int opt_cnt, int player_
 static void key_config_loop(const me_bind_action *opts, int opt_cnt, int player_idx)\r
 {\r
        int i, sel = 0, menu_sel_max = opt_cnt - 1;\r
-       int dev_id, dev_count, kc, is_down, mkey, unbind;\r
+       int dev_id, dev_count, kc, is_down, mkey;\r
+       int unbind, bindtype, mask;\r
 \r
        for (i = 0, dev_id = -1, dev_count = 0; i < IN_MAX_DEVS; i++) {\r
                if (in_get_dev_name(i, 1, 0) != NULL) {\r
@@ -1244,19 +1252,20 @@ static void key_config_loop(const me_bind_action *opts, int opt_cnt, int player_
                for (is_down = 1; is_down; )\r
                        kc = in_update_keycode(&dev_id, &is_down, -1);\r
 \r
-               i = count_bound_keys(dev_id, opts[sel].mask, player_idx);\r
+               bindtype = player_idx >= 0 ? IN_BINDTYPE_PLAYER12 : IN_BINDTYPE_EMU;\r
+               mask = opts[sel].mask;\r
+               if (player_idx == 1)\r
+                       mask <<= 16;\r
+\r
+               i = count_bound_keys(dev_id, mask, bindtype);\r
                unbind = (i > 0);\r
 \r
                /* allow combos if device supports them */\r
-               if (i == 1 && in_get_dev_info(dev_id, IN_INFO_DOES_COMBOS))\r
+               if (i == 1 && bindtype == IN_BINDTYPE_EMU &&\r
+                               in_get_dev_info(dev_id, IN_INFO_DOES_COMBOS))\r
                        unbind = 0;\r
 \r
-               in_bind_key(dev_id, kc, opts[sel].mask, unbind);\r
-               if (player_idx >= 0) {\r
-                       /* FIXME */\r
-                       in_bind_key(dev_id, kc, 3 << 16, 1);\r
-                       in_bind_key(dev_id, kc, player_idx << 16, 0);\r
-               }\r
+               in_bind_key(dev_id, kc, bindtype, mask, unbind);\r
        }\r
 }\r
 \r
@@ -1280,25 +1289,21 @@ me_bind_action me_ctrl_actions[15] =
        { "Z      ", 0x0100 }\r
 };\r
 \r
-// player2_flag, reserved, ?, ?,\r
-// ?, ?, fast forward, menu\r
-// "NEXT SAVE SLOT", "PREV SAVE SLOT", "SWITCH RENDERER", "SAVE STATE",\r
-// "LOAD STATE", "VOLUME UP", "VOLUME DOWN", "DONE"\r
 me_bind_action emuctrl_actions[] =\r
 {\r
-       { "Load State       ", 1<<28 },\r
-       { "Save State       ", 1<<27 },\r
-       { "Prev Save Slot   ", 1<<25 },\r
-       { "Next Save Slot   ", 1<<24 },\r
-       { "Switch Renderer  ", 1<<26 },\r
-       { "Volume Down      ", 1<<30 },\r
-       { "Volume Up        ", 1<<29 },\r
-       { "Fast forward     ", 1<<22 },\r
-       { "Enter Menu       ", 1<<23 },\r
-       { "Pico Next page   ", 1<<21 },\r
-       { "Pico Prev page   ", 1<<20 },\r
-       { "Pico Switch input", 1<<19 },\r
-       { NULL,                0     }\r
+       { "Load State       ", PEV_STATE_LOAD },\r
+       { "Save State       ", PEV_STATE_SAVE },\r
+       { "Prev Save Slot   ", PEV_SSLOT_PREV },\r
+       { "Next Save Slot   ", PEV_SSLOT_NEXT },\r
+       { "Switch Renderer  ", PEV_SWITCH_RND },\r
+       { "Volume Down      ", PEV_VOL_DOWN },\r
+       { "Volume Up        ", PEV_VOL_UP },\r
+       { "Fast forward     ", PEV_FF },\r
+       { "Enter Menu       ", PEV_MENU },\r
+       { "Pico Next page   ", PEV_PICO_PNEXT },\r
+       { "Pico Prev page   ", PEV_PICO_PPREV },\r
+       { "Pico Switch input", PEV_PICO_SWINP },\r
+       { NULL,                0 }\r
 };\r
 \r
 static int key_config_loop_wrap(menu_id id, int keys)\r
@@ -1418,7 +1423,7 @@ static int menu_loop_cd_options(menu_id id, int keys)
 \r
 static menu_entry e_menu_adv_options[] =\r
 {\r
-       mee_onoff     ("SRAM/BRAM saves",          MA_OPT_SRAM_STATES,    currentConfig.EmuOpt, EOPT_USE_SRAM),\r
+       mee_onoff     ("SRAM/BRAM saves",          MA_OPT_SRAM_STATES,    currentConfig.EmuOpt, EOPT_EN_SRAM),\r
        mee_onoff     ("Disable sprite limit",     MA_OPT2_NO_SPRITE_LIM, PicoOpt, POPT_DIS_SPRITE_LIM),\r
        mee_onoff     ("Use second CPU for sound", MA_OPT_ARM940_SOUND,   PicoOpt, POPT_EXT_FM),\r
        mee_onoff     ("Emulate Z80",              MA_OPT2_ENABLE_Z80,    PicoOpt, POPT_EN_Z80),\r
@@ -1587,14 +1592,14 @@ static int mh_saveloadcfg(menu_id id, int keys)
        switch (id) {\r
        case MA_OPT_SAVECFG:\r
        case MA_OPT_SAVECFG_GAME:\r
-               if (emu_WriteConfig(id == MA_OPT_SAVECFG_GAME ? 1 : 0))\r
+               if (emu_write_config(id == MA_OPT_SAVECFG_GAME ? 1 : 0))\r
                        me_update_msg("config saved");\r
                else\r
                        me_update_msg("failed to write config");\r
                break;\r
        case MA_OPT_LOADCFG:\r
-               ret = emu_ReadConfig(1, 1);\r
-               if (!ret) ret = emu_ReadConfig(0, 1);\r
+               ret = emu_read_config(1, 1);\r
+               if (!ret) ret = emu_read_config(0, 1);\r
                if (ret)  me_update_msg("config loaded");\r
                else      me_update_msg("failed to load config");\r
                break;\r
@@ -1727,17 +1732,17 @@ extern void SekStepM68k(void);
 \r
 static void mplayer_loop(void)\r
 {\r
-       emu_startSound();\r
+       pemu_sound_start();\r
 \r
        while (1)\r
        {\r
                PDebugZ80Frame();\r
                if (in_menu_wait_any(0) & PBTN_MA3)\r
                        break;\r
-               emu_waitSound();\r
+               pemu_sound_wait();\r
        }\r
 \r
-       emu_endSound();\r
+       pemu_sound_stop();\r
 }\r
 \r
 static void draw_text_debug(const char *str, int skip, int from)\r
@@ -1776,7 +1781,7 @@ static void draw_frame_debug(void)
        if (PicoDrawMask & PDRAW_SPRITES_HI_ON)  memcpy(layer_str + 19, "spr_hi", 6);\r
 \r
        memset(g_screen_ptr, 0, g_screen_width * g_screen_height * 2);\r
-       emu_forcedFrame(0);\r
+       pemu_forced_frame(0);\r
        smalltext_out16(4, 1, "build: " __DATE__ " " __TIME__, 0xffff);\r
        smalltext_out16(4, g_screen_height - me_sfont_h, layer_str, 0xffff);\r
 }\r
@@ -1793,7 +1798,7 @@ static void debug_menu_loop(void)
                {\r
                        case 0: plat_video_menu_begin();\r
                                tmp = PDebugMain();\r
-                               emu_platformDebugCat(tmp);\r
+                               plat_debug_cat(tmp);\r
                                draw_text_debug(tmp, 0, 0);\r
                                if (dumped) {\r
                                        smalltext_out16(g_screen_width - 6 * me_sfont_h,\r
@@ -1803,7 +1808,7 @@ static void debug_menu_loop(void)
                                break;\r
                        case 1: draw_frame_debug(); break;\r
                        case 2: memset(g_screen_ptr, 0, g_screen_width * g_screen_height * 2);\r
-                               emu_forcedFrame(0);\r
+                               pemu_forced_frame(0);\r
                                menu_darken_bg(g_screen_ptr, g_screen_width * g_screen_height, 0);\r
                                PDebugShowSpriteStats((unsigned short *)g_screen_ptr + (g_screen_height/2 - 240/2)*g_screen_width +\r
                                        g_screen_width/2 - 320/2, g_screen_width); break;\r
@@ -1896,7 +1901,7 @@ static int main_menu_handler(menu_id id, int keys)
                break;\r
        case MA_MAIN_RESET_GAME:\r
                if (rom_loaded) {\r
-                       emu_ResetGame();\r
+                       emu_reset_game();\r
                        return 1;\r
                }\r
                break;\r
@@ -1985,7 +1990,7 @@ static int mh_tray_load_cd(menu_id id, int keys)
        if (ret_name == NULL)\r
                return 0;\r
 \r
-       cd_type = emu_cdCheck(NULL, ret_name);\r
+       cd_type = emu_cd_check(NULL, ret_name);\r
        if (cd_type != CIT_NOT_CD)\r
                ret = Insert_CD(ret_name, cd_type);\r
        if (ret != 0) {\r