mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 15:40:44 +00:00
(RARCH_CONSOLE) Add MODE_INIT
This commit is contained in:
parent
5752608062
commit
369477a15b
@ -1165,14 +1165,26 @@ bool rmenu_iterate(void)
|
||||
XINPUT_STATE state;
|
||||
XInputGetState(0, &state);
|
||||
|
||||
bool rmenu_enable = !((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB)
|
||||
&& (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_extern.main_is_init)
|
||||
&& IS_TIMER_EXPIRED(0));
|
||||
|
||||
if (IS_TIMER_EXPIRED(0))
|
||||
{
|
||||
bool rmenu_enable = !((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB)
|
||||
&& (state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB) && (g_extern.main_is_init));
|
||||
|
||||
switch(g_extern.console.rmenu.mode)
|
||||
{
|
||||
case MODE_EXIT:
|
||||
case MODE_INIT:
|
||||
case MODE_EMULATION:
|
||||
break;
|
||||
default:
|
||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_EMULATION : MODE_MENU;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rarch_render_cached_frame();
|
||||
|
||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_MENU : MODE_EMULATION;
|
||||
|
||||
switch(g_extern.console.rmenu.input_loop)
|
||||
{
|
||||
case INPUT_LOOP_FILEBROWSER:
|
||||
@ -1188,15 +1200,13 @@ bool rmenu_iterate(void)
|
||||
break;
|
||||
}
|
||||
|
||||
if(g_extern.console.rmenu.mode == MODE_EMULATION || g_extern.console.rmenu.mode == MODE_EXIT)
|
||||
if(g_extern.console.rmenu.mode != MODE_MENU)
|
||||
goto deinit;
|
||||
|
||||
msg = msg_queue_pull(g_extern.msg_queue);
|
||||
|
||||
if (msg)
|
||||
{
|
||||
device_ptr->font_ctx->render_msg(device_ptr, msg);
|
||||
}
|
||||
|
||||
device_ptr->ctx_driver->swap_buffers();
|
||||
|
||||
|
@ -58,6 +58,7 @@ enum {
|
||||
enum
|
||||
{
|
||||
MODE_EMULATION = 0,
|
||||
MODE_INIT,
|
||||
MODE_MENU,
|
||||
MODE_EXIT
|
||||
};
|
||||
|
@ -95,9 +95,7 @@ bool rarch_startup (const char * config_path)
|
||||
args.sram_path = g_extern.console.main_wrap.state.default_sram_dir.enable ? g_extern.console.main_wrap.paths.default_sram_dir : NULL,
|
||||
args.state_path = g_extern.console.main_wrap.state.default_savestate_dir.enable ? g_extern.console.main_wrap.paths.default_savestate_dir : NULL,
|
||||
args.rom_path = g_extern.file_state.rom_path;
|
||||
#ifdef HAVE_DYLIB
|
||||
args.libretro_path = g_settings.libretro;
|
||||
#endif
|
||||
|
||||
int init_ret = rarch_main_init_wrap(&args);
|
||||
(void)init_ret;
|
||||
@ -105,6 +103,7 @@ bool rarch_startup (const char * config_path)
|
||||
if(init_ret == 0)
|
||||
{
|
||||
g_extern.console.initialize_rarch_enable = 0;
|
||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
||||
retval = true;
|
||||
}
|
||||
else
|
||||
|
@ -23,9 +23,7 @@ struct rarch_main_wrap
|
||||
const char *sram_path;
|
||||
const char *state_path;
|
||||
const char *config_path;
|
||||
#ifdef HAVE_DYLIB
|
||||
const char *libretro_path;
|
||||
#endif
|
||||
bool verbose;
|
||||
};
|
||||
|
||||
|
@ -123,7 +123,7 @@ void rarch_settings_change(unsigned setting)
|
||||
case S_START_RARCH:
|
||||
g_extern.console.rmenu.state.rmenu.enable = false;
|
||||
g_extern.console.initialize_rarch_enable = 1;
|
||||
g_extern.console.rmenu.mode = MODE_EMULATION;
|
||||
g_extern.console.rmenu.mode = MODE_INIT;
|
||||
break;
|
||||
case S_REWIND:
|
||||
g_settings.rewind_enable = !g_settings.rewind_enable;
|
||||
|
@ -2315,27 +2315,19 @@ void rmenu_input_process(void *data, void *state)
|
||||
(void)data;
|
||||
rmenu_state_t *rstate = (rmenu_state_t*)state;
|
||||
|
||||
if(IS_TIMER_EXPIRED(0))
|
||||
if (IS_TIMER_EXPIRED(0))
|
||||
{
|
||||
// if we want to force goto the emulation loop, skip this
|
||||
if(g_extern.console.rmenu.mode != MODE_EMULATION)
|
||||
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 == MODE_EXIT)
|
||||
{
|
||||
}
|
||||
// for ingame menu, we need a different precondition because menu_enable
|
||||
// can be set to false when going back from ingame menu to menu
|
||||
else if(g_extern.console.rmenu.state.ingame_menu.enable == true)
|
||||
{
|
||||
//we want to force exit when g_extern.console.mode is set to MODE_EXIT
|
||||
if(g_extern.console.rmenu.mode != MODE_EXIT)
|
||||
g_extern.console.rmenu.mode = (((rstate->old_state & (1ULL << RMENU_DEVICE_NAV_L3)) && (rstate->old_state & (1ULL << RMENU_DEVICE_NAV_R3)) && g_extern.main_is_init)) ? MODE_EMULATION : MODE_MENU;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool rmenu_enable = !(((rstate->old_state & (1ULL << RMENU_DEVICE_NAV_L3)) && (rstate->old_state & (1ULL << RMENU_DEVICE_NAV_R3)) && g_extern.main_is_init));
|
||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_MENU : MODE_EMULATION;
|
||||
}
|
||||
case MODE_EXIT:
|
||||
case MODE_INIT:
|
||||
case MODE_EMULATION:
|
||||
break;
|
||||
default:
|
||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_EMULATION : MODE_MENU;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2453,7 +2445,7 @@ bool rmenu_iterate(void)
|
||||
if(current_menu.input_process)
|
||||
current_menu.input_process(¤t_menu, &rmenu_state);
|
||||
|
||||
if(g_extern.console.rmenu.mode == MODE_EMULATION || g_extern.console.rmenu.mode == MODE_EXIT || repeat == 0)
|
||||
if(g_extern.console.rmenu.mode != MODE_MENU || repeat == 0)
|
||||
goto deinit;
|
||||
|
||||
msg = msg_queue_pull(g_extern.msg_queue);
|
||||
|
@ -345,9 +345,7 @@ static bool rmenu_iterate(void)
|
||||
action = RGUI_ACTION_SETTINGS;
|
||||
}
|
||||
else
|
||||
{
|
||||
first = false;
|
||||
}
|
||||
|
||||
rgui_iterate(rgui, action);
|
||||
|
||||
@ -355,39 +353,38 @@ static bool rmenu_iterate(void)
|
||||
|
||||
old_input_state = input_state;
|
||||
|
||||
bool goto_menu_key_pressed = (trigger_state & (1ULL << GX_DEVICE_NAV_MENU));
|
||||
bool quit_key_pressed = (trigger_state & (1ULL << GX_DEVICE_NAV_QUIT));
|
||||
|
||||
if(IS_TIMER_EXPIRED(0))
|
||||
{
|
||||
// if we want to force goto the emulation loop, skip this
|
||||
if(g_extern.console.rmenu.mode != MODE_EMULATION)
|
||||
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));
|
||||
|
||||
switch(g_extern.console.rmenu.mode)
|
||||
{
|
||||
if(goto_menu_key_pressed)
|
||||
{
|
||||
g_extern.console.rmenu.state.rmenu.enable = (goto_menu_key_pressed && g_extern.main_is_init) ? false : true;
|
||||
g_extern.console.rmenu.mode = g_extern.console.rmenu.state.rmenu.enable ? MODE_MENU : MODE_EMULATION;
|
||||
}
|
||||
case MODE_EXIT:
|
||||
case MODE_INIT:
|
||||
break;
|
||||
case MODE_EMULATION:
|
||||
// set a timer delay so that we don't instantly switch back to the menu when
|
||||
// press and holding QUIT in the emulation loop (lasts for 30 frame ticks)
|
||||
SET_TIMER_EXPIRATION(0, 30);
|
||||
break;
|
||||
default:
|
||||
if (quit_key_pressed)
|
||||
{
|
||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
||||
g_extern.console.rmenu.state.rmenu.enable = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_extern.console.rmenu.state.rmenu.enable = rmenu_enable ? false : true;
|
||||
g_extern.console.rmenu.mode = rmenu_enable ? MODE_EMULATION : MODE_MENU;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(quit_key_pressed)
|
||||
{
|
||||
g_extern.console.rmenu.state.rmenu.enable = false;
|
||||
g_extern.console.rmenu.mode = MODE_EXIT;
|
||||
}
|
||||
|
||||
// set a timer delay so that we don't instantly switch back to the menu when
|
||||
// press and holding QUIT in the emulation loop (lasts for 30 frame ticks)
|
||||
if(g_extern.console.rmenu.mode == MODE_EMULATION)
|
||||
{
|
||||
SET_TIMER_EXPIRATION(0, 30);
|
||||
}
|
||||
|
||||
}while(g_extern.console.rmenu.state.rmenu.enable);
|
||||
|
||||
g_extern.draw_menu = false;
|
||||
|
||||
g_extern.console.rmenu.state.ingame_menu.enable = false;
|
||||
|
||||
return true;
|
||||
|
@ -336,7 +336,6 @@ int main(int argc, char *argv[])
|
||||
RARCH_LOG("Started from multiMAN, will auto-start game.\n");
|
||||
strlcpy(g_extern.file_state.rom_path, argv[1], sizeof(g_extern.file_state.rom_path));
|
||||
rarch_settings_change(S_START_RARCH);
|
||||
rarch_startup(default_paths.config_file);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@ -347,18 +346,13 @@ begin_loop:
|
||||
if(g_extern.console.rmenu.mode == MODE_EMULATION)
|
||||
{
|
||||
input_ps3.poll(NULL);
|
||||
|
||||
driver.video->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
|
||||
|
||||
while(rarch_main_iterate());
|
||||
}
|
||||
else if (g_extern.console.rmenu.mode == MODE_INIT)
|
||||
rarch_startup(default_paths.config_file);
|
||||
else if(g_extern.console.rmenu.mode == MODE_MENU)
|
||||
{
|
||||
while(rmenu_iterate());
|
||||
|
||||
if (g_extern.console.rmenu.mode != MODE_EXIT)
|
||||
rarch_startup(default_paths.config_file);
|
||||
}
|
||||
else
|
||||
goto begin_shutdown;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user