X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=frontend%2Flibretro.c;h=c07849423b1010d9d747bc5681ecf9a0d4b0f28f;hb=0b52c77bc1caaa56b91222e4836e6c85a5f2b52a;hp=8382b659af0801d4bdda85b073d79e20e4ba8663;hpb=53e4a7e5cb46ad8589825ec95e15b56614cc54d9;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 8382b659..c0784942 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -398,8 +398,11 @@ void pl_timing_prepare(int is_pal) void plat_trigger_vibrate(int pad, int low, int high) { - rumble.set_rumble_state(pad, RETRO_RUMBLE_STRONG, high << 8); - rumble.set_rumble_state(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0); + if(in_enable_vibration) + { + rumble.set_rumble_state(pad, RETRO_RUMBLE_STRONG, high << 8); + rumble.set_rumble_state(pad, RETRO_RUMBLE_WEAK, low ? 0xffff : 0x0); + } } void pl_update_gun(int *xn, int *yn, int *xres, int *yres, int *in) @@ -452,6 +455,7 @@ void retro_set_environment(retro_environment_t cb) { "pcsx_rearmed_pad8type", "Pad 8 Type; default|none|standard|analog|negcon" }, { "pcsx_rearmed_multitap1", "Multitap 1; auto|disabled|enabled" }, { "pcsx_rearmed_multitap2", "Multitap 2; auto|disabled|enabled" }, + { "pcsx_rearmed_vibration", "Enable Vibration; enabled|disabled" }, #ifndef DRC_DISABLE { "pcsx_rearmed_drc", "Dynamic recompiler; enabled|disabled" }, #endif @@ -1308,7 +1312,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[] = { @@ -1359,6 +1365,17 @@ static void update_variables(bool in_flight) update_multitap(); + var.value = NULL; + var.key = "pcsx_rearmed_vibration"; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value) + { + if (strcmp(var.value, "disabled") == 0) + in_enable_vibration = 0; + else if (strcmp(var.value, "enabled") == 0) + in_enable_vibration = 1; + } + #ifdef __ARM_NEON__ var.value = "NULL"; var.key = "pcsx_rearmed_neon_interlace_enable"; @@ -1515,6 +1532,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();