mirror of
https://github.com/libretro/RetroArch
synced 2025-03-31 19:21:06 +00:00
(RARCH_CONSOLE) rmenu.mode is now set with bitmasked values so
as to allow more state management options
This commit is contained in:
parent
6548800152
commit
6ad5d46781
@ -68,10 +68,11 @@ enum {
|
|||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
MODE_EMULATION = 0,
|
MODE_EMULATION = 1 << 0,
|
||||||
MODE_INIT,
|
MODE_LOAD_GAME = 1 << 1,
|
||||||
MODE_MENU,
|
MODE_INIT = 1 << 2,
|
||||||
MODE_EXIT
|
MODE_MENU = 1 << 3,
|
||||||
|
MODE_EXIT = 1 << 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -209,44 +209,31 @@ int rarch_extract_zipfile(const char *zip_path, char *first_file, size_t first_f
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode, unsigned delay)
|
void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode)
|
||||||
{
|
{
|
||||||
const char *game_to_load;
|
|
||||||
char first_file_inzip[PATH_MAX];
|
|
||||||
struct retro_system_info info;
|
|
||||||
bool extract_zip_cond = false;
|
|
||||||
bool extract_zip_and_load_game_cond = false;
|
|
||||||
bool load_game = !extract_zip_cond;
|
|
||||||
|
|
||||||
retro_get_system_info(&info);
|
|
||||||
|
|
||||||
#ifdef HAVE_ZLIB
|
#ifdef HAVE_ZLIB
|
||||||
extract_zip_cond = (strstr(path, ".zip") || strstr(path, ".ZIP"))
|
if ((strstr(path, ".zip") || strstr(path, ".ZIP"))
|
||||||
&& !info.block_extract;
|
&& !g_extern.system.block_extract)
|
||||||
|
|
||||||
if(extract_zip_cond)
|
|
||||||
{
|
{
|
||||||
rarch_extract_zipfile(path, first_file_inzip, sizeof(first_file_inzip), extract_zip_mode);
|
char first_file[PATH_MAX];
|
||||||
|
first_file[0] = '\0';
|
||||||
|
|
||||||
|
rarch_extract_zipfile(path, first_file, sizeof(first_file), extract_zip_mode);
|
||||||
if(g_extern.console.rmenu.state.msg_info.enable)
|
if(g_extern.console.rmenu.state.msg_info.enable)
|
||||||
rarch_settings_msg(S_MSG_EXTRACTED_ZIPFILE, S_DELAY_180);
|
rarch_settings_msg(S_MSG_EXTRACTED_ZIPFILE, S_DELAY_180);
|
||||||
|
|
||||||
|
if(g_extern.file_state.zip_extract_mode == ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE)
|
||||||
|
{
|
||||||
|
snprintf(g_extern.fullpath, sizeof(g_extern.fullpath), first_file);
|
||||||
|
goto do_init;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_zip_and_load_game_cond = (extract_zip_cond &&
|
|
||||||
g_extern.file_state.zip_extract_mode == ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE);
|
|
||||||
load_game = (extract_zip_and_load_game_cond) || (!extract_zip_cond);
|
|
||||||
|
|
||||||
if(extract_zip_and_load_game_cond)
|
|
||||||
game_to_load = first_file_inzip;
|
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
game_to_load = path;
|
snprintf(g_extern.fullpath, sizeof(g_extern.fullpath), path);
|
||||||
|
|
||||||
if(load_game)
|
do_init:
|
||||||
{
|
g_extern.console.rmenu.mode |= (1ULL << MODE_LOAD_GAME);
|
||||||
snprintf(g_extern.fullpath, sizeof(g_extern.fullpath), game_to_load);
|
|
||||||
rarch_settings_change(S_START_RARCH);
|
|
||||||
|
|
||||||
if(g_extern.console.rmenu.state.msg_info.enable)
|
|
||||||
rarch_settings_msg(S_MSG_LOADING_ROM, delay);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,6 @@ enum
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode, unsigned delay);
|
void rarch_console_load_game_wrap(const char *path, unsigned extract_zip_mode);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -52,7 +52,7 @@ void rarch_settings_change(unsigned setting)
|
|||||||
break;
|
break;
|
||||||
case S_FRAME_ADVANCE:
|
case S_FRAME_ADVANCE:
|
||||||
g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE);
|
g_extern.lifecycle_state |= (1ULL << RARCH_FRAMEADVANCE);
|
||||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EMULATION);
|
||||||
break;
|
break;
|
||||||
case S_HW_TEXTURE_FILTER:
|
case S_HW_TEXTURE_FILTER:
|
||||||
g_settings.video.smooth = !g_settings.video.smooth;
|
g_settings.video.smooth = !g_settings.video.smooth;
|
||||||
@ -88,20 +88,20 @@ void rarch_settings_change(unsigned setting)
|
|||||||
break;
|
break;
|
||||||
case S_QUIT:
|
case S_QUIT:
|
||||||
g_extern.console.rmenu.state.ingame_menu.enable = false;
|
g_extern.console.rmenu.state.ingame_menu.enable = false;
|
||||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EXIT);
|
||||||
break;
|
break;
|
||||||
case S_QUIT_RARCH:
|
case S_QUIT_RARCH:
|
||||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EXIT);
|
||||||
break;
|
break;
|
||||||
case S_RETURN_TO_GAME:
|
case S_RETURN_TO_GAME:
|
||||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EMULATION);
|
||||||
break;
|
break;
|
||||||
case S_RETURN_TO_LAUNCHER:
|
case S_RETURN_TO_LAUNCHER:
|
||||||
g_extern.console.external_launch.enable = true;
|
g_extern.console.external_launch.enable = true;
|
||||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EXIT);
|
||||||
break;
|
break;
|
||||||
case S_RETURN_TO_MENU:
|
case S_RETURN_TO_MENU:
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
break;
|
break;
|
||||||
case S_ROTATION_DECREMENT:
|
case S_ROTATION_DECREMENT:
|
||||||
if(g_extern.console.screen.orientation > 0)
|
if(g_extern.console.screen.orientation > 0)
|
||||||
@ -112,7 +112,7 @@ void rarch_settings_change(unsigned setting)
|
|||||||
g_extern.console.screen.orientation++;
|
g_extern.console.screen.orientation++;
|
||||||
break;
|
break;
|
||||||
case S_START_RARCH:
|
case S_START_RARCH:
|
||||||
g_extern.console.rmenu.mode = MODE_INIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
break;
|
break;
|
||||||
case S_REWIND:
|
case S_REWIND:
|
||||||
g_settings.rewind_enable = !g_settings.rewind_enable;
|
g_settings.rewind_enable = !g_settings.rewind_enable;
|
||||||
|
@ -268,7 +268,7 @@ int main(int argc, char *argv[])
|
|||||||
system_process_args(argc, argv);
|
system_process_args(argc, argv);
|
||||||
|
|
||||||
begin_loop:
|
begin_loop:
|
||||||
if(g_extern.console.rmenu.mode == MODE_EMULATION)
|
if(g_extern.console.rmenu.mode & (1ULL << MODE_EMULATION))
|
||||||
{
|
{
|
||||||
driver.input->poll(NULL);
|
driver.input->poll(NULL);
|
||||||
driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
|
driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
|
||||||
@ -276,7 +276,7 @@ begin_loop:
|
|||||||
while(rarch_main_iterate());
|
while(rarch_main_iterate());
|
||||||
audio_stop_func();
|
audio_stop_func();
|
||||||
}
|
}
|
||||||
else if (g_extern.console.rmenu.mode == MODE_INIT)
|
else if (g_extern.console.rmenu.mode & (1ULL << MODE_INIT))
|
||||||
{
|
{
|
||||||
if(g_extern.main_is_init)
|
if(g_extern.main_is_init)
|
||||||
rarch_main_deinit();
|
rarch_main_deinit();
|
||||||
@ -295,16 +295,16 @@ begin_loop:
|
|||||||
if (init_ret == 0)
|
if (init_ret == 0)
|
||||||
{
|
{
|
||||||
RARCH_LOG("rarch_main_init succeeded.\n");
|
RARCH_LOG("rarch_main_init succeeded.\n");
|
||||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EMULATION);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RARCH_ERR("rarch_main_init failed.\n");
|
RARCH_ERR("rarch_main_init failed.\n");
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
rarch_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180);
|
rarch_settings_msg(S_MSG_ROM_LOADING_ERROR, S_DELAY_180);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(g_extern.console.rmenu.mode == MODE_MENU)
|
else if(g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
while(rmenu_iterate());
|
while(rmenu_iterate());
|
||||||
else
|
else
|
||||||
goto begin_shutdown;
|
goto begin_shutdown;
|
||||||
|
@ -361,7 +361,9 @@ static void render_messagebox(rgui_handle_t *rgui, const char *message)
|
|||||||
|
|
||||||
static void render_text(rgui_handle_t *rgui)
|
static void render_text(rgui_handle_t *rgui)
|
||||||
{
|
{
|
||||||
if (rgui->need_refresh && g_extern.console.rmenu.mode == MODE_MENU && !rgui->msg_force)
|
if (rgui->need_refresh &&
|
||||||
|
(g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
|
&& !rgui->msg_force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
size_t begin = rgui->directory_ptr >= TERM_HEIGHT / 2 ?
|
size_t begin = rgui->directory_ptr >= TERM_HEIGHT / 2 ?
|
||||||
@ -1193,7 +1195,7 @@ void rgui_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(rgui->path_buf, sizeof(rgui->path_buf), "%s/%s", dir, path);
|
snprintf(rgui->path_buf, sizeof(rgui->path_buf), "%s/%s", dir, path);
|
||||||
rarch_console_load_game_wrap(rgui->path_buf, g_extern.file_state.zip_extract_mode, S_DELAY_1);
|
rarch_console_load_game_wrap(rgui->path_buf, g_extern.file_state.zip_extract_mode);
|
||||||
rgui->need_refresh = true; // in case of zip extract
|
rgui->need_refresh = true; // in case of zip extract
|
||||||
rgui->msg_force = true;
|
rgui->msg_force = true;
|
||||||
}
|
}
|
||||||
@ -1231,7 +1233,7 @@ void rgui_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
|||||||
// refresh values in case the stack changed
|
// refresh values in case the stack changed
|
||||||
rgui_list_back(rgui->path_stack, &dir, &menu_type, &directory_ptr);
|
rgui_list_back(rgui->path_stack, &dir, &menu_type, &directory_ptr);
|
||||||
|
|
||||||
if (rgui->need_refresh && (menu_type == RGUI_FILE_DIRECTORY || menu_type == RGUI_FILE_DEVICE || menu_type == RGUI_SETTINGS_CORE) && g_extern.console.rmenu.mode == MODE_MENU)
|
if (rgui->need_refresh && (menu_type == RGUI_FILE_DIRECTORY || menu_type == RGUI_FILE_DEVICE || menu_type == RGUI_SETTINGS_CORE) && (g_extern.console.rmenu.mode & (1ULL << MODE_MENU)))
|
||||||
{
|
{
|
||||||
rgui->need_refresh = false;
|
rgui->need_refresh = false;
|
||||||
rgui_list_clear(rgui->folder_buf);
|
rgui_list_clear(rgui->folder_buf);
|
||||||
|
@ -1799,7 +1799,7 @@ int select_rom(void *data, void *state)
|
|||||||
rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180);
|
rarch_settings_msg(S_MSG_DIR_LOADING_ERROR, S_DELAY_180);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_extern.file_state.zip_extract_mode, S_DELAY_45);
|
rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_extern.file_state.zip_extract_mode);
|
||||||
}
|
}
|
||||||
else if (input & (1ULL << RMENU_DEVICE_NAV_L1))
|
else if (input & (1ULL << RMENU_DEVICE_NAV_L1))
|
||||||
{
|
{
|
||||||
@ -2340,20 +2340,21 @@ void rmenu_input_process(void *data, void *state)
|
|||||||
(void)data;
|
(void)data;
|
||||||
rmenu_state_t *rstate = (rmenu_state_t*)state;
|
rmenu_state_t *rstate = (rmenu_state_t*)state;
|
||||||
|
|
||||||
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME))
|
||||||
|
{
|
||||||
|
if(g_extern.console.rmenu.state.msg_info.enable)
|
||||||
|
rarch_settings_msg(S_MSG_LOADING_ROM, 100);
|
||||||
|
|
||||||
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
||||||
{
|
{
|
||||||
bool rmenu_enable = (((rstate->old_state & (1ULL << RMENU_DEVICE_NAV_L3)) && (rstate->old_state & (1ULL << RMENU_DEVICE_NAV_R3)) && g_extern.main_is_init));
|
bool rmenu_enable = (((rstate->old_state & (1ULL << RMENU_DEVICE_NAV_L3)) && (rstate->old_state & (1ULL << RMENU_DEVICE_NAV_R3)) && g_extern.main_is_init));
|
||||||
|
|
||||||
switch(g_extern.console.rmenu.mode)
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
{
|
if (rmenu_enable)
|
||||||
case MODE_EXIT:
|
g_extern.console.rmenu.mode = (1ULL << MODE_EMULATION);
|
||||||
case MODE_INIT:
|
|
||||||
case MODE_EMULATION:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_EMULATION : MODE_MENU;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2467,9 +2468,6 @@ bool rmenu_iterate(void)
|
|||||||
if(current_menu.input_process)
|
if(current_menu.input_process)
|
||||||
current_menu.input_process(¤t_menu, &rmenu_state);
|
current_menu.input_process(¤t_menu, &rmenu_state);
|
||||||
|
|
||||||
if(g_extern.console.rmenu.mode != MODE_MENU || repeat == 0)
|
|
||||||
goto deinit;
|
|
||||||
|
|
||||||
msg = msg_queue_pull(g_extern.msg_queue);
|
msg = msg_queue_pull(g_extern.msg_queue);
|
||||||
|
|
||||||
if (msg && g_extern.console.rmenu.state.msg_info.enable)
|
if (msg && g_extern.console.rmenu.state.msg_info.enable)
|
||||||
@ -2484,12 +2482,17 @@ bool rmenu_iterate(void)
|
|||||||
frame_count = 0;
|
frame_count = 0;
|
||||||
device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count);
|
device_ptr->ctx_driver->check_window(&quit, &resize, &width, &height, frame_count);
|
||||||
|
|
||||||
if (quit)
|
|
||||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
|
||||||
|
|
||||||
if (g_extern.draw_menu)
|
if (g_extern.draw_menu)
|
||||||
device_ptr->ctx_driver->set_blend(false);
|
device_ptr->ctx_driver->set_blend(false);
|
||||||
|
|
||||||
|
if (quit)
|
||||||
|
g_extern.console.rmenu.mode = (1ULL << MODE_EXIT);
|
||||||
|
|
||||||
|
if((!(g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
|
&& !(g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME))) ||
|
||||||
|
repeat == 0)
|
||||||
|
goto deinit;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
deinit:
|
deinit:
|
||||||
|
@ -156,7 +156,7 @@ void menu_init(void)
|
|||||||
menu_framebuf, RGUI_WIDTH * sizeof(uint16_t),
|
menu_framebuf, RGUI_WIDTH * sizeof(uint16_t),
|
||||||
NULL /* _binary_console_font_bmp_start */, bitmap_bin, folder_cb, NULL);
|
NULL /* _binary_console_font_bmp_start */, bitmap_bin, folder_cb, NULL);
|
||||||
|
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
rgui_iterate(rgui, RGUI_ACTION_REFRESH);
|
rgui_iterate(rgui, RGUI_ACTION_REFRESH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,24 +235,26 @@ bool rmenu_iterate(void)
|
|||||||
|
|
||||||
old_input_state = input_state;
|
old_input_state = input_state;
|
||||||
|
|
||||||
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME))
|
||||||
|
{
|
||||||
|
if(g_extern.console.rmenu.state.msg_info.enable)
|
||||||
|
rarch_settings_msg(S_MSG_LOADING_ROM, 100);
|
||||||
|
|
||||||
|
if (g_extern.fullpath)
|
||||||
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
||||||
{
|
{
|
||||||
bool rmenu_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init);
|
bool rmenu_enable = ((trigger_state & (1ULL << GX_DEVICE_NAV_MENU)) && g_extern.main_is_init);
|
||||||
bool quit_key_pressed = (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT));
|
bool quit_key_pressed = (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT));
|
||||||
|
|
||||||
switch(g_extern.console.rmenu.mode)
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
{
|
g_extern.console.rmenu.mode = quit_key_pressed ? (1ULL << MODE_EXIT) : rmenu_enable ? (1ULL << MODE_EMULATION) : (1ULL << MODE_MENU);
|
||||||
case MODE_EXIT:
|
|
||||||
case MODE_INIT:
|
|
||||||
case MODE_EMULATION:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
g_extern.console.rmenu.mode = quit_key_pressed ? MODE_EXIT : rmenu_enable ? MODE_EMULATION : MODE_MENU;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_extern.console.rmenu.mode != MODE_MENU)
|
if(!(g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
|
&& !(g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME)))
|
||||||
goto deinit;
|
goto deinit;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -179,7 +179,7 @@ HRESULT CRetroArchFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandle
|
|||||||
if(path_file_exists(browser->current_dir.list->elems[index].data))
|
if(path_file_exists(browser->current_dir.list->elems[index].data))
|
||||||
{
|
{
|
||||||
snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer);
|
snprintf(path, sizeof(path), "%s\\%s", filebrowser_get_current_dir(browser), str_buffer);
|
||||||
rarch_console_load_game_wrap(path, g_extern.file_state.zip_extract_mode, S_DELAY_45);
|
rarch_console_load_game_wrap(path, g_extern.file_state.zip_extract_mode);
|
||||||
}
|
}
|
||||||
else if(browser->current_dir.list->elems[index].attr.b)
|
else if(browser->current_dir.list->elems[index].attr.b)
|
||||||
{
|
{
|
||||||
@ -1116,7 +1116,7 @@ void menu_init (void)
|
|||||||
browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, g_extern.system.valid_extensions);
|
browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, g_extern.system.valid_extensions);
|
||||||
tmp_browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, "");
|
tmp_browser = (filebrowser_t*)filebrowser_init(default_paths.filebrowser_startup_dir, "");
|
||||||
|
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_free (void)
|
void menu_free (void)
|
||||||
@ -1182,24 +1182,25 @@ bool rmenu_iterate(void)
|
|||||||
XINPUT_STATE state;
|
XINPUT_STATE state;
|
||||||
XInputGetState(0, &state);
|
XInputGetState(0, &state);
|
||||||
|
|
||||||
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME))
|
||||||
|
{
|
||||||
|
if(g_extern.console.rmenu.state.msg_info.enable)
|
||||||
|
rarch_settings_msg(S_MSG_LOADING_ROM, 100);
|
||||||
|
|
||||||
|
if (g_extern.fullpath)
|
||||||
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
if (!(g_extern.frame_count < g_extern.delay_timer[0]))
|
||||||
{
|
{
|
||||||
bool rmenu_enable = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB)
|
bool rmenu_enable = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB)
|
||||||
&& (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_extern.main_is_init));
|
&& (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_extern.main_is_init));
|
||||||
|
|
||||||
switch(g_extern.console.rmenu.mode)
|
|
||||||
{
|
if (g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
case MODE_EXIT:
|
if (rmenu_enable)
|
||||||
case MODE_INIT:
|
g_extern.console.rmenu.mode = (1ULL << MODE_EMULATION);
|
||||||
case MODE_EMULATION:
|
|
||||||
break;
|
|
||||||
case MODE_MENU:
|
|
||||||
default:
|
|
||||||
if (rmenu_enable)
|
|
||||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rarch_render_cached_frame();
|
rarch_render_cached_frame();
|
||||||
@ -1219,9 +1220,6 @@ bool rmenu_iterate(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g_extern.console.rmenu.mode != MODE_MENU)
|
|
||||||
goto deinit;
|
|
||||||
|
|
||||||
msg = msg_queue_pull(g_extern.msg_queue);
|
msg = msg_queue_pull(g_extern.msg_queue);
|
||||||
|
|
||||||
if (msg)
|
if (msg)
|
||||||
@ -1229,6 +1227,10 @@ bool rmenu_iterate(void)
|
|||||||
|
|
||||||
device_ptr->ctx_driver->swap_buffers();
|
device_ptr->ctx_driver->swap_buffers();
|
||||||
|
|
||||||
|
if(!(g_extern.console.rmenu.mode & (1ULL << MODE_MENU))
|
||||||
|
&& !(g_extern.console.rmenu.mode & (1ULL << MODE_LOAD_GAME)))
|
||||||
|
goto deinit;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
deinit:
|
deinit:
|
||||||
|
@ -375,14 +375,14 @@ static void system_process_args(int argc, char *argv[])
|
|||||||
g_extern.console.external_launch.support = EXTERN_LAUNCHER_CHANNEL;
|
g_extern.console.external_launch.support = EXTERN_LAUNCHER_CHANNEL;
|
||||||
snprintf(rom, sizeof(rom), "%s%s", argv[1], argv[2]);
|
snprintf(rom, sizeof(rom), "%s%s", argv[1], argv[2]);
|
||||||
g_extern.file_state.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE;
|
g_extern.file_state.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE;
|
||||||
rarch_console_load_game_wrap(rom, g_extern.file_state.zip_extract_mode, S_DELAY_1);
|
rarch_console_load_game_wrap(rom, g_extern.file_state.zip_extract_mode);
|
||||||
|
|
||||||
rgui_iterate(rgui, RGUI_ACTION_MESSAGE);
|
rgui_iterate(rgui, RGUI_ACTION_MESSAGE);
|
||||||
g_extern.draw_menu = true;
|
g_extern.draw_menu = true;
|
||||||
rarch_render_cached_frame();
|
rarch_render_cached_frame();
|
||||||
g_extern.draw_menu = false;
|
g_extern.draw_menu = false;
|
||||||
|
|
||||||
g_extern.console.rmenu.mode = MODE_INIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_extern.console.external_launch.support = EXTERN_LAUNCHER_SALAMANDER;
|
g_extern.console.external_launch.support = EXTERN_LAUNCHER_SALAMANDER;
|
||||||
|
@ -387,7 +387,7 @@ static void system_process_args(int argc, char *argv[])
|
|||||||
switch(g_extern.console.external_launch.support)
|
switch(g_extern.console.external_launch.support)
|
||||||
{
|
{
|
||||||
case EXTERN_LAUNCHER_SALAMANDER:
|
case EXTERN_LAUNCHER_SALAMANDER:
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_MULTIMAN
|
#ifdef HAVE_MULTIMAN
|
||||||
case EXTERN_LAUNCHER_MULTIMAN:
|
case EXTERN_LAUNCHER_MULTIMAN:
|
||||||
|
@ -94,7 +94,7 @@ static int setup_callback(void)
|
|||||||
|
|
||||||
void menu_init (void)
|
void menu_init (void)
|
||||||
{
|
{
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool rmenu_iterate(void)
|
bool rmenu_iterate(void)
|
||||||
@ -102,8 +102,8 @@ bool rmenu_iterate(void)
|
|||||||
char game_rom[256];
|
char game_rom[256];
|
||||||
snprintf(game_rom, sizeof(game_rom), "%s%s", default_paths.port_dir, "dkc.sfc");
|
snprintf(game_rom, sizeof(game_rom), "%s%s", default_paths.port_dir, "dkc.sfc");
|
||||||
RARCH_LOG("game ROM: %s\n", game_rom);
|
RARCH_LOG("game ROM: %s\n", game_rom);
|
||||||
rarch_console_load_game_wrap(game_rom, 0, 0);
|
rarch_console_load_game_wrap(game_rom, 0);
|
||||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
g_extern.console.rmenu.mode = (1ULL << MODE_INIT);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -318,6 +318,7 @@ struct global
|
|||||||
unsigned performance_level;
|
unsigned performance_level;
|
||||||
enum retro_pixel_format pix_fmt;
|
enum retro_pixel_format pix_fmt;
|
||||||
|
|
||||||
|
bool block_extract;
|
||||||
bool force_nonblock;
|
bool force_nonblock;
|
||||||
|
|
||||||
const char *input_desc_btn[MAX_PLAYERS][RARCH_FIRST_CUSTOM_BIND];
|
const char *input_desc_btn[MAX_PLAYERS][RARCH_FIRST_CUSTOM_BIND];
|
||||||
|
@ -2606,6 +2606,7 @@ void rarch_init_system_info(void)
|
|||||||
info->library_name, info->library_version);
|
info->library_name, info->library_version);
|
||||||
strlcpy(g_extern.system.valid_extensions, info->valid_extensions ? info->valid_extensions : DEFAULT_EXT,
|
strlcpy(g_extern.system.valid_extensions, info->valid_extensions ? info->valid_extensions : DEFAULT_EXT,
|
||||||
sizeof(g_extern.system.valid_extensions));
|
sizeof(g_extern.system.valid_extensions));
|
||||||
|
g_extern.system.block_extract = info->block_extract;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init_system_av_info(void)
|
static void init_system_av_info(void)
|
||||||
@ -2781,7 +2782,7 @@ bool rarch_main_iterate(void)
|
|||||||
if (g_extern.system.shutdown)
|
if (g_extern.system.shutdown)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_RMENU
|
#ifdef HAVE_RMENU
|
||||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
g_extern.console.rmenu.mode = (1ULL << MODE_EXIT);
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2796,7 +2797,7 @@ bool rarch_main_iterate(void)
|
|||||||
|
|
||||||
if (rmenu_enable || (g_extern.console.rmenu.state.ingame_menu.enable && !rmenu_enable))
|
if (rmenu_enable || (g_extern.console.rmenu.state.ingame_menu.enable && !rmenu_enable))
|
||||||
{
|
{
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
g_extern.delay_timer[0] = g_extern.frame_count + 30;
|
g_extern.delay_timer[0] = g_extern.frame_count + 30;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -2848,7 +2849,7 @@ bool rarch_main_iterate(void)
|
|||||||
{
|
{
|
||||||
g_extern.lifecycle_state &= ~(1ULL << RARCH_FRAMEADVANCE);
|
g_extern.lifecycle_state &= ~(1ULL << RARCH_FRAMEADVANCE);
|
||||||
g_extern.console.rmenu.state.ingame_menu.enable = true;
|
g_extern.console.rmenu.state.ingame_menu.enable = true;
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -294,7 +294,7 @@ void config_set_defaults(void)
|
|||||||
g_extern.audio_data.mute = 0;
|
g_extern.audio_data.mute = 0;
|
||||||
g_extern.verbose = true;
|
g_extern.verbose = true;
|
||||||
|
|
||||||
g_extern.console.rmenu.mode = MODE_MENU;
|
g_extern.console.rmenu.mode = (1ULL << MODE_MENU);
|
||||||
g_extern.console.rmenu.font_size = 1.0f;
|
g_extern.console.rmenu.font_size = 1.0f;
|
||||||
g_extern.console.sound.mode = SOUND_MODE_NORMAL;
|
g_extern.console.sound.mode = SOUND_MODE_NORMAL;
|
||||||
g_extern.console.screen.viewports.custom_vp.width = 0;
|
g_extern.console.screen.viewports.custom_vp.width = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user