X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=9e2d0310743b5258a1c30b626602e6c306a0c473;hb=b580cc4f026c8b1facbf794f39fb3a06238dd484;hp=589f07cbb366cdfe96850762e1f043171ecac670;hpb=8fc5171a4c53b6f0e7ef7247d36ee5e05eaf0a07;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 589f07cb..9e2d0310 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -39,6 +39,9 @@ #define PORTS_NUMBER 8 +//hack to prevent retroarch freezing when reseting in the menu but not while running with the hot key +int rebootemu = 0; + static retro_video_refresh_t video_cb; static retro_input_poll_t input_poll_cb; static retro_input_state_t input_state_cb; @@ -52,6 +55,7 @@ static int vout_width, vout_height; static int vout_doffs_old, vout_fb_dirty; static bool vout_can_dupe; static bool duping_enable; +static bool found_bios; static int plugins_opened; static int is_pal_mode; @@ -455,6 +459,7 @@ void retro_set_environment(retro_environment_t cb) { "pcsx_rearmed_neon_enhancement_no_main", "Enhanced resolution speed hack; disabled|enabled" }, #endif { "pcsx_rearmed_duping_enable", "Frame duping; on|off" }, + { "pcsx_rearmed_show_bios_bootlogo", "Show Bios Bootlogo; on|off" }, { "pcsx_rearmed_spu_reverb", "Sound: Reverb; on|off" }, { "pcsx_rearmed_spu_interpolation", "Sound: Interpolation; simple|gaussian|cubic|off" }, { "pcsx_rearmed_pe2_fix", "Parasite Eve 2/Vandal Hearts 1/2 Fix; disabled|enabled" }, @@ -527,13 +532,13 @@ static void update_controller_port_variable(unsigned port) if (controller_port_variable(port, &var)) { if (strcmp(var.value, "standard") == 0) - in_type[0] = PSE_PAD_TYPE_STANDARD; + in_type[port] = PSE_PAD_TYPE_STANDARD; else if (strcmp(var.value, "analog") == 0) - in_type[0] = PSE_PAD_TYPE_ANALOGPAD; + in_type[port] = PSE_PAD_TYPE_ANALOGPAD; else if (strcmp(var.value, "negcon") == 0) - in_type[0] = PSE_PAD_TYPE_NEGCON; + in_type[port] = PSE_PAD_TYPE_NEGCON; else if (strcmp(var.value, "none") == 0) - in_type[0] = PSE_PAD_TYPE_NONE; + in_type[port] = PSE_PAD_TYPE_NONE; // else 'default' case, do nothing } } @@ -1282,7 +1287,9 @@ size_t retro_get_memory_size(unsigned id) void retro_reset(void) { - SysReset(); + //hack to prevent retroarch freezing when reseting in the menu but not while running with the hot key + rebootemu = 1; + //SysReset(); } static const unsigned short retro_psx_map[] = { @@ -1465,6 +1472,20 @@ static void update_variables(bool in_flight) dfinput_activate(); } + else{ + //not yet running + + //bootlogo display hack + if (found_bios) { + var.value = "NULL"; + var.key = "pcsx_rearmed_show_bios_bootlogo"; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value) + { + if (strcmp(var.value, "on") == 0) + rebootemu = 1; + } + } + } } static int min(int a, int b) @@ -1475,6 +1496,11 @@ static int min(int a, int b) void retro_run(void) { int i; + //SysReset must be run while core is running,Not in menu (Locks up Retroarch) + if(rebootemu != 0){ + rebootemu = 0; + SysReset(); + } input_poll_cb(); @@ -1578,7 +1604,8 @@ void retro_init(void) const char *dir; char path[256]; int i, ret; - bool found_bios = false; + + found_bios = false; #ifdef __MACH__ // magic sauce to make the dynarec work on iOS